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