Pausa di un programma di lunga durata nel terminale?


17

Esiste una combinazione di tasti della tastiera che posso usare per mettere in pausa un programma in esecuzione nel terminale? Nel caso in cui sia importante, non intendo eseguire nient'altro all'interno di quel terminale mentre il programma è in pausa. Voglio solo mettere in pausa l'esecuzione del programma e riprenderlo più tardi. Come posso fare questo?


Quale programma esattamente?
Jobin

@Jobin Un programma che ho scritto in C ++. Ma non voglio cambiare il codice sorgente.
becko

Vuoi riprendere il processo dopo un riavvio o qualcosa del genere?
Jobin

@Jobin No, non voglio riavviare. Voglio riprendere più tardi, ma non riavvio il sistema nel mezzo.
becko

Risposte:


17

Premi Control+ Z.

Questo sospenderà il processo e ti farà tornare in una shell. È possibile fare altre cose ora, se si vuole o si può tornare al processo in background inserendo %seguito da Return.

Nota che se stai facendo questo a qualcosa che deve essere reattivo, riempirai il sistema, ma se è solo qualcosa come nanoun'istanza, tutto dovrebbe andare bene.


È sicuro mettere in pausa il processo terminale?
Pandya,

@Pandya: Perché no?
Jobin

@Pandya Sono sicuro che dipende dal processo ... Se qualcosa è molto sensibile al tempo, potrebbe non aspettarsi di essere sospeso, ma la maggior parte delle cose dovrebbe andare bene.
Oli

15

Questo è controllo del lavoro bash

Utilizzare CTL-Z per interrompere il lavoro.

Quindi puoi digitare bg per eseguirlo in background, se c'è solo un lavoro lo fa esattamente.

Se ne hai più di uno, puoi utilizzare i lavori per elencarli, quindi utilizzare fg% N e bg% N per l'effetto desiderato.

Esempio:

ubuntu @ ip-10-170-59-120: ~ $ find / usr -name "* .so"
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] + Ho trovato find / usr -name 

ubuntu @ ip-10-170-59-120: ~ $ posti di lavoro
[1] + Ho trovato find / usr -name "* .so"

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
find / usr -name "* .so"
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

Per qualsiasi altra cosa non collegata al TTY è possibile utilizzare SIGSTOP e SIGCONT . Quindi, ad esempio, se pensi che un demone stia causando problemi ma non sai quale sia, puoi inviare il pid SIGSTOP, è come fare una pausa, quindi controllare le modifiche, OK non è così, risciacquare e ripetere fino a quando trova il problema.

Spero che sia di aiuto.


1
Buona risposta! Posso solo aggiungere che non è solo una cosa bash? La shell Korn funziona allo stesso modo.
Sergiy Kolodyazhnyy,

4

So che questa risposta è un po 'in ritardo, ma è possibile utilizzare il collegamento Ctrl+sper interrompere il programma (se si desidera leggere l'output o qualcosa del genere), è possibile continuare a utilizzare il collegamento Ctrl+q.

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.