Мне нужна команда 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, а затем заменит себя другим процессом.