退出Python进程而不是终止它(通过ssh)

2024-07-03 05:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过以下方式在本地启动脚本:

sudo python run.py remote

这个脚本碰巧也打开了一个子进程(如果这很重要的话)

^{pr2}$

我想知道如何在SSH进入时终止这个脚本。在

我知道我可以:

sudo pkill -f "python run.py remote"

或使用:

ps -f -C python

找到进程ID并以此方式终止它。在

然而,这些都不能正常地终止进程,我希望能够触发CTRL/cmdc的请求来注册一个exit命令(我在关闭时做了很多事情,当进程被简单地终止时不会触发这些操作)。在

谢谢你!在


Tags: runpy脚本idremote进程方式exit
2条回答

您可以使用signals与进程通信。如果您想模拟CTRL-C信号是SIGINT(您可以用kill -INT和进程id来提高它)。您还可以修改SIGTERM的行为,这将使您的程序在更广泛的情况下干净地关闭。在

您应该使用“信号”:

http://docs.python.org/2/library/signal.html

示例:

import signal, os

def handler(signum, frame):
    print 'Signal handler called with signal', signum

signal.signal(signal.SIGINT, handler)
#do your stuff

然后在终端:

^{pr2}$

如果脚本在当前shell中处于活动状态,则使用ctrl+c

http://en.wikipedia.org/wiki/Unix_signal

这也可能有用:

How do you create a daemon in Python?

相关问题 更多 >