おりそ.doc

自分のしたことをアウトプットする場所

【備忘録】AmazonLinux2023にcronを導入する

経緯

let'sEncrypt をcron で定期更新をしたかった。 cron 入ってるだろうとたかを括っていたが、初期状態では入ってなくて、自分で入れなきゃいけないことに気付いた。 絶望。 でも頑張る。

環境

  • AmazonLinux2023
  • Windows10+GitBashからSSH

やること

  • cron 導入
  • rsyslog 導入

cron のログを書き込むためにrsyslog が必要らしい。

1. インストール各種

一般ユーザーの場合は前頭に「sudo」を付けよう

# dnf install cronie-noanacron
# dnf install rsyslog 

2. 確認

  • cron の確認
# which crond
/usr/sbin/crond
  • rsyslog の確認
# which rsyslogd
/usr/sbin/rsyslogd

こんなんで確認できるかなあ まあ入ってそうだなってのは分かった。

ファイルも観とこうか

  • cron のファイル群
# ls -al /etc/ | grep "cron"
drwxr-xr-x.  2 root root       38 Aug 12 21:04 cron.d
drwxr-xr-x.  2 root root        6 Jan 31  2023 cron.daily
-rw-r--r--.  1 root root        0 Jan 31  2023 cron.deny
drwxr-xr-x.  2 root root        6 Jan 31  2023 cron.hourly
drwxr-xr-x.  2 root root        6 Jan 31  2023 cron.monthly
drwxr-xr-x.  2 root root        6 Jan 31  2023 cron.weekly
-rw-r--r--.  1 root root      495 Aug 16 05:08 crontab
  • rsyslog のファイル群
# ls -al /etc/ | grep "rsyslog"
-rw-r--r--.  1 root root     3223 Feb  2  2023 rsyslog.conf
drwxr-xr-x.  2 root root       31 Aug 16 04:48 rsyslog.d

ファイル達もありそう。

3. 各種設定

  • rsyslog の設定

cron の設定が入っているか確認

# cat /etc/rsyslog.conf | grep cron
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# Log cron stuff
cron.*                                                  /var/log/cron

なんかありそう。

  • cron の設定

とりあえず毎分「date」コマンドを叩くようにしてみる

# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

*/1 * * * * root date

書き方は下の感じ

分 時 日 月 曜日 ユーザー コマンド

書き方詳細はこの記事が分かりやすかった

cronの書き方を学ぶ - Qiita

あと大事なこと!

  • crontab 末行に空白を入れる

これをしなくて下のようなエラーが出ました

crond[457251]: (root) BAD FILE MODE (/etc/crontab)

そんでからログを確認すると

[root@ip-10-0-0-10 rsyslog.d]# tail /var/log/cron
Aug 16 05:29:01 ip-10-0-0-10 CROND[459554]: (root) CMD (date)
Aug 16 05:29:01 ip-10-0-0-10 CROND[459553]: (root) CMDOUT (Wed Aug 16 05:29:01 JST 2023)
Aug 16 05:29:01 ip-10-0-0-10 CROND[459553]: (root) CMDEND (date)
Aug 16 05:30:01 ip-10-0-0-10 CROND[459614]: (root) CMD (date)
Aug 16 05:30:01 ip-10-0-0-10 CROND[459613]: (root) CMDOUT (Wed Aug 16 05:30:01 JST 2023)
Aug 16 05:30:01 ip-10-0-0-10 CROND[459613]: (root) CMDEND (date)
Aug 16 05:31:01 ip-10-0-0-10 CROND[459620]: (root) CMD (date)
Aug 16 05:31:01 ip-10-0-0-10 CROND[459619]: (root) CMDOUT (Wed Aug 16 05:31:01 JST 2023)
Aug 16 05:31:01 ip-10-0-0-10 CROND[459619]: (root) CMDEND (date)

なんかできてそうなのでヨシ!

参考文献

  • cron 導入

Amazon Linux 2023 に Let’s Encrypt をインストールする | ソフトウェア雑記

  • rsysrlog 導入

cronを実行したログを出力する設定 - Qiita