さくらのレンタルサーバではcronの設定がコントロールパネルからだと5個までしかできません。
運営する各サイトでバッチ処理的にプログラムを動かし、APIからデータを取ったりしておりますので、5個というのはさすがに少なすぎる印象がありました。
ところが、コントロールパネルを経由せずに、SSHでサーバに接続して直接crontabを編集すれば、6個以上のcronを設定することができることが分かりましたので、この記事ではシェルコマンド付きで、その方法をご紹介したいと思います。
cron設定数制限
トラブル続きの某社VPSサーバを移転して以降、さくらのレンタルサーバにお世話になっておりましたが、コントロールパネルも結構凝ったものが用意されていたので特に困ったことはありませんでしたが、一点だけ気になっていたところが、cronの設定がコントロールパネルからだと5個までしかできないという点でした。
バッチ処理が多いdtn.jp
dtnディレクトリのカテゴリHTML更新やランキングデータ更新、キーワードツール用のAPIデータ取得など、cronでバッチ処理的に動かしているプログラムが10本以上は存在したため、5本しかダメということになると、複数処理を1本に詰めこまないと日次処理ができなくなってしまいそうです。
処理の集約化による課題
ある程度の処理は集約するよう頑張ってみましたが、処理が長く複雑になればなるほどコケる回数も増えてしまい、、そろそろ限界という状態になっておりました。
そこで、どうにかできないかと調べたところ、コンソール経由なら簡単に追加できるということが分かりましたので、早速やってみたところ、本当に簡単にできてしまいました。これまで頑張って複数処理を1バッチにまとめてきたのにかなり拍子抜けしました。
SSHコンソールでの追加
やり方は簡単で、ttsshなどのコンソールで接続し、cronをコマンドで直接編集するだけでOKです。
さくらレンタルサーバーのSSH接続設定が分からなければ、さくらのマニュアルにやり方がしっかりまとめてありますので、まずはそちらをご参照下さい。
crontab -eで編集
サーバに接続ができたら、レンタルサーバプランではroot権限がない一般ユーザにしかなれないので、crontab -eコマンドを使ってcronの編集に進みます。
% crontab -e
crontab -e コマンドを叩くと、viエディタっぽいものが起動しますので、あとは記述済のcronの設定を真似て必要な設定を追加していけばOKです。
viの操作
viの操作コマンドは結構色々ありますが、下のコマンド程度を使えば最低限の記述はできると思います。
コマンド | 操作内容 |
:q | セーブせずに終了 |
:q! | 変更した行もセーブせずに終了 |
:w | セーブするが終了しない |
i | 現在のカーソル位置から挿入 |
A | 現在行の末尾に追加 |
x | 1文字削除 |
viの操作モードが分からなくなったりした時は、とにかくESCキーを連打して、:q押せばなんとかなると思います。恥ずかしながら、私もいつもこのパターンです。
必要なcronを記述し、:wで上書きをして整合性やパーミッションチェックにも問題ないとなれば、下記メッセージが出て無事cronの追加完了となります。
% crontab: installing new crontab
コントロールパネルでチェック
念のため、終了後にコントロールパネルでCRONの設定部分を見ると、6個目のcronがしっかり追加されておりました。
コントロールパネルのCRONの設定注意書きには、 「サーバ運用に支障をきたす場合は、予告無く設定解除、機能制限することがあります」とあるので、本数をメチャクチャ多くしたりすると削除されるかもしれないですが、数本増やす程度であれば大目に見てもらえるようです。
これでバッチ処理の分散化ができるので助かりました。
おわりに
cronの記事に全く関係ないですが、今日から消費税10%となりました。長々続いたシステムの増税対応に皆さんもグッタリしていると思いますが、明日から本当にどうなるのか気にはなります。