Подтвердить что ты не робот

Убить процесс с помощью pid файла

Я пытаюсь убить процесс с помощью файла pid:

kill -9 $(cat /var/run/myProcess.pid)

Файл pid содержит номер процесса. Однако выполнение убийства не дает мне никаких выходов, и процессы все еще живы. Но это работает:

kill -9 PID

Что случилось с первой командой kill? Не удается ли извлечь PID из файла?

Пример содержимого файла pid:

5424

и

kill -9 5424

работы.

4b9b3361

Ответ 1

Я считаю, что вы испытываете это, потому что ваша оболочка по умолчанию dash (оболочка debian almquist), но вы используете bash синтаксис. Вы можете указать bash в строке shebang с чем-то вроде

#!/usr/bin/env bash

Или вы можете использовать тире и bash совместимое выражение обратной метки, предложенное admdrew в комментариях

kill -9 `cat /var/run/myProcess.pid`

Несмотря на это, вы не можете полагаться на /bin/sh на bash.

Ответ 2

В некоторых ситуациях более компактный:

pkill -F /var/run/myProcess.pid

- это путь. У меня были проблемы с разновидностями:

kill $(cat /var/run/myProcess.pid)
# Or
kill `cat /var/run/myProcess.pid`

когда мне пришлось поместить команду во что-то другое, которое могло бы анализировать ее с использованием разных правил, например Monit для своих команд запуска/остановки.