非常に短い間隔で定期的にコマンドを実行し、リターンを取得するにはどうすればよいですか?


12

約5秒の間隔で特定のコマンドを呼び出す必要があります。バックグラウンドで実行するデーモン/プロセス、またはそれを行うための同様の何かをどのようにセットアップしますか?cronジョブを調べましたが、最小間隔は1分であるようです。アドバイスをいただければ幸いです;)

Fedoraはシステムです。

コマンドを編集するとbashscriptになりますので、「ウォッチ」ではできません。

回答:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

何が嫌いですか?私はそれなしで実行したらどうなりますか?
ハンス

@Marcelはdisown、シェルジョブテーブルから最後のジョブを削除し、あなたが尋ねたように、それを一種のデーモンにします。ターミナルに接続されたままで、同じプロセスグループ内にあるため、実際のデーモンではありませんが、シェルを閉じた後も実行を続けます。
ジュリアーノ

大丈夫、それは動作します:D好奇心のために、デーモンをどのように「作成」しますか?
ハンス

@Marcelの簡単な方法は、シェルスクリプトからではなく)ライブラリアクセスを使用してCまたは他の言語からdaemon(3)を呼び出すことです。これは難しい方法です。
ジュリアーノ

14

なぜ「時計」が機能しないと思いますか?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

ログアウトしたらどうなりますか?スクリプトの実行を継続する必要があります。
ハンス

停止しますがnohup watch -n 5 ./periodic.sh > periodic.log &、出力を使用して保存できます。
-naufraghi

「」番目のsh -c「あなたは余分な所望の効果を得るために引用使用する必要があるかもしれないその手段『』コマンドがに与えられている」ので、引用符を使用する配管用
アンドレイ


0

watchコマンドはあなたのケースでは適切ですが、私は(例えばtmuxは、スクリーンなど)ターミナルマルチプレクサを使用して、使用してコマンドを実行します

watch -n 5 ./script.sh

その場合、マシンへの端末またはSSH接続を閉じても、スクリプトは実行されたままです。

このアプローチの唯一の制限は、スクリプトがその時間間隔内に実行を完了した場合にのみ、5秒ごとにスクリプトが実行されることです。


OPは彼の意見でwatchはそれをしないだろうと明示的に述べているので、あなたの答えがこの制限を克服する理由、またはOPがwatchタスクに適していないと誤解したと思うポイントを説明してください。
AdminBee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.