我需要一个linux / unix命令来执行另一个命令,并将它执行的命令的PID写入一个文件中…是否有这样一个命令?
我不寻找任何scheme,把进程放在后台,并利用壳var $!
例:
假设我正在查找的命令是execwritepid 。 我需要能够打电话给:
execwritepid -e "/usr/bin/script -f sometext.log" -f /var/log/script.pid
这样script -f sometext.log的PID script -f sometext.log被写入/var/log/script.pid
script是我正在执行的命令。
根据Daniel Pittman的回答,明确的build议是:
bash -c 'echo $$ > /var/log/script.pid && exec /usr/bin/script -f sometext.log'
你可以用这个代码做你想做的事情:
echo $$ > /var/log/script.pid && exec /usr/bin/script
exec将当前进程replace为另一个 – 这意味着它保留当前的PID。
如果你想让你的父母脚本继续下去,你可以包装:
bash -c 'echo $$ && exec /usr/bin/script'
这将在新的shell中运行子命令,loggingPID,然后用其他进程replace自己。