在終端機中每隔 x 時間間隔重複一個指令?

在終端機中每隔 x 時間間隔重複一個指令?

我怎麼能夠重複每個時間間隔一個指令,這樣我就可以執行指令檢查 或者監控 目錄?

不需要腳本,我只需要在終端機中執行一個簡單的命令。

答案1

您可以使用 watch命令,手錶用於定期運行任何指定的命令。

打開終端機並輸入:

watch -n x <your command>

改變X成為您想要的時間(以秒為單位)。

如需使用該watch命令及其選項的更多協助,請執行man watch或造訪此關聯

例如 :下面將列出,每個60年代,在同一終端機上,查看桌面目錄的內容,以便您可以知道是否發生了任何更改:

watch -n 60 ls -l ~/Desktop

答案2

您也可以在終端機中使用此命令,除了努克斯的回答:

while true; do <your_command>; sleep <interval_in_seconds>; done

例子:

while true; do ls; sleep 2; done

ls此指令將以2 秒的間隔列印輸出。

使用Ctrl+C停止該進程。

有幾個缺點watch

  • 它不能使用任何別名命令。
  • 如果任何命令的輸出很長,則滾動將無法正常工作。
  • 設定有點麻煩最大時間間隔超過一定值。
  • watch將使用-c--color選項解釋傳遞轉義字元的 ANSI 顏色序列。例如, 的輸出pygmentize將有效,但 的輸出將失敗ls --color=auto

在上述情況下,這可能是一個更好的選擇。

答案3

只是想參與其中蘇拉夫角'沙努克斯的回答:

  1. 雖然watch在 Ubuntu 上可以完美工作,但如果您希望您的“Unix-fu”是純粹的,您可能需要避免這種情況。例如,在 FreeBSD 上,watch是一個「監聽另一條 tty 線路」的命令。

  2. while true; do command; sleep SECONDS; doneCtrl還有一個警告:使用+可能更難殺死您的命令C。您可能會更喜歡:

    while sleep SECONDS; do command; done
    

    它不僅更短,而且更容易被打斷。需要注意的是,它會首先休眠,然後運行您的命令,因此您需要等待一段時間SECONDS才能第一次出現該命令。

答案4

你可以使用crontab。運行命令crontab -e並使用您喜歡的文本編輯器打開它,然後添加此行

*/10 * * * *  /path-to-your-command

這將每 10 分鐘運行一次您的命令

* */4 * * *  /path-to-your-command

這將每 4 小時運行一次您的命令

另一個可能的解決方案

$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done

X重複次數。

等待重複的時間。

例 :

$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done

相關內容