Назад | Перейти на главную страницу

PID команды, выполняемой в bash

Мне нужна команда linux / unix, которая выполнит другую команду и запишет PID выполняемой команды в файл ... есть ли такая команда?

Я не ищу схему, которая помещает процессы в фоновый режим и использует оболочку var $!

Пример:

Предположим, что я ищу команду execwritepid. Мне нужно иметь возможность звонить:

execwritepid -e "/usr/bin/script -f sometext.log" -f /var/log/script.pid

Такой, что PID script -f sometext.log написано /var/log/script.pid

script это команда, которую я выполняю.

Явное предложение, основанное на ответе Дэниела Питтмана:

bash -c 'echo $$ > /var/log/script.pid && exec /usr/bin/script -f sometext.log'

Вы можете делать все, что хотите, с помощью этого кода:

echo $$ > /var/log/script.pid && exec /usr/bin/script

exec заменяет текущий процесс другим - это означает, что он сохраняет текущий pid.

Если вы хотите, чтобы ваш родительский скрипт продолжал работать, вы можете обернуть это:

bash -c 'echo $$ && exec /usr/bin/script'

Это запустит подкоманду в новой оболочке, запишет PID, а затем заменит себя другим процессом.