20
18

More than 3 years have passed since last update.

AmazonLinuxでcron実行させる(Linuxで設定)

Last updated at Posted at 2020-11-11

やること

AmazonLinuxで、cron設定をして、AWSコマンドを実行させます。
前提としてそのコマンドのIAM RoleがEC2に対して必要です。
今回は詳しい内容までは書きません。

OS

Linux/Unix, Amazon Linux 2018.03

#cat /etc/os-release
NAME="Amazon Linux AMI"
VERSION="2017.09"
.
.

cronファイルの書き方

# cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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

こちらを参考にしました。
https://kb.iu.edu/d/afiz

実行させるファイルを作成

東京のEC2 Arnリストを出力するAWSコマンドを実行させてみる

!/bin/sh
/usr/bin/aws ec2 describe-instances --region ap-northeast-1 |grep Arn |awk -F \" '{print $4}' >> /root/ec2-file

ここで必ず、ファイルの実行を試してエラーにならないかチェックしておく

cron設定する

crontab -eで編集
動作テストしたいので毎分実行させておく

* * * * * bash /root/awscron

設定完了

ログ確認

tail -f /var/log/cron

で実行ログが確認できる

設定削除

要らなくなったら、設定の削除お忘れなく
crontab -rで設定削除


-r はcrontab -eで設定したもの全てを削除してしまうので、もう運用してるものであれば
-e でコメントアウトでOKです

Tips

crontab -eをrootユーザで行うと、/var/spool/cron/rootが編集される
そのため、この場合従来通りにユーザ指定は不要。

crontabによる編集ではない方法

上記の通り、オペミスするとcronファイルが消えたりするので、crontabを使用しない方法を記載

cron設定用のファイルは、/etc/cron.d/以下にファイルを作成する

例えば
/etc/cron.d/Crontest

* * * * * root sh /root/awscron

※ユーザ指定可能
これで、実行されていれば完了。
デフォルトで /var/spool/mail/rootに実行過程のログが吐き出される。

まとめ

今回はシンプルに設定することだけを記載しました。
今後もっと詳しくまとめてみます。

他、参考にしたサイト

cron - wikipedia
https://en.wikipedia.org/wiki/Cron

crontab -r の危険性
https://qiita.com/NACK/items/c0c0feda4e7a8030346f

20
18
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
20
18