簡體   English   中英

如何中斷在 mac 后台運行的 python 腳本?

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

我有一個 python 腳本,它在后台運行並且與看門狗和 os 一起工作。 有沒有辦法強制退出這樣的腳本? 我已經嘗試按其他討論中提出的ctrl + xctrl + z鍵,但對我不起作用。

如果您在命令行末尾使用&將進程發送到后台,則可以使用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>將其kill -9 <PID> 順便說一句,上面示例中的第一行輸出告訴您 PID(在本例中為82675 )。

假設您在命令行中沒有包含腳本名稱的其他進程,您甚至可以這樣做(替換test.py ):

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

如果您將運行命令jobs您將看到類似這樣的內容

[1]  + suspended  python .....

然后你可以運行kill %<job-number>你會看到:

[1]  + 43347 killed     vim python ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM