Linux
在沒有人為乾擾的情況下在終端中執行/停止命令?
作為初學者的 Linux 使用者,我面臨著一個小問題。我在終端中有 1 個命令,如圖所示:
當我執行此命令時,它會生成一些行,但問題是我需要在 5 秒後停止此命令,而無需
ctrl + c
人工按下:我需要使用什麼方法通過電腦完成此操作而無需實際按下
ctrl + c
,因為我需要重複此過程超過 1000 次。
執行命令
停止命令
- (暫停 xx 秒)
執行命令
停止命令
- (暫停 xx 秒)
等等
我需要安裝一些特殊程序還是可以使用 bash 腳本來完成?
您可以在後台執行命令,然後在前台休眠 5 秒,然後終止後台命令。
- 在後台執行命令:
command &
- 將命令 PID 保存在變數中:
command_pid=$!
- 睡眠 5 秒:
sleep 5
- 殺死後台程序:
kill "$command_pid"
現在您可以添加暫停並將整個循環等。
環形:
for ((i=0; i<1000; i++)); do crunch 7 7 abcdefghijklm & command_pid=$! sleep 5 kill "$command_pid" sleep 5 #pause done
假設
timeout(1)
可用,shell 命令timeout 5s whateverthatcommandis; sleep 99
應該在五秒鐘後終止程序(假設程序表現良好……)然後
sleep
不管你的 xx 秒是多少。然後可以根據需要將這些命令包裝在某種循環中;假設seq
是可用的(在 BSD 上可能會使用jot
),典型的循環可能會按照以下方式執行:for n in `seq 1 1000`; do timeout 5s whateverthatcommandis; sleep 99; done
順便說一下,在 ZSH 下,shell 循環可能會更清晰:
repeat 1000 { timeout 5s whateverthatcommandis; sleep 99 }