【Mac/Python】cronで[Errno 1] Operation not permittedエラー
MacでPythonのプログラムをcronで定期実行しようとしたら、[Errno 1] Operation not permitted...というエラーが出ていて実行できない...。
そんな時の解決方法です。
僕が直面した事象を具体的に書いておくと、
3分おきに定期実行しようとcrontab -eでこのように記述して、
~ $ crontab -l
*/3 * * * * /opt/anaconda3/bin/python /Users/me/Desktop/cron.py
保存すると「crontab: installing new crontab」と表示され、設定自体は上手くいきました。しかし待てど暮らせど実行されている気配がない。
エラーログ を確認するため、crontab -eで再度以下のように編集しログを吐くようにして、
~ $ crontab -l
*/3 * * * * /opt/anaconda3/bin/python /Users/me/Desktop/cron.py >> /Users/me/Desktop/error.log 2>&1
しばし待ち、プログラム実行タイミング後を見計らってerror.logの中身を見ると、このエラー↓が出て実行できていなかった...という状況でした。
~ $ cat error.log
/opt/anaconda3/bin/python: can't open file '/Users/me/Desktop/cron.py': [Errno 1] Operation not permitted
"not permitted"という単語から想像できるように権限の問題なので、cronプログラムからプログラムファイルを実行をする権限を付与したら解決しました。
Mac/Pythonのcron実行でOperation not permittedが出る時の対処手順
以下、cronに権限を許可する設定手順です。
[リンゴ] > [システム環境設定]
[セキュリティとプライバシー]をクリック
①プライバシー > ②フルディスクアクセス > ③鍵マーク(パスワード入力) > ④+マークをクリック
+マークを押すとファイル選択画面がペロッと出てくるので、
- command + shift + Gを押す
- 現れたパス入力欄に「/usr/sbin」と入力し「移動」
sbinフォルダ内の「cron」ファイルを選択し「開く」
「cron」が追加されたことを確認し、「鍵マーク」をクリックして完了。
これでエラーが解消され無事cronでスクリプトが実行されるようになりました。