我如何中断在Mac上在后台运行的python脚本?

问题描述 投票:0回答:2

我有一个python脚本,该脚本在后台运行,并且正在使用看门狗和os。有没有办法强制退出这种脚本?我已经尝试按其他讨论中的建议按ctrl + xctrl + z,这对我不起作用。

python python-3.x macos interrupt
2个回答
0
投票

如果您将运行命令jobs您将看到类似这样的内容

[1]  + suspended  python .....

然后您可以运行kill %<job-number>您将看到:

[1]  + 43347 killed     vim python ...

0
投票

如果您在命令行末尾使用&将进程发送到后台,则可以使用fg将其带回到前台。一旦回到前台,您可以使用Ctrl+C

将其杀死

test.py

from time import sleep

n = 0
while True:
    sleep(1)
    n += 1
    print(n)

示例输出:

$ python3 -q test.py &
[1] 82675
$ 1
2
3
4
fg
5
6
^CTraceback (most recent call last):
  File "test.py", line 6, in <module>
    sleep(1)
KeyboardInterrupt

这与您启动脚本的外壳相同。在另一个外壳中,可以使用ps查找进程ID(PID),然后使用kill -9 <PID>删除它。顺便说一句,上面示例中的第一条输出线告诉您PID(在这种情况下为82675)。

假设您在命令行中没有其他包含脚本名称的进程,您甚至可以执行此操作(替换test.py:]

$ kill -9 $(ps | fgrep test.py | fgrep -v fgrep | cut -d' ' -f1)
© www.soinside.com 2019 - 2024. All rights reserved.