2012-07-09 13:15:55 +0000 2012-07-09 13:15:55 +0000
19
19

如何手动停止一个在linux上连续运行的Python脚本?

我有一个Python脚本,它正在运行并不断地将错误转储到一个日志文件中。

我想编辑这个脚本,然后再运行它,但不知道如何停止这个脚本。

我目前是通过PuTTy登陆Linux,在那里进行所有的编码。那么,有没有在linux下停止python脚本的命令?

答案 (6)

35
35
35
2012-07-09 13:19:39 +0000

你必须找到进程的id(pid)。一个命令是

$> ps -ef

为了将结果限制在python进程上,你可以grep结果

$> ps -ef | grep python

这样会得到这样的结果。第二列是pid,然后使用kill命令:

user 2430 1 0 Jul03 ? 00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

这样的结果是:

$> kill -9 2430 (i.e. the pid returned)

7
7
7
2016-05-25 10:23:16 +0000

试试这个简单的行,它将终止所有script.py

pkill -9 -f script.py
7
7
7
2012-07-09 13:17:43 +0000

找到脚本的进程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的方法更容易/更好。

4
4
4
2012-07-09 13:17:29 +0000

如果程序是shell中的当前进程,输入Ctrl-C将停止Python程序。

1
1
1
2014-07-15 17:16:12 +0000

在一个完美的世界里,你会阅读脚本的文档,看看应该用哪个信号来告诉它结束。在现实生活中,你可能想先给它发送TERM信号,如果它忽略了TERM,可能会使用KILL信号。所以,你要做的是找到进程ID,使用ps命令(就像有人已经描述的那样)。然后,你可以运行kill -TERM <pid>。有些程序在收到这样的信号时,会清理一些东西,比如他们可能打开的文件,所以从这样的东西开始比较好。如果失败了,那么除了大锤子,就没什么好办法了。kill -KILL <pid>. (你可以使用数值,比如-KILL=-9,它们可能永远不会改变,但从理论上讲,使用名字可能更安全)

0
0
0
2015-03-25 11:03:19 +0000

如果你知道脚本的名字,你可以把所有的工作减少到一条命令中。

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

我想你已经明白了;)

提醒:在例子中,你需要用"“来表示脚本名称。