cronを使った自動実行
定期的のアップデートされるファイルの定型処理などは,自動的に行えるようにすると効率的だ.自動実行に使えるのがcronで,たとえば,
ディレクトリ/data/REANALYSES/NNRA-1 におく update_all.shというファイルを毎日00:20に実行するには,crontab -e をコマンドプロンプトから入力して,出てくるvi(エディター)で
20 00 * * * /data/REANALYSES/NNRA-1/update_all.sh
と編集する.なお実行開始時間を,00:00のようなキリのよい時間にすると,多くの処理が重なってしまうので,そういった時間は避ける方がいい.
pythonを仮想環境を使って動かしている場合には,仮想環境呼び出しをシェルスクリプトに書いておき,またPYTHONPATHの環境変数も書いておく.
上のupdate_all.shの中身は以下のようになっている.
source /usr/local/pyenv/versions/anaconda3-2019.10/bin/activate py37
export PYTHONPATH="/home/minobe/myprog/python.pth"
cd /data/REANALYSES/NNRA-1/dayflt_plev3d.nc
python flt_day_lastyear.py
標準出力・エラー出力の内容はメール形式で通知され,/var/spool/mail/ユーザー名などに格納される.
なお,CentOS7などで使われているsystemdでは,一般ユーザーも定期的な作業を行う設定ができるはずなのだが,oceanワークステーションではこれが現在(2021/02/19)できていない.systemctl --user と入力すると,「Failed to get D-Bus connection: そのようなファイルやディレクトリはありません」というエラーが出てしまい,一般ユーザーではなにもできないようだ.