check_procsはすでにこの状況を処理しています。
check_procsは、インタープリターへの引数として起動されたスクリプトと、ハッシュバンインタープリターを直接実行するジョブの違いを識別できます。これらは両方ともps出力で同じように見えますが!! check_procs -C python
後者の場合は! にリストされません。
python:を介してスクリプトを明示的に実行する場合は、。を使用してスクリプトpython <filename.py>
を監視できますcheck_procs -C python -a filename.py
。
#!/usr/bin/python
スクリプトを挿入してとして実行すると、./filename.py
で監視できますcheck_procs -C filename.py
。
この動作を示すコマンドラインセッションの例:
#make test.py directly executable. See code below
$ chmod a+x test.py
#launch via python explicitly:
$ /usr/bin/python ./test.py &
[1] 27094
$ check_procs -C python && check_procs -C test.py && check_procs -a test.py
PROCS OK: 1 process with command name 'python'
PROCS OK: 0 processes with command name 'test.py'
PROCS OK: 1 process with args 'test.py'
#launch via python implicitly
$ ./test.py &
[2] 27134
$ check_procs -C python && check_procs -C test.py && check_procs -a test.py
PROCS OK: 1 process with command name 'python'
PROCS OK: 1 process with command name 'test.py'
PROCS OK: 2 processes with args 'test.py'
#PS 'COMMAND' output looks the same
$ ps 27094 27134
PID TTY STAT TIME COMMAND
27094 pts/6 S 0:00 /usr/bin/python ./test.py
27134 pts/6 S 0:00 /usr/bin/python ./test.py
#kill the explicit test
$ kill 27094
[1] - terminated /usr/bin/python ./test.py
$ check_procs -C python && check_procs -C test.py && check_procs -a test.py
PROCS OK: 0 processes with command name 'python'
PROCS OK: 1 process with command name 'test.py'
PROCS OK: 1 process with args 'test.py'
#kill the implicit test
$ kill 27134
[2] + terminated ./test.py
$ check_procs -C python && check_procs -C test.py && check_procs -a test.py
PROCS OK: 0 processes with command name 'python'
PROCS OK: 0 processes with command name 'test.py'
PROCS OK: 0 processes with args 'test.py'
test.pyは、2分間スリープするPythonスクリプトです。これはchmod+xであり、#!
/ usr / bin/pythonを呼び出すハッシュバン行があります。
#!/usr/bin/python
import time
time.sleep(120)