По сути, я хочу динамически запускать некоторые процессы, которые могут создавать свои собственные дочерние процессы, а также я хочу убить определенную группу процессов, которые я только что создал, когда захочу.
Один из способов, который я мог придумать, - это запустить процессы с именем (чтобы отличить их как группу), а затем использовать pkill
, чтобы убить их по имени.
Вопрос в том, как запустить процесс с именем, чтобы я мог использовать pkill
, чтобы убить их по имени? Я открыт и для других решений.
Вы можете использовать встроенную оболочку exec
:
bash -c "exec -a MyUniqueProcessName <command> &"
<command>
заменяет текущую оболочку, новый процесс не создается, поэтому я запускаю новую оболочку для вызова exec
.
Затем вы можете убить процесс с помощью:
pkill -f MyUniqueProcessName
Вы можете запустить более одного процесса с одним и тем же именем, тогда pkill -f <name>
убьет их всех.
AMItac / Агентство Solaris
У меня есть этот случай с инструментом транскодирования аудио. (работает 3 раза), но имеет только одно имя.
Я сделал следующее. Не в папку bin из инструмента Shell и скопировал его 3 раза, а затем дал ему новое имя. tc-1, tc-2, tc-3 (это небольшой инструмент, поэтому он не ест много места на жестком диске (с толстыми двоичными файлами вы не должны использовать другие упомянутые способы)
, поэтому процесс начался с уникальным Именем и может быть убит этим уникальным Именем без опасности убить другие процессы транскодирования, которые я хочу продолжить.
МОЖЕТ работать еще один трюк ...
добавить скрипт #bash Name.sh, сделайте его исполняемым. Введите там свои команды и запустите сам скрипт bash. В Centos он затем использует имя Bashscript, которое вы указали, а не само имя бина.
Надеюсь, что-то кому-то там поможет.