![](/img/trans.png)
[英]How can I run a function every n seconds but not interrupt other code? maybe running in background?
[英]How can I interrupt a python script that is running in the background on mac?
我有一個 python 腳本,它在后台運行並且與看門狗和 os 一起工作。 有沒有辦法強制退出這樣的腳本? 我已經嘗試按其他討論中提出的ctrl + x
或ctrl + 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.