我需要停止终端中正在运行的 Java 脚本的执行,并在终端中每隔 x 个时间间隔启动相同的执行。这可能吗?
答案1
是的,/usr/bin/timeout
是可以使用的工具。请参阅man timeout
。下面是一个例子,来自我的一项夜间cron
作业,您可以将您的作业包装在while true ; do
循环中:
TO_KILL="45m" # timeout (kill -KILL) for hpodder
TO_HUP="42m" # timeout (kill -HUP) for hpodder. Makes sense only if it is less than $TO_KILL
# ...
timeout -k $TO_KILL -s HUP $TO_HUP hpodder update
这将运行hpodder update
直到它完成,或者 42 分钟过去,此时将发送信号(参见man 7 signal
)HUP
。如果hpodder update
45 分钟后(发送 3 分钟后)仍在运行HUP
,它将被发送不可捕获KILL
信号,并将被终止。