Как я могу начать процесс с другим именем?


12

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

Один из способов, который я мог придумать, - запускать процессы с именем (чтобы отличить их как группу), а затем использовать pkillдля уничтожения их по имени.

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


Вы спрашиваете, как запустить процесс с именем, отличным от того, которое он обычно использует ? Или вы просто спрашиваете, как запустить процесс из командной строки?
Элия ​​Каган

Имя процесса отображается так же, как имя его файла по умолчанию в Linux. Я не хочу использовать имя файла по умолчанию в качестве имени процесса или изменять имя файла при каждом запуске. Поэтому я хочу запустить процессы с определенным именем, которое я хочу, чтобы я мог использовать 'pkill -f MyOwnName', чтобы убить сразу все процессы, которые я только что начал, с именем MyOwnName.
кеш

Ответы:


12

Вы можете использовать execвстроенную оболочку:

bash -c "exec -a MyUniqueProcessName <command> &"

<command>заменяет текущую оболочку, новый процесс не создается, поэтому я запускаю новую оболочку для вызова exec.

Затем вы можете убить процесс с помощью:

pkill -f MyUniqueProcessName

Вы можете запустить более одного процесса под тем же именем, а затем pkill -f <name>убить их всех.


Как вы отменяете bash -c "exec -a MyUniqueProcessName <command> &"?
ВНВН

1
@VNVN ты не можешь. Если команда была выполнена, она запустилась. Чтобы «отменить» это, вам нужно точно знать, что он сделал, и отменить это вручную, если это возможно. Там нет Ctrl + Z при запуске команд.
Тердон

+1. Мое наблюдение: имя, используемое для, exec -a name sleep 100появляется, когда я делаю, ps -efно не когда я делаю pstree -p.
Тревор Бойд Смит

Это не работает для слияния. ->bash -c "exec -a mymeld123 meld &"
Эдуардо Лусио

0

AMItac / Агентство Солярис

У меня есть этот случай с инструментом транскодирования аудио. (работает 3 раза), но имеет только одно имя.

Я сделал следующее. Не в папку bin из инструмента Shell и скопировал его 3 раза, а затем дал ему новое имя. tc-1, tc-2, tc-3 (это небольшой инструмент, поэтому он не потребляет много места на жестком диске (с толстыми двоичными файлами вы не должны использовать другие упомянутые способы)

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

еще один трюк МОЖЕТ работать ....

добавьте скрипт #bash Name.sh, сделайте его исполняемым. Введите там свои команды и запустите скрипт bash. В Centos он использует имя Bashscript, которое вы указали, а не само имя бина.

Надеюсь, что-то там кому-то поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.