はじめに

この資料は anacron の代用ツール bgproc について紹介するものです。

bgproc について

バックグラウンドでタスクを実行するためのbashスクリプトです。evry と連携させることで、anacron の代替ツールとして機能します。

GitHub - seanbreckenridge/bgproc: bash loop to run tasks in the background. used as an anacron alternative

bgproc は evry を使用してコマンドを定期的なスケジューリングで、ジョブを実行します。evry は各ジョブについてタイムスタンプ付きの永続ファイルをコンピュータに保存します。bgproc は anacrons の哲学に従っているため、コンピュータを24時間365日稼動している必要はありません。

インストール

bgproc は次のようにインストールすることができます。

% 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 に保存されます。

ログは非常に基本的なもので、タイムスタンプと渡されたメッセージが保存されるだけです。