оболочка linux: как прочитать аргумент команды из файла? - PullRequest
7 голосов
/ 11 ноября 2009

У меня есть идентификатор процесса в файле "pid" Я бы хотел убить его.

Что-то вроде:

kill -9 <read pid from file>

Я пытался:

kill -9 `more pid` 

но это не работает. Я также попробовал xargs, но не могу обойти это.

Ответы [ 5 ]

13 голосов
/ 11 ноября 2009

делает

kill -9 $(cat pid)

работаешь на тебя?

12 голосов
/ 11 ноября 2009

Позвольте мне обобщить все ответы

kill -9 $(cat pid)
kill -9 `cat pid`
cat pid | xargs kill -9
3 голосов
/ 11 ноября 2009

мои предпочтения

kill -9 `cat pid`

, которая будет работать для любой команды в обратных галочках.

2 голосов
/ 11 ноября 2009

Вы должны начинать постепенно, а затем переходить к тяжелым вещам, чтобы убить процесс, если он не хочет играть хорошо.

Сигнал SIGKILL (-9) не может быть перехвачен, и это будет означать, что любые ресурсы, удерживаемые процессом, не будут очищены.

Попробуйте сначала использовать kill SIGTERM (-15), а затем проверьте наличие процесса, выполнив kill -0 $ (cat pid). Если он все еще болтается, то непременно забейте его с -9.

SIGTERM может быть перехвачен процессом, и любой процесс, который был правильно написан, должен иметь обработчик сигнала, чтобы перехватить SIGTERM и затем очистить его ресурсы перед выходом.

2 голосов
/ 11 ноября 2009

kill -9 $(cat pid) или cat pid | xargs kill -9 оба будут работать

...