如何手动停止一个在linux上连续运行的Python脚本?
我有一个Python脚本,它正在运行并不断地将错误转储到一个日志文件中。
我想编辑这个脚本,然后再运行它,但不知道如何停止这个脚本。
我目前是通过PuTTy登陆Linux,在那里进行所有的编码。那么,有没有在linux下停止python脚本的命令?
找到脚本的进程id(PID),然后发出kill -9 PID
来杀死这个进程,除非它在终端作为你的forground进程运行,在这种情况下,你可以ctrl-C来杀死它。
用这个命令找到PID。
ps -elf | grep python
它列出了所有的python进程, 选出正确的一个并记下它的PID。然后
kill -9 <whatever_the_PID_is>
将杀死这个进程。在这个阶段,你可能会收到一条关于终止进程的消息。
或者,你可以使用 top
命令来查找 python 进程。只需输入k
(代表杀),top
程序就会提示你要杀的进程的PID。有时用top
很难看到所有你感兴趣的进程,因为它们可能会从屏幕上滚动,我认为ps
的方法更容易/更好。
如果程序是shell中的当前进程,输入Ctrl-C将停止Python程序。
在一个完美的世界里,你会阅读脚本的文档,看看应该用哪个信号来告诉它结束。在现实生活中,你可能想先给它发送TERM信号,如果它忽略了TERM,可能会使用KILL信号。所以,你要做的是找到进程ID,使用ps命令(就像有人已经描述的那样)。然后,你可以运行kill -TERM <pid>
。有些程序在收到这样的信号时,会清理一些东西,比如他们可能打开的文件,所以从这样的东西开始比较好。如果失败了,那么除了大锤子,就没什么好办法了。kill -KILL <pid>
. (你可以使用数值,比如-KILL=-9,它们可能永远不会改变,但从理论上讲,使用名字可能更安全)
如果你知道脚本的名字,你可以把所有的工作减少到一条命令中。
ps -ef | grep "script_name" | awk '{print $2}' | xargs sudo kill
如果你想确定那是一个python脚本:
ps -ef | grep "python script_name" | awk '{print $2}' | xargs sudo kill
如果你想杀死所有的python脚本:
ps -ef | grep "python" | awk '{print $2}' | xargs sudo kill
我想你已经明白了;)
提醒:在例子中,你需要用"“来表示脚本名称。