退出Python进程而不是终止它(通过ssh)
我通过以下方式在本地启动脚本:退出Python进程而不是终止它(通过ssh),python,Python,我通过以下方式在本地启动脚本: sudo python run.py remote 如果有必要,这个脚本也会打开一个子流程 webcam = subprocess.Popen('avconv -f video4linux2 -s 320x240 -r 20 -i /dev/video0 -an -metadata title="OfficeBot" -f flv rtmp://6f7528a4.fme.bambuser.com/b-fme/xxx', shell = True) 我想知道如何
sudo python run.py remote
如果有必要,这个脚本也会打开一个子流程
webcam = subprocess.Popen('avconv -f video4linux2 -s 320x240 -r 20 -i /dev/video0 -an -metadata title="OfficeBot" -f flv rtmp://6f7528a4.fme.bambuser.com/b-fme/xxx', shell = True)
我想知道如何在SSH中终止此脚本
我明白我能做到:
sudo pkill -f "python run.py remote"
或使用:
ps -f -C python
找到进程ID并以这种方式终止它
然而,这些都不能很好地终止进程,我希望能够触发CTRL/CMD C的相等值来注册一个退出命令。我在关机时做了很多事情,但在进程被终止时不会触发这些事情
谢谢大家! 您应该使用信号: 例如:
import signal, os
def handler(signum, frame):
print 'Signal handler called with signal', signum
signal.signal(signal.SIGINT, handler)
#do your stuff
然后在终端:
kill -INT $PID
如果脚本在当前shell中处于活动状态,则按ctrl+c组合键
这也可能有用:
您应该使用以下信号: 例如:
import signal, os
def handler(signum, frame):
print 'Signal handler called with signal', signum
signal.signal(signal.SIGINT, handler)
#do your stuff
然后在终端:
kill -INT $PID
如果脚本在当前shell中处于活动状态,则按ctrl+c组合键
这也可能有用:
您可以使用与流程进行通信。如果要模拟CTRL-C,信号为SIGINT,您可以通过kill-INT和进程id发出。您还可以修改SIGTERM的行为,这将使您的程序在更广泛的情况下完全关闭。您可以使用它与进程通信。如果您想模拟CTRL-C,信号是SIGINT,您可以通过kill-INT和进程id发出。您还可以修改SIGTERM的行为,这将使您的程序在更广泛的情况下完全关闭。这对主进程非常有效,但我的子进程继续输出:def killmesignum,frame:webcam.kill sys.exit这对主进程非常有效,但是我的子进程继续输出:def killmesignum,frame:webcam.kill sys.exit