Help us understand the problem. What is going on with this article?

Ubuntu16.04(さくらVPS)で1からcronの設定をし、pythonプログラムを定期実行する

More than 3 years have passed since last update.

目的

Ubuntu上にあるpythonのプログラムを定期的に自動実行したいです。
cronを1から設定しました。

環境

OS : Ubuntu16.04 (さくらVPS)
python : Version 3.5

CRONの初期設定

操作1) CRONの動作確認

sudo service cron status

色々CRONの状態が表示されていますが、
「Active: active(running)」と表示されていればOKでしょう。

動いていない場合は、

service crond start

で起動します。

操作2) cronの設定ファイルにジョブを登録

cronの設定ファイルであるcrontabは以下のコマンドで実行できます。

crontab -e

ただし、キーボード上でeの隣にあるrを誤って押すと、「crontab -r」がcrontabの設定を全て初期化してしまいますので、「crontab -e」を頻繁に使うのは危険です。

crontab -eを使わない方法は複数ありますが、私は以下の手順でバックアップを取りながら別で編集をしています。

crontab -l > ~/crontab #バックアップ
vim ~/crontab        #バックアップを編集
crontab < ~/crontab  #本体に上書き

crontabの書き方については、他のサイトで詳細書いてありますので、そちらを参考にすると良いでしょう。例えばこちらなんかが分かりやすかったです。

なおpythonプログラムを実行する時は、プログラムの前に、pythonが格納されているパスを書かなければいけません。

例えば、毎分ごとにtest.pyを実行したい場合は、

* * * * * /<path_to_python>/python3 /<path_to_file>/test.py 

となります。

pythonへのパスが分からなければ、

which python3

で調べられます。

ログを出力したい場合は、

* * * * * <path_to_python>/python3 /<path_to_file/test.py >> /<path_to_log>/test.log 2>>&1

で良いでしょう。

操作3) ファイルの権限を変更する

基本的には操作2までの設定で良いのですが、私の場合はPermission Deniedのエラーが出ていました。CRONの実行権限がrootでファイルの所有者が別のユーザだったため、権限設定の関係でPermissionがおりなかったという状態です。

とりあえず、「所有者:root, 権限700」に変更します。

chmod 700 test.py
chown root:root test.py

以上で、test.pyは定期的に自動実行されるようになりました。

gano
ブロックチェーン関連のプログラミングしてます
https://www.facebook.com/gano.global
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away