Se si ^ Z da un processo, viene "arrestato". Come si ritorna?


83

Ho "interrotto" accidentalmente il mio telnetprocesso. Ora non posso né "tornare indietro" in esso, né posso ucciderlo (non risponderà kill 92929, dove 92929 è il processid.)

Quindi, la mia domanda è, se hai un processo interrotto sulla riga di comando di Linux, come puoi tornare indietro o ucciderlo, senza dover ricorrere a kill -9?

Risposte:


92

Il modo più semplice è correre fgper portarlo in primo piano:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

In alternativa, è possibile eseguire bgper farlo continuare in background:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

Se hai appena colpito Ctrl Z, quindi per riportare indietro il lavoro basta eseguire fgsenza argomenti.


Grazie!! Suppongo che questo sia l'eq di Alt + Tab. Sai cosa è successo non appena l'ho fatto io fg telnet. Diceva Terminated, presumibilmente b / c del mio killcmd precedente .
Bobobobo,

@bobobobo presumibilmente, sì. Comunque, il fgnon ha bisogno di alcun argomento. Se hai appena colpito ^Z, esegui fgnello stesso terminale e riporterà il 1 ° lavoro.
terdon

48

È possibile utilizzare jobsper elencare il processo sospeso. Prendi l'esempio. Inizia con un processo:

$ sleep 3000  

Quindi sospendi il processo:

^Z
[1]+  Stopped                 sleep 3000

Puoi elencare il processo:

$ jobs
[1]+  Stopped                 sleep 3000

e riportalo in primo piano:

$ fg %1
sleep 3000

Il %1corrisponde a quello [1]elencato con il jobscomando.


19

Dovresti essere in grado di riavviare un processo sospeso usando il killcomando per inviare al processo il segnale CONTINUE, dalla riga di comando, quindi:

kill -CONT 92929

1
Ciò farà riprendere l'operazione, ma non verrà portato in primo piano.
Bahamat,

1
@bahamat Sì, è vero. Uno dovrebbe ancora fgall'interno del terminale originale. Mi piacciono i programmi -STOP e -CONT gui per risparmiare risorse, ma sono comunque effettivamente in esecuzione in background.
Accidenti,

In caso sleepaffermativo sarà killil processo che non è quello che vuoi ..;)
Timo
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.