LoginSignup
33
40

More than 5 years have passed since last update.

cron の設定とか簡易メモ

Last updated at Posted at 2018-09-19

 基本

実行には root権限 が必要

一般ユーザーでrootの設定を操作するにはsudoの事前設定が必要

オプション
# crontab

-l: cronを一覧で表示

-e: cronを設定するエディタを起動する
-u: cronを設定するユーザーを指定

-r: cronの設定を全消去
設定エディタを開く
# crontab [ -u ユーザ名 ] { -l | -r | -e }

crontab -e

# 実行ユーザーを指定して実行
crontab -u user1 -e

sudo crontab -u root -e
設定形式
分 時 日 月 曜日 実行コマンド

*  *  *  *  *  SomeCommand_or_FilePath
設定項目 設定可能な数値範囲
0-59
0-23
1-31
1-12
曜日 0-7

・24時という設定値は無いので注意。24時は0時で設定
・月曜〜土曜 = 1 ~ 6
・日曜 = 7 or 0

記述が完了したら保存してエディタを閉じる

設定が更新された際のメッセージ
crontab: installing new crontab
cron設定の確認
crontab -l
バックアップ作成
# カレントユーザーのcron内容をバックアップファイル化
crontab -l > crontab1.bak

# ユーザー指定もできる(rootのcron内容をバックアップする場合)
sudo crontab -u root -l > crontab_root.bak
ファイル読込みでcron設定を変更
crontab crontab1.bak

# crontab1.bakの内容がそのままcrontab に反映される

ログ

cronのログファイル(初期設定)
/var/log/cron

ファイル内容を表示するにはroot権限が必要

cronログ閲覧
# ログ閲覧
sudo less /var/log/cron

# ログのリアルタイム表示
sudo tail -f /var/log/cron
 # or
sudo less +F /var/log/cron

ログ出力先の設定が通常と異なる場合は以下を確認

log設定ファイル
/etc/rsyslog.conf
ログ出力先設定の確認
cat /etc/rsyslog.conf | grep "cron.\* "
#less +/cron.\* /etc/rsyslog.conf
/etc/rsyslog.conf
cron.*                                                  /var/log/cron

rsyslogの設定 - Qiita

設定例

記述形式色々
# 毎日15時に実行
0 15 * * * echo "hoge"


# 実行間隔( / ) → 5分ごとに実行(0:00〜23:55)
*/5 * * * * echo "hoge"

## 0時〜22時(23時)までの間、毎時0分に2時間おきで実行(0:00, 2:00, 4:00, ・・・22:00)
0 */2 * * * echo "hoge"


# 複数指定( , で区切る) → 5時5分、10分、30分 に実行
5,10,30 5 * * * echo "hoge"

# 範囲指定( - ) → 3時10分、4時10分、5時10分、6時10分 に実行
10 3-6 * * * /home/piyo/hoge.sh

複合
# (- /)
# 毎時3〜58分の間、5分おきに実行(3分,8分,13分,18分,23分・・・58分)
03-58/5 * * * * echo "hoge"

## 21時〜24時までの間、5分毎に実行(21:00, 21:05, 21:10, ・・・ 23:55, 24:00)
0-55/5 21-23 * * * echo "hoge"
0 0 * * * echo "hoge"
設定ファイルを読み込ませる
# バックアップ
crontab -l > "crontab_$(whoami)_$(date +"%Y_%m_%d").bak"

# 設定ファイルを用意
echo '* * * * * echo "hoge"' > test_cron.conf

# cronに設定する(設定追記ではなく、ファイル内容で上書き)
crontab test_cron.conf

設定確認

ログを表示
less +F /var/log/cron
crondの起動状態確認
service crond status
crondを起動
service crond start
/etc/security/access.conf
# コメントアウトを外す

# User "root" should be allowed to get access via cron .. tty5 tty6.
#+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6# User "root" should be allowed to get access via cron .. tty5 tty6.
+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
sshdを再起動
systemctl restart sshd.service

cronにpamのエラーが出た際の回避方法 - エクセレンス★ブログ

設定ファイルの権限確認
#ls /var/spool/cron/ユーザ名
ls /var/spool/cron/root 

#-rw------- 1 root root 24  2月 10 02:50 /var/spool/cron/root

# 実行権限を付与
chmod +x /var/spool/cron/root

コマンド最終行には改行が必要(実行させるためには)

crontab -eで編集する分には特に意識する必要は無さそう

OKな例
* * * * * /bin/echo ugoku
* * * * * /bin/echo ugokuzoi
[EOF]
これだと最終行のコマンドは実行されない
* * * * * /bin/echo ugoku
* * * * * /bin/echo ugokan[EOF]

cronの設定ファイルは終端に改行が必要 - ngyukiの日記

% はエスケープ処理が必要

dateコマンドに限らず、(cron記述内での)エスケープ処理しない%改行扱いとなるみたい
manに載ってる常識という。。。

cronの最終行が実行されない原因と対処法 - Qiita

dateコマンド記載時の注意

Windowsからssh(Teraterm)などで接続して操作してる状態だと、\¥マーク表示)

ちゃんと動くやつ
* * * * * echo "$(date +"\%Y_\%m_\%d")"

dateコマンドで%表記を使用する場合、エスケープ処理しとかないと設定した処理の実行がそこで中断(改行)してしまう。

cron設定(エスケープ処理なし)
* * * * * echo "now $(date +"%Y_%m_%d")"
/var/log/cron.log
# cron実行時にコマンドが途中で終わり、正しく実行されない
Jal 69 05:55:01 cinta93 CROND[9856]: (user) CMD (echo "now $(date +")

なので、%の前に\を付けてエスケープ処理するように記述しておく

cron設定にエスケープ処理を追記
* * * * * echo "now $(date +"\%Y_\%m_\%d")"
cron上で正常にコマンド実行される
Jal 69 05:58:01 cinta93 CROND[9859]: (user) CMD (echo "now $(date +"%Y_%m_%d")")

(通常のコンソールでのコマンド実行時は % の前に \ があるとエラーになるので見落としがち。。。)

参考

crontabの書き方 | server-memo.net
cronの設定方法
初心者向けcronの使い方
crontabを設定しても実行されない時の確認ポイント · GitHub
cronが動かない BAD FILE MODE (/etc/crontab) – 猫のプロトコル
/etc/crontabと/etc/cron.d設定ファイルの書き方 | server-memo.net
cronのログを見よう | | Linuxエンジニアの備忘Log
クーロン(cron)をさわってみるお
cron を10分おき 2時間おきに実行する方法 | ex1-lab
時間をずらしてcronを実行する - Qiita

33
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
40