короткий ответ: он просто убил себя!
мой ответ объяснен: , если вы позволите команде начать работу с комом, она будет выполнена в подоболочке. скорее всего, линия вы найдете в пс или Htop будет выглядеть следующим образом:
/bin/sh -c pkill -f script.sh >log 2>&1 ; rm lock >log 2>&1
(. детали могут отличаться, например, вы, возможно, Баш вместо ш)
Дело в том, что целая строка получила один PID (идентификатор процесса) и является одной из команд, которые pgrep/pkill анализирует при использовании параметра «-f». как указан на странице человека:
-f, --full
The pattern is normally only matched against the process name. When -f is set, the full command line is used.
теперь ваш pkill ищет любую командную строку в списке запущенных процессов, которые так или иначе содержит выражение «script.sh» и в конце концов обнаружат, что линия в каком-то момент. в результате его обнаружения он получит этот ПИД и прекратит его. к сожалению, тот же самый PID удерживает остальную часть вас в цепочке команд, которую просто убил сам.
так что вы в основном писали «строку самоубийств команд»;) Кстати: я просто сделал то же самое сегодня, и вот как я нашел ваш вопрос.
надеюсь, что это ответ помогает, даже если речь идет о немного поздно
вид касается
Эта работа вокруг не нужна на моем macOS. Вероятно, 'pkill' на mac убивает процессы, кроме самого себя. – mercy387