我想从bash脚本启动后台Python作业,然后使用SIGINT优雅地终止它.这可以从shell工作得很好,但我似乎无法让它在脚本中工作.
loop.py:
#! /usr/bin/env python
if __name__ == "__main__":
try:
print 'starting loop'
while True:
pass
except KeyboardInterrupt:
print 'quitting loop'
Run Code Online (Sandbox Code Playgroud)
从shell我可以打断它:
$ python loop.py &
[1] 15420
starting loop
$ kill -SIGINT 15420
quitting loop
[1]+ Done python loop.py
Run Code Online (Sandbox Code Playgroud)
kill.sh:
#! /bin/bash
python loop.py &
PID=$!
echo "sending SIGINT to process $PID"
kill -SIGINT $PID
Run Code Online (Sandbox Code Playgroud)
但是从脚本我不能:
$ ./kill.sh
starting loop
sending SIGINT to process 15452
$ ps ax | grep loop.py | grep -v grep
15452 pts/3 R 0:08 …Run Code Online (Sandbox Code Playgroud)