Comment suspendre et reprendre les processus

143

Dans le terminal bash, je peux appuyer sur Control+ Zpour suspendre n'importe quel processus en cours ... alors je peux taper fgpour reprendre le processus.

Est-il possible de suspendre un processus si je ne possède que son PID? Et si oui, quelle commande devrais-je utiliser?

Je cherche quelque chose comme:

suspend-process $PID_OF_PROCESS

et ensuite le reprendre avec

resume-process $PID_OF_PROCESS
Stefan
la source

Réponses:

172

Vous pouvez utiliser killpour arrêter le processus.

Pour un arrêt "poli" du processus (préférez ceci pour une utilisation normale), envoyez SIGTSTP:

kill -TSTP [pid]

Pour un arrêt difficile, envoyez à SIGSTOP:

kill -STOP [pid]

Notez que si le processus que vous essayez d'arrêter avec PID se trouve dans la table des tâches de votre shell, il peut rester visible là-bas, mais y être terminé, jusqu'à ce que le processus fgreprenne.

Pour reprendre l'exécution du processus, envoyez à SIGCONT:

kill -CONT [pid]
Steve Burdine
la source
25
À moins d’autres raisons, je préférerais SIGTSTP à SIGSTOP, car certaines applications traitent spécialement SIGTSTP. Par exemple, si scp affiche une barre de progression, SIGTSTP le fera nettoyer le mode terminal avant la suspension, mais si vous envoyez SIGSTOP, il n’aura aucune chance de le faire.
éphémence
3
@ ephemient j'ai essayé SIGTSTP, j'ai vu ce que vous disiez à propos du nettoyage du terminal. Merci pour l'explication de SIGTSTP, bon toujours d'apprendre de nouvelles choses :)
Steve Burdine
2
Il est également utile de noter que vous pouvez référencer la valeur [pid] en utilisant le symbole%, puis le numéro du travail (celui que vous pouvez trouver en cours d'exécution jobs). Alors vous kill -TSTP %1
iriez
Voir aussi: [ stackoverflow.com/questions/11886812/…
AAAfarmclub
43

Vous devriez utiliser la killcommande pour cela.

Pour être plus bavard - vous devez spécifier le bon signal , c'est-à-dire

$ kill -TSTP $PID_OF_PROCESS

pour suspendre le processus et

$ kill -CONT $PID_OF_PROCESS

pour le reprendre. Documenté ici .

maxschlepzig
la source
Je me demande quel accident de l'histoire a conduit à cette réponse obtenant moins de voix? Les réponses sont presque les mêmes et celle-ci est arrivée en premier ....
Wildcard
7
@Wildcard, lorsque j'ai créé la réponse, j'étais un peu pressé; elle contenait donc en gros la première partie kill -TSTP(comment suspendre). Un an et demi plus tard, c'est-à-dire 2011, j'ai revisité ma réponse et remarqué son caractère incomplet. Ainsi, je l'ai édité et ajouté également la kill -CONTpartie. Cela devrait expliquer la différence de vote par rapport à la réponse de Steve.
maxschlepzig