Ani*_*yea 37 shell shell-script delay
如果我正在执行一个很长的过程,有什么办法可以执行一些基于时间的命令吗?
例如,我正在运行一个非常长的进程,大约运行 10 分钟。
5 分钟后,我想运行一个单独的命令。为了说明,单独的命令可以是:echo 5 minutes complete
(注意:我不希望命令的完成进度,而只是在指定的时间间隔后执行的命令。)
是否可以?
Wil*_*ard 42
赶紧跑:
long-command & sleep 300; do-this-after-five-minutes
Run Code Online (Sandbox Code Playgroud)
在do-this-after-five-minutes五分钟后会得到执行。该long-command会在后台运行。
为此,有一个衬里:
( ( sleep $TIMEOUT ; echo "5 minutes complete") & $COMMAND )
Run Code Online (Sandbox Code Playgroud)
在您的情况下 TIMEOUT=5m 和 COMMAND 是长命令。
另请参阅我对这篇文章“服务网络重启超时”的回答
你可以使用这个脚本:
#!/bin/bash
TEMPFILE="$(mktemp)"
STARTTIME="$(date +%s)"
(./longprocess; rm -f "$TEMPFILE") &
while [ -f "$TEMPFILE" ]; do
sleep 1s
NOW="$(date +%s)"
if (( (NOW-STARTTIME) % 300 == 0 )); then
echo "$(( (NOW-STARTTIME)/60 )) minute(s) elapsed"
fi
done
echo "Done!!!"
Run Code Online (Sandbox Code Playgroud)
它longprocess在 a 中执行sub-shell,然后监视先前创建的“锁定”文件是否存在。