crontabコマンドを使ってシェルスクリプトを実行できない場合の対処法についてまとめています。
Mac OSで発生する症状についても解決策を記載しています。
コマンドの確認
そもそもコマンドが正しいか確認する。
シェルスクリプトは絶対パスで記述。
#コマンド例
*/2 * * * * ~/desktop/abc.sh
#または
*/2 * * * * Users/xxx/desktop/abc.sh
大前提として、指定の場所にシェルスクリプトがあり、中にコマンドが正しく記載されていること。
シェルスクリプト以外で実行できるか確認する。
$ crontab -e
以下コマンドを追加
*/2 * * * * echo "hello world" >> ~/desktop/hello.txt
2分毎にデスクトップにhello.txtを作成して、hello worldを追加していくプログラム。初回はファイルを自動作成する。
これが動かなければそもそもcronが正常に動作していない。
シェルスクリプトの実行権限確認
シェルスクリプトはデフォルトで実行権限が付与されていない。
実行するためには実行権限の付与が必要。
#実行権限付与(全ユーザー)
$ chmod +x XXX.sh
#実行権限の状態を確認
$ ls -al XXX.sh
-rwxr-xr-x@ ~以下略
xxx.shにはシェルスクリプトのパスを入れる。
ルートユーザー、グループ、その他の権限に「x」が追加されていればOK。
以上の設定をしてもpermissionがないと表示される場合は、フルディスクアクセスの設定が必要。
【Mac】フルディスクアクセスにcronを追加する
上記3つがクリアしている場合、mac osの「フルディスクアクセス」というセキュリティシステムが影響している可能性が高い。
以下手順でcronのアクセスを許可する。
1 システム環境設定を開く
2 セキュリティとプライバシーを開く
3 フルディスクアクセスを選択する
下のカギマークをクリックし、変更を許可する。
4 command+shift+G でフォルダの場所選択ダイアログを開く
5 /usr/sbin/cron を入力し、移動をクリックする
/sbin/はコマンドの管理フォルダ。
コマンドがある/usr/bin/cronではない。
6 開くをクリックしcronを追加する
以上でフルディスクアクセスの設定が完了。
ファイルを実行すれば正しく動くはずです(私はただしく動きました)