Linux
在 bash 中執行的命令的 PID
我需要一個 linux / unix 命令,它將執行另一個命令並將它執行的命令的 PID 寫入文件……有這樣的命令嗎?
我不是在尋找任何將程序置於後台並利用 shell 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
是我正在執行的命令。根據 Daniel Pittman 的回答,明確的建議是:
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'
這將在一個新的 shell 中執行子命令,記錄 PID,然後用另一個程序替換它自己。