2009-11-10 20 views
7

Ho ID processo in un file "pid" Mi piacerebbe ucciderlo.shell linux: come leggere l'argomento del comando da un file?

Qualcosa di simile:

kill -9 <read pid from file> 

ho provato:

kill -9 `more pid` 

ma non funziona. Ho anche provato xargs ma non riesco a capirlo.

+0

Penso che sia il 'po more' che sta uccidendo b/c' more' potrebbe essere in attesa di input dell'utente. – BCS

+0

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

risposta

12

Permettetemi di riassumere tutte le risposte

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

Does

kill -9 $(cat pid) 

lavoro per voi?

+1

+1. Preferisco il metodo $() sui backtick, dato che puoi annidarli. – paxdiablo

3

la mia preferenza è

kill -9 `cat pid` 

che funziona per qualsiasi comando nelle backticks.

2

kill -9 $(cat pid) o cat pid | xargs kill -9 saranno entrambi lavorare

2

Si dovrebbe essere iniziando gradualmente e poi passare al roba pesante per uccidere il processo, se non vuole giocare bene.

Un segnale SIGKILL (-9) non può essere catturato e ciò significa che tutte le risorse trattenute dal processo non verranno eliminate.

Provare a utilizzare prima un kill SIGTERM (-15) e quindi verificare la presenza del processo facendo un kill -0 $ (cat pid). Se è ancora in giro, allora con tutti i mezzi lo clobber con -9.

SIGTERM può essere catturato da un processo e qualsiasi processo che è stato scritto correttamente dovrebbe avere un gestore di segnale per prendere il SIGTERM e poi ripulire le proprie risorse prima di uscire.

+0

Nota che puoi passare 'kill -s TERM' piuttosto che' kill -15'. – jpaugh

Problemi correlati