shantiworks

2012.07.14

さくらインターネットレンタルサーバでcron設定をする

コントロールパネルからcron設定に入ってGUIで設定する

去年登録したcron設定はこれでいまも問題なく動いてるんだけど
/usr/local/bin/php /home/アカウント名/www/abc/cron.php

今回同様に追記したら動かなかった。
pythonの外部モジュールを利用するプログラムをcronで実行するときは、環境変数の値設定が必要ってのが要点。

で、これら実行したら動いた。
・cronの書き方変更
cd /home/アカウント名/www/abc ; /usr/local/bin/python cron.py
cd 動作させるファイルまでのパス ; プログラムまでのパス 動作させるファイル名

・動作させるファイルに実行権限与える 755 または 705
・外部モジュール読み込むファイルならそれらのパーミッションも変更
・コントロールパネル – cron設定画面下の環境変数 環境変数の値のところを追加
環境変数 PYTHONPATH
環境変数の値 /home/アカウント名/lib/python

さくらインターネットのよくある質問にこんなこと書いてあった
【動作しない例】 /usr/local/bin/php /home/アカウント名/プログラム名
【動作する例】 cd /home/アカウント名/www/programs ; /usr/local/bin/php プログラム名

「さくらのレンタルサーバ」や「さくらのマネージドサーバ」ではCGIプログラムやCRONの実行はユーザ権限にて行われます。

2.1. ファイル、ディレクトリの設定

CGIの拡張子

.cgi

PHPの拡張子(※1)

.php

プログラムを設置するディレクトリ(フォルダ)

ドキュメントルート(/home/アカウント名/www/)以下であれば不問

ファイルパーミッション

755 または 705 のいずれか

ディレクトリパーミッション

755 または 705 のいずれか

cgi-binディレクトリ

不要

.htaccessの設定

不要

推奨するファイルロック関数

flock

※1?スタンダードプラン以上で利用できます。

2.2. プログラムのコマンドパス

perl

/usr/bin/perl

ruby

/usr/local/bin/ruby

php(※1)

/usr/local/bin/php

Python

/usr/local/bin/python

sh

/bin/sh

csh

/bin/csh

sendmail

/usr/sbin/sendmail

gcc

/usr/bin/gcc

gzip

/usr/bin/gzip

zip

/usr/local/bin/zip

unzip

/usr/local/bin/unzip

convert

/usr/local/bin/convert

nkf

/usr/local/bin/nkf

uuencode

/usr/bin/uuencode

uudecode

/usr/bin/uudecode

procmail

/usr/local/bin/procmail

※1?スタンダードプラン以上で利用できます。
引用元: さくらレンタルサーバ CGI・PHP・SSI について

ちなみに6件以上のcrom登録はGUIからはできないからCUIから。

cron内容の参照:
crontab -l

cronの編集
crontab -e

あとはviで記述。書き方は下記。

**フィールド
**

指定できる値

0-59, *

時間

0-23, *

0-12, *

0-12, *

曜日

0-7, *

設定内容

入力例

曜日

毎時 0 分に実行する

0

*

*

*

*

2 時間おきに実行する

*

*/2

*

*

*

0 時と12 時に実行する

*

0,12

*

*

*

0 時から 12 時までの毎時 15 分に実行する

15

0-12

*

*

*

毎月 1 日の 0 時 0 分に実行する

0

0

1

*

*

毎月 1 日または毎週金曜日の 23 時 59 分に実行する

59

23

1

*

5

引用元: くらレンタルサーバでのcronの設定方法 .