##基本事項のざっとした説明
※細かいことは他にも色々あるので必要な人は調べてください
- cron --- 定期実行するデーモン
- crontab --- cronのスケジュール設定する
実行環境 Linux Mint(19.1 Tessa) ,EC2(Amazon Linux2)
以下のコマンドで現在の設定内容を表示できる
$crontab -l
上記コマンドをdockerの中とMacで実行したが、コマンドが存在しなかったので(※後で確認したらMacにはありました。。。表示が少し違っていたので見間違いと思われます)
とりあえずLinux Mint(19.1 Tessa)のPCで試してみた。crontabが使えてかつ未設定の場合は以下のように表示される。
以下のコマンドで設定の編集ができるようになる、最初はエディタの指定を求められる。(今回はVimに設定した。nanoがおすすめされていた)
$crontab -e
コマンドは 分、時、日 、月、曜日、コマンド
の順番で記載し、半角スペースを空ける。
以下は10分毎にシェルを実行する設定
*/10 * * * * /home/user/test.sh
cronの実行ログを確認するコマンド
- Linux Mintの場合
grep CRON /var/log/syslog
- EC2の場合
sudo grep CRON /var/log/cron
今回遭遇したトラブルと対応方法
###トラブル① エラー No MTA installed, discarding output
設定してもまったくなにも起きなかったので実行ログを確認したところ以下のような表示が出ていた。
調べたところ、UbuntuとUbuntuがベースのLinux Mintで起きる事象であるとのこと。
postfixをインストールすると上記のエラーは解消された。
sudo aptitude install postfix
###トラブル② シェルのパーミッション
トラブル①を解消するも全くシェルが動かなかった。
ふとファイルのパーミッションをls -l
コマンドで確認してみると-rw-rw-r--
だった。
実行権限を付与した。(とりえず動かすための権限付与なので必要に応じて変えてください)
chmod +x test.sh
正常にシェルは動作した。
##補足
ちなみにcronの動作確認をしたかっただけなので確認用のコマンドは以下のように簡単なものを使用した。
echo "test cron1" >> /home/owner/aaa.txt