Bash
在一定時間後從命令行停止/終止程序
我有一個 Python 程式碼可以監聽和檢測環境聲音。這不是我的項目,我是在網路上找到的(SoPaRe)。使用該
./sopare.py -l
命令,它開始錄製聲音,但處於無限循環中。當我想停止它時,我必須按Ctrl+C
。我的目的是在 10 秒後自動停止這個程序,但是當我與作者交談時,他說該程序沒有時間限制。
我試圖通過 殺死它
kill PID
,但PID
每次程序執行時都會改變。如何在一段時間後通過 停止它bash
?或者,我可以使用命令從 python 執行此
os.system()
命令。
最簡單的解決方案是使用
timeout
GNU coreutils 集合(可能預設安裝在大多數 Linux 系統上):timeout 10 ./sopare.py -l
有關更多選項,請參閱此實用程序的手冊 (
man timeout
)。在非 GNU 系統上,可以像安裝gtimeout
GNU coreutils 一樣安裝此實用程序。如果 GNU coreutils 不可用,另一種選擇是在後台啟動程序並等待 10 秒,然後再發送終止信號:
./sopare.py -l & sleep 10 kill "$!"
$!
將是最近啟動的後台程序的程序 ID,在這種情況下是您的 Python 腳本。如果等待時間用於其他事情:
./sopare.py -l & pid=$! # whatever code here, as long as it doesn't change the pid variable kill "$pid"