ある時間が来たらpythonのコードを実行したいと思い調べてみたらcronというものがあることを知りました。
ノートPCのMacで調べながらやって見たらできたのでUbuntuでもやってみようと思ってやってみたところ、
できなかったので質問させてください。
###実行環境
Ubuntu16.04 LTS
###やったこと
/etc/rsyslog.confで/var/log/cron.logのコメントアウトを外しました。
次に、cronの設定をしました。
$ crontab -e
起動したエディタの編集内容は以下です。
SHELL=/bin/bash PATH=/home/user-name/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin RAILS_ENV=production */3 * * * * /home/user/anaconda3/bin/python /home/user/Desktop/hello.py >> /var/log/cron.log 2>>&1
実行したいpythonファイル:hello.pyの中身は以下です。
import matplotlib import matplotlib.pyplot as plt print('Hello') plt.figure() plt.plot([1,2,3],[1,2,3]) plt.savefig('/home/user/Desktop/exam.png') plt.close()
シンプルに文字列の出力と、ただの標準出力だけでなくモジュールのインポートも含めて動作確認するために画像の出力をするプログラムにしています。
cron.logの出力
$ cat /var/log/cron.log と打つと以下のように表示されました。
Sep 14 14:20:01 user-X9DA7 CRON[13525]: (user) CMD (python /home/user/Desktop/hello.py >> /var/log/cron.log 2>>&1) Sep 14 14:20:01 user-X9DA7 CRON[13524]: (CRON) info (No MTA installed, discarding output)
これはcronはちゃんと起動していて、コマンドも指定したものをやろうとはしているということなのでしょうか?
2行目のは出力やエラーを通知するメールの宛先がない(=MAILTOの設定がない)だけで問題はないということを調べました。
試したこと
いろいろなことをネットで調べて、
・テストのつもりで1分後に実行しようとするとうまく行かない→3分おきに実行するように設定
・$ /etc/init.d/cron restart で再起動も試した
・PATHは、$ echo $PATH でPC本体で通っているパスを確認し、とりあえず全部入れたのでpythonへのパスやモジュールのインポートは問題ないはず
など、いろいろなことは試したのですが、グラフがデスクトップに保存されていません。
初心者なので、何か重大な設定の忘れや、誤っているところがあるかもしれません。
どなたか、解決策をご存知でないですか?

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/19 04:52