この資料は anacron の代用ツール bgproc について紹介するものです。
バックグラウンドでタスクを実行するためのbashスクリプトです。evry と連携させることで、anacron の代替ツールとして機能します。
bgproc は evry を使用してコマンドを定期的なスケジューリングで、ジョブを実行します。evry は各ジョブについてタイムスタンプ付きの永続ファイルをコンピュータに保存します。bgproc は anacrons の哲学に従っているため、コンピュータを24時間365日稼動している必要はありません。
bgproc は次のようにインストールすることができます。
方法1
% URL='<https://raw.githubusercontent.com/seanbreckenridge/bgproc/master/bgproc>'
% curl -sSL $URL | sh
方法2
リポジトリをクローンして jobs
ディレクトリを作成し実行する。
% git clone <https://github.com/seanbreckenridge/bgproc>
% cd bgproc
% mkdir jobs
% ./bgproc ...
bgproc は、カレントディレクトリから find でファイル名が .job
で終わるジョブファイルを再帰的に見つけて実行します。代わりに、ジョブファイルを含むディレクトリを位置引数として指定することができます。
ジョブファイルは次のようなものです。
#!/bin/bash
# 毎日1回、サーバからログファイルをバックアップする
evry 1 day -backup_logfile && {
scp vps_server:~/app.log ~/.cache/app.log
}
これは各 ジョブファイルを bash で明示的に実行するものですが、次のようなラッパーを簡単に書くことができます。
#!/bin/bash
# 2日おきにPythonスクリプトを実行する
evry 2 days -my_task && {
printlog "running python script..."
exec python3 /usr/local/bin/run_task.py
}
ログを他の場所に保存したい場合は、環境変数 BGPROC_LOGFILE
に別の場所を設定します。デフォルトでは、一時的なログは /tmp/bgproc.log
に保存されます。
ログは非常に基本的なもので、タイムスタンプと渡されたメッセージが保存されるだけです。