答案1
您可以在后台运行该命令,然后在前台休眠 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
答案2
假设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
顺便说一句,shell 循环在 ZSH 下可能会变得更清晰:
repeat 1000 { timeout 5s whateverthatcommandis; sleep 99 }