Come ripristinare la funzionalità del terminale dopo aver emesso il comando "suspend"?


8

Ho digitato il suspendmio terminale e questo ha sospeso l'esecuzione.

Come posso tornare al normale funzionamento del terminale? Ho provato Ctrl+ C, Ctrl+ D, Ctrl+ Q( come suggerito qui ) e Ctrl+ Z, ma nessuno di questi funziona. Ovviamente posso chiudere il terminale e aprirne uno nuovo, ma non c'è modo di "riprendere" la funzionalità del terminale?

Sto eseguendo Ubuntu GNOME 16.04, con shell predefinita (bash).


Mi dispiace per quello che sto chiedendo qui, ma qual è lo scopo di questo comando?
pa4080,

1
Per interrompere l'esecuzione di uno script e farlo continuare più tardi;)
Rinzwind,

Risposte:


10

Dal tuo link:

fino a quando non riceve un segnale SIGCONT.

Così sarebbe kill -SIGCONT {pid}

  • killall -CONT bash riprenderebbe tutto.
  • kill -18 {pid} sarebbe lo stesso.
  • e così è kill -s CONT {pid}

Secondo questo elenco dovrebbe essere control-z ma è necessario utilizzare control-z per interrompere il processo:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

È necessario il {pid} della sessione della shell in esecuzione nel terminale


E ci sono anche comandi di controllo dei lavori :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

Dovrebbe anche essere Ctrl + Q, ma non funziona per qualche motivo. Presumo perché poiché la shell è sospesa, non può ricevere Ctrl + Q (SIGCONT) dalla sessione sospesa. Funziona se, come dici, usi kill -SIGCONT PIDma non riesco a trovare un modo semplice per ottenere il PID della sessione sospesa quando ho molti terminali aperti.
terdon,

Questo non funziona. Ho usato ps aux | termine grep per ottenere il pid del terminale, ho provato tutte e 3 le varianti di SIGCONT ma nessuna ha funzionato. Quando ho appena ucciso Pid il terminale si è chiuso, quindi ho avuto il PID corretto.
Cerbero

@Cerberus vuoi che il PID della sessione di shell sia in esecuzione nel terminale, non del terminale stesso. Se hai solo un terminale aperto, dovrebbe essere facile da trovare pgrep bash. Altrimenti, usa pstree -p, trova lì il PID del terminale e guarda i PID dei suoi figli, uno dei quali dovrebbe essere la tua sessione bash.
terdon,

Avrò bisogno di avere due sessioni terminali almeno nello scenario, una che è sospesa e l'altra da cui inviare SIGCONT.
Cerbero

1
SIGCONT viene normalmente ignorato, quindi perché non semplicemente sparare killall -CONT bash? :-)
Jonas Schäfer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.