我如何在 mac 的后台中断 运行 的 python 脚本?
How can I interrupt a python script that is running in the background on mac?
我有一个 python 脚本,它在后台 运行 并且与看门狗和 os 一起工作。有没有办法强制退出这样的脚本?我已经尝试按 ctrl + x
或 ctrl + 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)
我有一个 python 脚本,它在后台 运行 并且与看门狗和 os 一起工作。有没有办法强制退出这样的脚本?我已经尝试按 ctrl + x
或 ctrl + 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)