我需要一个 linux / unix 命令来执行另一个命令并将其执行的命令的 PID 写入文件...有这样的命令吗?
我并不是在寻找任何将进程置于后台并利用 shell var 的方案$!
例子:
假设我要查找的命令是execwritepid
。我需要能够调用:
execwritepid -e "/usr/bin/script -f sometext.log" -f /var/log/script.pid
这样 PIDscript -f sometext.log
就被写入/var/log/script.pid
script
是我正在执行的命令。
根据 Daniel Pittman 的回答,明确的建议是:
bash -c 'echo $$ > /var/log/script.pid && exec /usr/bin/script -f sometext.log'
答案1
你可以用这段代码做你想做的事:
echo $$ > /var/log/script.pid && exec /usr/bin/script
exec
用另一个进程替换当前进程 - 这意味着它保留当前的 pid。
如果您希望父脚本继续运行,可以将其包装起来:
bash -c 'echo $$ && exec /usr/bin/script'
这将在新的 shell 中运行子命令,记录 PID,然后用其他进程替换自身。