ターミナルで x 間隔ごとにコマンドを繰り返しますか?

ターミナルで x 間隔ごとにコマンドを繰り返しますか?

どうやって繰り返す時間間隔ごとにコマンドを実行することで、チェック中 または監視 ディレクトリ?

スクリプトは必要ありません。ターミナルで実行される簡単なコマンドだけが必要です。

答え1

コマンドを使うことができます watch時計指定されたコマンドを定期的に実行するために使用されます。

ターミナルを開き、次のように入力します:

watch -n x <your command>

変化バツ希望する秒数になります。

watchコマンドとそのオプションの使用方法の詳細については、こちらを実行するman watchか、こちらにアクセスしてください。リンク

例えば ​​:以下に、すべての60年代同じターミナルで、デスクトップ ディレクトリの内容を確認して、変更があったかどうかを確認します。

watch -n 60 ls -l ~/Desktop

答え2

このコマンドはターミナルでも使用できます。nuxの回答:

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

例:

while true; do ls; sleep 2; done

lsこのコマンドは、2 秒間隔で出力を印刷します。

プロセスを停止するにはCtrl+ を使用します。C

の欠点はいくつかありますwatch

  • エイリアスコマンドは使用できません。
  • コマンドの出力が非常に長い場合、スクロールは正しく機能しません。
  • 設定に多少の問題がある最大時間間隔ある一定の値を超えると。
  • watch-cは、またはオプションを使用してエスケープ文字を渡す ANSI カラー シーケンスを解釈します--color。たとえば、 の出力はpygmentize機能しますが、 では失敗しますls --color=auto

上記の状況では、これがより良い選択肢であると思われるかもしれません。

答え3

ただ協力したかっただけソウラブ c.'砂ヌクスの回答:

  1. Ubuntu では完璧に動作しますがwatch、純粋な「Unix-fu」を望むなら、これを避けた方が良いかもしれません。たとえば、FreeBSD では、watch「別の tty ラインをスヌープする」コマンドがあります。

  2. while true; do command; sleep SECONDS; doneまた、注意点もあります: Ctrl+を使用してコマンドを強制終了することが難しくなる可能性があります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

バツ繰り返す回数。

はい繰り返すのを待つ時間。

例 :

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

関連情報