我想知道如何停止当前的python脚本,当它已经运行。如何在另一个python脚本运行时停止我的python脚本?
要清楚,我想写在我自己的Python脚本中。所以首先,在main方法中,它会检查我的python脚本是否已经运行。如果它正在运行,我想退出并显示一条错误消息。
目前我尝试这种代码:
if os.system("ps ax | grep sample_python.py") == True:
print "fail"
exit(0)
else:
print "pass"
上面的代码看起来是grepping蟒蛇名字..但它总是去别的循环,而不是进入的,如果循环和退出..
所以出于测试目的,我运行我的脚本,并在另一个终端上再次运行我的脚本。第一个脚本不会停止,但第二个python不会进入if循环来打印出错误消息。
我该如何解决这个问题?
好吧,我发现了一个愚蠢的事情,我想看看是否有人能帮助我出去转转吧.. 所以我的观点是杀,如果另一个Python当前正在运行,这只是开始蟒蛇.. 但愚蠢的事情是..因为我正在运行我的Python和运行一个检查编码这个蟒蛇里面..它将永远退出..因为只要我启动Python的PID将被创建并将运行...
所以.. python开始 - > PID创建并运行 - >检查如果Python正在运行 - >是的Python正在运行 - >退出。
我想看看是否有办法做 python starts - >检查python是否已经在运行 - >如果它正在运行kill kill当前的python不是正在运行的python。
如果找不到匹配,grep会发现自己 – 2015-03-30 19:58:47
诊断问题的方法是首先在脚本运行时以及何时不检查是否有命令行输入'ps ax ...'正确的命令行。然后你编写一个python脚本,它只是打印出'os.system(...'调用的结果,再次检查是否有差异,然后你就可以编写你需要的脚本了。 – quamrana 2015-03-30 20:03:18
你可以使用'pgrep'和'pkill'来查找并终止进程,而不包括grep进程本身(也有各种shell实用程序可以确保只有一个副本运行,尽管它们可能不适合您的情况) – DNA 2015-03-30 20:26:33