#
ドキュメント

Document

自分のための備忘録です。

Cron

  • Ubuntu(Debian系)のCronについて記載
  • Cronの実行者にログへの書き込み権限があるかを確認

配置場所

  • /var/spool/cron/crontabs
  • /etc/crontab/
  • /etc/cron.*/*

フォーマット

* * * * * コマンド
分 時 日 月 曜日

# 1分ごとに /date/log.txtへ日時を出力
*/1 * * * * echo `date` >>log.txt

リダイレクションとパスの間には空白は入れません。

crontab

Cronの設定は、直接ファイルを編集せずに、crontabコマンドを使います。

# 編集
$ crontab -e
# 削除
$ crontab -r
# 一覧
$ crontab -l

ユーザーのcronファイル

ubuntuユーザーのcrontabのファイルは、/var/spool/cron/crontabs/ubuntu(Ubuntu 18.04)へ保存されます。

ubuntu@ip-10-0-0-200:/$ sudo ls -al /var/spool/cron/crontabs/ubuntu
-rw------- 1 ubuntu crontab 1089 Oct 13 07:23 /var/spool/cron/crontabs/ubuntu

MAILTO

MAILTOが指定されているときは、標準出力(エラー含む)の内容を指定アドレスへ送信します。
(出力内容がファイルなどへリダイレクションされているときはメールは送信されません。)
MAILTOが未設定のときは、Cronの作成ユーザーへメールが送信されます。

MAILTO="info@info-town.jp"
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
CONTENT_TYPE=text/plain; charset=UTF-8

*/1 * * * * echo `date`

標準エラー出力を標準出力へリダイレクト

# 標準出力・エラー出力とも/dev/nullに出力
*/1 * * * * echo `date` > /dev/null 2>&1
# 標準出力はlog.txt、標準エラー出力はerror.logへ出力します。
# 下記はechoがエラーなのでerror.logへ出力されます。
*/1 * * * * eecho `date` >>log.txt 2>>error.log

# 標準エラー出力を標準出力へリダイレクトします。
# 下記はエラー出力はlog.txtへ出力されます。
*/1 * * * * echo `date` >>log.txt 2>>&1

一時的に試したいとき

/etc/cron.dにファイルを作成(ファイル名は任意)します。

cron.dへ配置する場合は、実行ユーザーを明示する必要があります。

https://vividcode.hatenablog.com/entry/man-cron-and-crontab

syslogの使用

  • Cronの設定で、メールアドレスおよびリダイレクションを設定していないとき場合には、ログは/var/log/cron.logに出力

-ログ