2011-04-08 09:38:29 +0000 2011-04-08 09:38:29 +0000
353
353

Come posso riprendere un lavoro fermo in Linux?

Come posso riprendere un lavoro fermo in Linux? Stavo usando emacs e ho accidentalmente premuto ctrl-z che mi ha riportato alla console. Lo vedo quando digito ‘lavori’

[*****]$ jobs
[1]+ Stopped emacs test_queue.cpp

Risposte (5)

404
404
404
2011-04-08 09:39:38 +0000

Il comando fg è quello che si vuole usare. Potete anche dargli un numero di lavoro se ci sono più di un lavoro interrotto.

268
268
268
2011-04-08 11:55:01 +0000

I comandi generali di controllo del lavoro in Linux sono:

  • jobs - elenca i lavori correnti
  • fg - riprendi il lavoro successivo nella coda
  • fg %[numero] - riprendi il lavoro [numero]
  • bg - spingi il lavoro successivo nella coda in background
  • bg %[numero] - Spingere il lavoro [numero] in background
  • uccisione %[numero] - Uccidere il lavoro numerato [numero]
  • uccisione -[segnale] %[numero] - Inviare il segnale [segnale] al lavoro numero [numero]
  • disown %[numero] - disconoscere il processo (nessun altro terminale sarà proprietario), quindi il comando sarà vivo anche dopo la chiusura del terminale.

Sono più o meno tutti. Notate la % di fronte al numero di lavoro nei comandi - questo è ciò che dice uccidere si parla di lavori e non di processi.

48
48
48
2013-08-26 21:04:40 +0000

Si può anche digitare %<process_name>; cioè, si preme Ctrl-Z in emacs, poi si può digitare %emacs nella console e riportarlo in primo piano.

34
34
34
2011-04-08 14:03:36 +0000

Giusto per aggiungere alle altre risposte, bash consente di saltare il fg se si specifica un numero di lavoro.

Ad esempio, questi sono equivalenti e riprendono l'ultimo lavoro:

%
%%
fg
fg %
``` ```
%4
fg 4

Questi riprendono il lavoro #4:

&001

23
23
23
2016-02-04 19:49:59 +0000

Se non l'avete lanciato dal terminale corrente, usate ps aux | grep <process name> per trovare il numero del processo (pid), poi riprendetelo con:

kill -SIGCONT <pid>

(Nonostante il nome, kill è semplicemente uno strumento per inviare un segnale al processo, permettendo ai processi di comunicare tra loro. Un “kill signal” è solo uno dei tanti segnali standard)

Suggerimento bonus: avvolgere il primo carattere del nome del processo con [] per evitare che il comando grep stesso appaia nei risultati. ad esempio, per trovare il processo emacs, usare ps aux | grep [e]macs