cronは、時々実行されるプログラムをスケジュールするために使用できます。しかし、既存のシェルプロセスに限定されていないようです。
特定のbashプロセスの状態にアクセスするスクリプト(スクリプトを介して実行の出力jobs
とdirs
シェルの出力にアクセスするなどsource
)がある場合は、特定のbashプロセスで時々実行されるようにスケジュールするにはどうすればよいですか。
ありがとうございます。
更新:両方の答えは、実際には既存のbashプロセス状態への直接アクセスを提供しません。親シェルプロセスの一部のステータス情報をサブシェルプロセスに間接的にコピーできます。なぜ受け入れたのか覚えていません。
答え1
何をしているのか完全にはわかりませんが、何かを実行するバックグラウンドタスクを開始してからX秒待ってから繰り返すことができます。
はい
( while : ; do echo hello ; sleep 10 ; done ) &
答え2
date コマンドを使用して、省電力作業期間を動的に調整できます。
はい
now() { date '+%s'; }
next() { date -d $(date -d "1 hours" '+%H:00:00') '+%s'; }
( while : ; do echo "Your Tasks Here" ; sleep $(next) - $(now) ; done ) $
next() 関数内の日付形式は、定時に実行されるように構成されます。 15分ごとに実行するには、次のように調整できます。
next() { date -d $(date -d "15 minutes" '+%H:%M:00') '+%s'; }
また見なさい:次の時間の秒を検索するLinuxの日付コマンド
注:スリープはバックグラウンドで発生するため、上記のスクリプトを終了するのは少し面倒です。 PIDを介して終了したり、ループ操作を背景化したりしないことを検討してください。