この記事は3年以上前に書かれた記事で内容が古い可能性があります
手元で動くスクリプトがcronで動かない時にやったこと
2017-06-04
エラー
$ cat /var/log/cron.log (CRON) info (No MTA installed, discarding output)
MTA入れる
# apt-get install postfix
エラーは無くなったが、実行されない
$ cat /var/log/cron.log CRON[22130]: (yoshi) CMD (bash ~/execution.sh)
エラーログが出るようにする
$ crontab -l 15 21 * * * bash ~/execution.sh > error.txt 2>&1
スクリプトで実行するpythonファイルが問題のよう
$ cat error.txt File "~/slack_post.py", line 18 SyntaxError: Non-ASCII character '\xe6' in file ~/slack_post.py on line 18, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
pythonファイルに以下入れる
# coding:utf-8
モジュールが入っていないとなっている(手で実行するとできるので入っている)
$ cat error.txt ~/execution.sh: line 4: pyenv: command not found Traceback (most recent call last): File "~/slack_post.py", line 4, in from slackclient import SlackClient ImportError: No module named slackclient
crontabにpathを通して解決した
PATH=~/.pyenv/shims:~/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games