web-dev-qa-db-fra.com

Si vous ^ Z à partir d'un processus, il est "arrêté". Comment retournez-vous?

J'ai accidentellement "arrêté" mon processus telnet. Maintenant, je ne peux ni "revenir en arrière", ni le tuer (il ne répondra pas à kill 92929, où 92929 est l'ID de processus.)

Donc, ma question est, si vous avez un processus arrêté sur la ligne de commande linux, comment y revenir ou le tuer sans avoir à recourir à kill -9?

90
bobobobo

Le moyen le plus simple est d'exécuter fg pour le mettre au premier plan:

$ 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.

Alternativement, vous pouvez exécuter bg pour qu'il continue en arrière-plan:

$ 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.

Si vous venez de frapper CtrlZ, puis pour ramener le travail, exécutez simplement fg sans argument.

103
terdon

Vous pouvez utiliser jobs pour répertorier le processus suspendu. Prenons l'exemple. Commencez par un processus:

$ sleep 3000  

Ensuite, vous suspendez le processus:

^Z
[1]+  Stopped                 sleep 3000

Vous pouvez lister le processus:

$ jobs
[1]+  Stopped                 sleep 3000

et le ramener au premier plan:

$ fg %1
sleep 3000

Le %1 correspond à [1] répertorié avec la commande jobs.

50
Luis

Vous devriez pouvoir redémarrer un processus suspendu en utilisant la commande kill pour envoyer au processus le signal CONTINUE, à partir de la ligne de commande, ainsi:

kill -CONT 92929
20
Geeb