check_procs уже обрабатывает эту ситуацию.
check_procs может определить разницу между сценариями, запускаемыми как аргумент интерпретатора, по сравнению с заданиями, запускаемыми непосредственно интерпретатором hashbang. Хотя оба они выглядят одинаково в выводе 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 - это скрипт на python, который спит 2 минуты. Это chmod + x и строка хеш-бэнга #!
, вызывающая /usr/bin/python.
#!/usr/bin/python
import time
time.sleep(120)