Comment puis-je supprimer un travail qui a été initié dans un autre shell (window du terminal ou onglet)?

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 .