#概要
あるshellスクリプトを定期実行するため、AWSでcrontabを使いました。
一つハマりポイントがあるので、記録として残しておきます。
#手順
####1 実行権限の付与
sudo chmod +x hoge
sudo をつけずに実行してもエラーが出ませんが、実行権限は付与されません。
緑色になっていることを確認しましょう。
####2 パスの修正
実行はホームディレクトリから行われると考えます。
パスはすべて絶対パスにしておくか、
以下のような一文を各シェルスクリプトに追加する工夫をします。
cd `dirname $0`
####3 設定ファイルの作成
ツールでの作成をおすすめします。
また、設定はcrontab -e
で変更できますが、
ファイルを別に作成し、それを上書きした方が、バックアップが残せ、消去してしまったり、
誤動作があった場合でも対応できるため、多くの人が推奨しています。
例)毎分実行する場合
* * * * 0 /home/ec2-user/environment/実行ファイル1.sh
* * * * 0 /home/ec2-user/environment/実行ファイル2.sh
* * * * 0 /home/ec2-user/environment/実行ファイル3.sh
####4 crontabへの登録
crontab crontab.txt
####5 実行の確認(デバック)
ターミナルを使用していると、実行結果がメールで届いたとの通知(You have new mail in ディレクトリのパス
)がくるので、正常に実行できているか確認しましょう。
cat ディレクトリのパス
#ハマりポイント
AWSの認証の都合上、ルートユーザーが一定の期間ごとにログインしないと、エラーが起きて自動実行されません。
ルートユーザーがログインする以外で解決策分かる人いたら教えてください。
The provided token has expired