脚本需要在 24 小时后停止

脚本需要在 24 小时后停止

我想运行我的脚本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,例如或等等。sshdisown
ps auxpkill myscript.sh

您也可以将screennohup与第一个命令一起使用。

答案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

相关内容