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

How can I interrupt a python script that is running in the background on mac?

我有一个 python 脚本,它在后台 运行 并且与看门狗和 os 一起工作。有没有办法强制退出这样的脚本?我已经尝试按 ctrl + xctrl + z 作为支持 osed 在其他讨论中,但对我不起作用。

如果你会 运行 命令 jobs 你会看到这样的东西

[1]  + suspended  python .....

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

[1]  + 43347 killed     vim python ...

如果您在命令行末尾使用 & 将进程发送到后台,则可以使用 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

这与您启动脚本的位置相同 shell。从另一个shell,你可以找到ps的进程ID(PID),然后用kill -9 <PID>杀死它。顺便说一句,上面示例中的第一行输出告诉您 PID(在本例中为 82675)。

假设您没有其他进程在命令行中包含您的脚本名称,您甚至可以这样做(替换 test.py):

$ kill -9 $(ps | fgrep test.py | fgrep -v fgrep | cut -d' ' -f1)