たまにcron使おうとすると、注意事項をしょっちゅう忘れてしまうので、自分用にメモ。なんか他にも色々あったような気がするがとりあえず思いついただけを。
目次
実行ユーザーと環境変数
実行ユーザーはcrontabを実行して編集したユーザー。管理者権限がほしい場合は、sudoでcrontabを編集する。
環境変数を以下のようにして調べる。
* * * * * /bin/env > ~/env.txt
~が使える。で、結果は以下。
XDG_SESSION_ID=43440
SHELL=/bin/sh
USER=hoge
PATH=/usr/bin:/bin
PWD=/home/blog
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/hoge
LOGNAME=hoge
XDG_RUNTIME_DIR=/run/user/1000
_=/bin/env
これらの環境変数が使えるわけだが、これでは困るケースも多々ある。
もっとも簡単なやり方は、crontabに直接 VAR=hogehoge の形で書き込んでしまうことだろう。ただいちいち記述するのも面倒だし、APIのKEYなどは抵抗があるしで、私はsourceコマンドで環境変数を記述したファイルを読み込んでからコマンド実行することが多い。
その他、bashでは-lオプションを使うとログインシェルとして実行できるので、
* * * * * /usr/bin/bash -l -c 'cmd'
などとすることもできる。個人で管理しているVPSなんかならこれでも十分と思う。
参考サイト
ファイルの置き場所
crontabのファイルは/var/spool/cron/下にユーザー名で置いてある。普通はcrontab -lで見るので使わないと思うが。
他、/etc/cron.d/や/etc/cron.daily/下にスクリプトを置くと、管理者権限でよしなに実行してくれる。
参考サイト
dateの%
cronではdateコマンドを実行することもよくあるが、dateコマンドで使う%にはエスケープシーケンスをつける必要がある。
* * * * * echo hoge > ~/$(date +\%Y\%m\%d).txt
こんな感じ。
コメント