Comment fonctionne le Ctrl + Z par ligne de commande et non par touche du clavier? [fermé]
On février 10, 2021 by adminCommentaires
- Vous avez déjà posé cette question à unix.stackexchange.com/questions/386200 , et avec ce doublon, vous n’avez pas vraiment clarifié les choses que les gens ont demandé de clarifier.
- Ce n’est pas un vrai doublon. Cette question concerne Ctrl-Z, lautre concerne Ctrl-S, mais la réponse est en fait la même.
- Non, lautre concerne pas Ctrl + S. Au moins cela est indiqué dans la question.
Réponse
Contrôle + Z écrit le caractère de contrôle susp
, qui envoie le signal SIGTSTP
(numéro 20 sous Linux amd64, 24 sur Solaris amd64, 18 sur FreeBSD amd64 … il vaut mieux éviter de faire référence aux signaux par numéro car ce nest pas portable) à tous les processus du groupe de processus de premier plan du terminal.
Vous pouvez envoyer un signal pour arrêter un processus à partir de la ligne de commande en utilisant la commande kill
.
kill -s STOP <pid>
(où <pid>
est lid du processus que vous souhaitez suspendre) ou, si vous souhaitez adresser tous les processus dun programme avec un certain nom (techniquement, tous les processus dont le nom correspond à un expression régulière):
pkill -STOP xterm
(où xterm
est un exemple de nom).
Lorsque vous devez reprendre les processus, envoyez un signe al SIGCONT
de la même manière.
Commentaires
- Il envoie le SIGTSTP (20 sous Linux sur amd64 au moins), pas SIGSTOP, et au processus de premier plan groupe du terminal. SIGTSTP peut être géré, pas SIGSTOP.
- mais comment connaître le nombre de sessions que le terminal exécute
- Quelle est la signification de
pid
? - @abuali " PID " est labréviation de " ID de processus ". Voir en.wikipedia.org/wiki/Process_identifier
- @ St é phane Chazelas comment konw
process ID
spécial dans le terminal ouvert
Réponse
Si vous vouliez arrêter tous les processus qui ont /dev/pts/12
comme terminal de contrôle (y compris tous les travaux de premier plan et darrière-plan exécutés dans ce terminal et le shell), vous pouvez faire:
pkill -STOP -t pts/12
Cela suspendrait également le chef de session. Dans certains cas, celui-ci peut être repris automatiquement. Par exemple, GNU screen
reprend le responsable de session dès quil détecte quil a été suspendu.
Si vous vouliez envoyer le signal SIGTSTP au processus de premier plan groupe de ce terminal comme ^Z
voulez-vous « d faire:
kill -s TSTP -- "-$pgid"
Où $pgid
est lID de groupe de processus de ce groupe de processus de premier plan. Sous Linux et les BSD de list, vous pouvez le découvrir en exécutant ps -o tpgid= -p "$pid"
where $pid
est lidentifiant de tout processus qui a ce terminal comme terminal de contrôle. Sur la plupart des systèmes, nimporte lequel de ces processus peut également le trouver en utilisant tcgetpgrp()
.
Dans les deux cas, vous reprenez ces processus en envoyant le signal SIGCONT à la place de SIGSTOP / SIGTSTP.
Réponse
Envoyez le signal STOP
au (x) processus que vous souhaitez suspendre.
Vous pourrez ensuite envoyer le signal pour relancer un processus suspendu.
Par exemple:
pkill -STOP terminal
Cela suspendrait tout terminal
processus.
pkill -CONT terminal
Cela annulerait la suspension de tous les processus nommés terminal
.
Commentaires
- mais comment connaître le nombre de sessions que le terminal exécute
- @abuali I ' Je ne suis pas sûr de ce que vous voulez dire.
pkill
recherchera tous les processus correspondant au nom que vous fournissez et enverra le signal à tous. Si vous souhaitez limiter à un utilisateur particulier, ajoutez-u username
.
Laisser un commentaire