如何手动停止在Linux上连续运行的Python脚本


19

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

我想编辑脚本并再次运行,但是不知道如何停止脚本。

我目前通过PuTTy登录Linux,并在那里进行所有编码。那么,是否有命令在Linux中停止python脚本?

Answers:


35

您将必须找到进程ID(pid)。一个命令来做到这一点是

$> ps -ef

将结果限制为python进程,您可以grep结果

$> ps -ef | grep python

结果如下:

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

第二列是pid。然后使用kill命令:

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

那正是我想要的。谢谢

8

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

pkill -9 -f script.py

1
如果脚本名称是唯一的,这比手动搜索PID更好。
FlippingBinary

7

找到脚本的进程ID(PID),然后发出a kill -9 PID来终止该进程,除非该进程在终端上作为您的前台进程运行,在这种情况下,您可以使用Contrl-C终止它。

使用以下命令查找PID:

ps -elf | grep python

它列出了所有python进程,选择正确的进程并记录其PID。然后

kill -9 <whatever_the_PID_is>

会杀死进程。您可能会在此阶段收到有关终止进程的消息。

另外,您可以使用该top命令查找python进程。只需输入k(用于杀死),top程序就会提示您输入要杀死的进程的PID。有时很难看到您感兴趣的所有过程,top因为它们可能会滚动到屏幕之外,我认为这种ps方法更容易/更好。


4
好吧,在使用之前-9,我会先“轻柔地”杀死它。仅当它不反应时,我才会使用-9
glglgl 2012年

不熟悉“软杀人”一词..
Levon 2012年

4

如果该程序是您外壳程序中的当前进程,则键入Ctrl-C将停止Python程序。


伟大的解决方案,需要此进行测试。
Kuzon

1

在理想的情况下,您将阅读脚本的文档,并查看应使用哪些信号来告知脚本结束。在现实生活中,您可能希望首先向其发送TERM信号,如果忽略了TERM,则可能会使用KILL信号。因此,您要做的是使用ps命令(如已经描述过的)找到进程ID。然后,您可以运行kill -TERM <pid>。一些程序会在收到诸如此类的信号时清除它们可能已打开的文件之类的内容,因此最好从此类内容开始。如果失败了,那么除了大锤子之外,别无他法 kill -KILL <pid>。(您可以使用数字值,例如-KILL = -9,它们可能永远不会改变,但是从理论上讲,使用名称可能更安全)


0

如果您知道脚本的名称,则可以将所有工作简化为一个命令:

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

我想你明白了;)

提醒:您需要在示例中用脚本名称加上“”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.