退出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