手元で動くスクリプトがcronで動かない時にやったこと | www.yoshiislandblog.net
Close

手元で動くスクリプトがcronで動かない時にやったこと

エラー

$ 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
%d bloggers like this: