Linux

在 bash 中執行的命令的 PID

  • March 15, 2012

我需要一個 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'

你可以用這段程式碼做你想做的事:

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

exec用另一個替換目前程序 - 這意味著它保留目前 pid。

如果您希望您的父腳本繼續執行,您可以將其包裝起來:

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

這將在一個新的 shell 中執行子命令,記錄 PID,然後用另一個程序替換它自己。

引用自:https://serverfault.com/questions/362424