私は8時間ごとにシェルスクリプトを起動し、一連のプログラムを呼び出します。時々、これらのプログラムは正常に終了せず、彼らは忘れ去られた状態で立ち往生します。シェルスクリプト内で起動された各プロセスの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プログラムにはコンソールに出力される一連のデバッグ文があり、シェルスクリプト自体がログファイルにパイプされます。私は、それがその起動時間と一緒に呼び出されます一度、各プロセスの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
現在、 'python foo.py'は' foo.py'が終了するまで実行されます。この時点で取得するPIDはありません。あなたは明確にしていただけますか? 'foo.py'は背景や何かに動いていますか?プロセスが「リムボーに陥った」時をいつどのように知っていますか? – cxw