2009-11-10 4 views
7

J'ai un identifiant de processus dans un fichier "pid" Je voudrais le tuer.shell Linux: Comment lire l'argument de la commande d'un fichier?

Quelque chose comme:

kill -9 <read pid from file> 

J'ai essayé:

kill -9 `more pid` 

mais il ne fonctionne pas. J'ai aussi essayé xargs mais je n'arrive pas à comprendre.

+0

Je pense qu'il est le bit 'more' qui est tuer b/c' more' peut être attendre l'entrée utilisateur. – BCS

+0

http://www.speculation.org/garrick/kill-9.html –

Répondre

12

Résumons toutes les réponses

kill -9 $(cat pid) 
kill -9 `cat pid` 
cat pid | xargs kill -9 
13

Est-ce que

kill -9 $(cat pid) 

travail pour vous?

+1

+1. Je préfère la méthode $() sur les guillemets, puisque vous pouvez les imbriquer. – paxdiablo

3

ma préférence est

kill -9 `cat pid` 

qui fonctionnera pour toute commande dans les accents graves.

2

kill -9 $(cat pid) ou cat pid | xargs kill -9 seront tous deux travailler

2

Vous devriez commencer graduellement, puis passer à la substance lourde pour tuer le processus si elle ne veut pas jouer bien.

Un signal SIGKILL (-9) ne peut pas être intercepté et cela signifie que toutes les ressources détenues par le processus ne seront pas nettoyées. Essayez d'abord d'utiliser un kill SIGTERM (-15), puis vérifiez la présence du processus en exécutant un kill -0 $ (cat pid). Si elle traîne encore, alors, par tous les moyens, l'écraser avec -9. SIGTERM peut être détecté par un processus et tout processus qui a été correctement écrit doit avoir un gestionnaire de signal pour intercepter le SIGTERM et nettoyer ses ressources avant de quitter.

+0

Notez que vous pouvez passer 'kill -s TERM' plutôt que' kill -15'. – jpaugh

Questions connexes