我有一個cron作業,每8小時啓動一次shell腳本,然後調用一堆程序。有時候這些程序不會優雅地終止,它們會陷入僵局。查找shell腳本中調用的每個進程的pid
所以,如果我的cron'd腳本(run_foo_bar.sh
)看起來是這樣的:
python foo.py
python bar.py
...我可以有多個Foo的和酒吧的同時運行。現在我通過執行ps -ax |grep foo
來獲取PID,然後使用ps -p $PID -o etime=
找到運行時,但這會變得很麻煩。
python程序有一堆打印到控制檯的調試語句,並且shell腳本本身被傳送到日誌文件。我想找到一種方法,一旦它與它的調用時間一起調用會一唱一和進程的PID,所以我run_foo_bar.sh應該是這樣的:
date
python foo.py
<some magic to find PID>
echo foo.py is running as PID $PID
date
python bar.py
<some magic to find PID>
echo bar.py is running as PID $PID
你不能添加一些東西到python代碼,所以它可以自我報告它的PID並把它放在標準輸出?祝你好運。 – shellter
也許[this](https://stackoverflow.com/a/13202292/2877364)? – cxw
目前,'pyoo foo.py'會一直運行,直到'foo.py'退出,此時沒有PID。你能澄清一下嗎? 'foo.py'是否會自動移動到背景或其他東西?您如何知道流程何時「陷入僵局」? – cxw