我想运行我的脚本24 小时,那么即使进程仍在进行,也需要将其停止。
答案1
使用timeout
:
timeout 24h my_script
或者at
在特定时间使用它来杀死它,如下所示:
my_script &
my_script_pid=$!
at 13:37 <<< "kill $my_script_pid"
# or
at now+24hours <<< "kill $my_script_pid"
# optional, if you want to close the terminal:
disown
使用可以带来一些好处,例如,当通过并从当前终端 (-> ) 分离at
启动脚本时,您可以关闭连接/终端。 但您应该知道,如果脚本在时间到之前停止,PID 可能会被重复使用。您可能能够使用其他方法找到 PID,例如或等等。ssh
disown
ps aux
pkill myscript.sh
您也可以将screen
或nohup
与第一个命令一起使用。
答案2
kill 0
基于向当前进程组中的所有进程发出信号的事实,有几种替代方案。
例如:
sh -c './script & sleep 24h; kill 0'
或者:
./script | ( sleep 24h; kill 0 )
或者:
./script | { sleep 24h; kill 0; }
答案3
你能使用 crontab 来终止服务吗
#!/bin/bash
cat <(crontab -l) <(echo "0 0 0 0 0 kill-scripty.sh") | crontab -
# do something