设置python进程名称

时间:2013-06-12 15:18:32

标签: python process kill

我需要每小时杀死我的python脚本,然后我需要重新启动它。我需要这样做,因为有时(我创建屏幕截图)浏览器窗口可能因为用户登录弹出窗口而挂起..无论如何。我创建了2个文件'reload.py'和'screenshot.py'。我通过cronjob运行reload.py。

我认为这样的事情会起作用

    # kill process if still running
try :   
        os.system("killall -9 screenshotTaker");
except :
        print 'nothing to kill'

# reload or start process
os.execl("/path/to/script/screenshots.py", "screenshotTaker")

问题是,我读到的execl的第二个参数(给定的进程名称)不起作用?如何为它设置进程名称以使kill执行它?

提前致谢!

1 个答案:

答案 0 :(得分:1)

os.execl的第一个参数是可执行文件的路径。其余参数将传递给该可执行文件,就好像它们在命令行中键入的位置一样。

如果你想让“screenshotTaker”成为流程的名称,那就是“screenshots.py”这样做的责任。你在那个剧本中做过那种特殊的事吗?

BTW,更常见的方法是跟踪(在/ var / run /中)正在运行的程序的PID。并通过PID杀死它。这可以通过Python完成(使用os.kill)在系统级别,某些发行版具有用于此目的的帮助程序。例如,在Debian上有start-stop-daemon。以下是 man 的摘录:

start-stop-daemon(8)            dpkg utilities            start-stop-daemon(8)

NAME
       start-stop-daemon - start and stop system daemon programs

SYNOPSIS
       start-stop-daemon [options] command

DESCRIPTION
       start-stop-daemon  is  used  to control the creation and termination of
       system-level  processes.   Using   one   of   the   matching   options,
       start-stop-daemon  can  be  configured  to find existing instances of a
       running process.