Si je commence un process et que je l'utilise dans une window de terminal (disons ping google.com &
), je peux le tuer à l'aide de kill %1
(en supposant qu'il s'agit du job 1).
Cependant, si j'ouvre une autre window de terminal (ou onglet), le process en arrière-plan n'est pas répertorié sous les jobs
et ne peut pas être tué directement en utilisant kill
.
Est-il possible de tuer ce process à partir d'une autre window ou d'un autre terminal?
Note: J'utilise l'émulateur de terminal Xfce 0.4.3 et bash (bien que si une solution existe dans un autre shell commun mais pas bash je suis ouvert à cela aussi)
Oui, tout ce que vous devez savoir est l'identifiant du process (PID) du process. Vous pouvez find ceci avec la command ps
, ou la command pidof
.
kill $(pidof ping)
Devrait fonctionner à partir de n'importe quel autre shell. Si ce n'est pas le cas, vous pouvez utiliser ps et grep pour le ping.
Si vous tapez top
dans la window d'un autre terminal, il affichera tous les process en cours d'exécution. Notez l'identifiant de process de votre job
, puis appuyez sur q
pour quitter cet écran. Puis kill
le process comme d'habitude.
Je fais habituellement quelque chose comme ça:
ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'
Par exemple, si $ PROCESS = "bash", il s'agit de la sortie de ma session en cours:
2683 bash 4481 bash 5695 bash
Ensuite, je voudrais kill $PID
pour n'importe quel /bin/bash
je ne veux plus être en cours d'exécution.
ps
, grep
et (facultativement) awk
sont utiles pour traquer les PID à kill
.