Shell-Script

經過一定時間後執行命令?

  • February 28, 2021

如果我正在執行一個漫長的過程,有什麼辦法可以執行一些基於時間的命令?

例如,我正在執行一個非常長的程序,大約執行 10 分鐘。

5 分鐘後,我想執行一個單獨的命令。為了說明,單獨的命令可以是:echo 5 minutes complete

(注意:我不希望在命令完成方面取得進展,而只是在指定時間間隔後執行的命令。)

是否可以?

趕緊跑:

long-command & sleep 300; do-this-after-five-minutes

do-this-after-five-minutes在五分鐘後執行。將long-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!!!"

它執行您的longprocessin asub-shell然後監視先前創建的“鎖定”文件是否存在。

引用自:https://unix.stackexchange.com/questions/286070