2010年5月12日水曜日

crontab = UNIXで定期的にコマンド実行する方法

UNIX
レンタルサーバーで定期的な自動処理がしたくなった時、2つの方法があります。

o 1つは、CGIプログラムを作って、外部からCGIプログラムを定期的に呼び出す方法。
   + ブラウザから手動実行する事も出来ます。
   + 普通に作ると誰でも実行出来ますので、いたずら防止などの対策が必要になります。
o もう1つは、Windowsの「タスク」のようなものに、登録する方法です。
   + 対応するUNIXコマンドの名前は crontab。
   + 実行条件を曜日毎に変える事も簡単に出来る、便利なコマンドです。

# この他に、ログイン、処理実行、ログアウトの手作業を自動化する方法もあります。
#


**** crontabを使用出来る条件
o sshもしくは telnetなどでログイン出来る事。
o かつ、crontabによるジョブ登録を、サーバーの管理者が禁止していない事。
o 後は、試してみれば分かります。


**** 手順
** crontabコマンドの使い方は「 man crontab 」
o ジョブの一括登録は、「 crontab (ファイル名) 」。
o ジョブの一括削除は、「 crontab -r 」。
o ジョブの一覧表示は、「 crontab -l 」。

o ファイルの作成は、Windowsのメモ帳で編集したファイルをサーバーに転送する方法もあります。
o ジョブ(= タスク)は、登録した人の権限で動くみたいです。
   + 試した時は、実行ファイルのパーミッションを 500にしても動きました。
o ジョブ(= タスク)の起動時、最低限の環境変数しか設定されていません。
   + 必要に応じて、呼び出した実行ファイル側で環境変数を設定します。


**** 登録するファイルの書き方
o 「crontab」でWeb検索すると、沢山出てきます。
o システムによっては、サポートしていない書き方がありますので、確認と対応が必要です。
o 例えば、2時間に1回起動させたい時、「*/2」と書いても動かない場合がありました。
   + この場合は、2時に実行、4時に実行、などと、ジョブ(= タスク)を列挙すると解決します。
o ファイルの中に $HOMEと書いても展開してくれない場合もありました。
   + フルパス(= 完全な書き方)で記述すると、解決します。

** 書き方の例
-------------------
39 * * * * /home/miku/test01.sh
9 3 * * 0 /home/miku/sunday.sh
0 0 9 3 * /home/miku/miku_day.sh
-------------------
o 書式は先頭から、分、時、日、月、曜日(0が日曜日)、実行したいコマンド。半角空白かタブで区切ります。
o システムによって拡張があります。詳しくは、使いたいサーバーで「man crontab」。
# test01.sh = 毎時39分に実行します。
# sunday.sh = 日曜日の3時9分に実行します。
# miku_day.sh = 3月9日の0時0分に実行します。

** コマンドの登録例
o 例えば、上で書いたものを、ファイル名 mycron.txtで保存します。
o 既存の登録の有無を確認します。「crontab -l」
   + 必要なコマンドは、mycron.txtにも追加しておきます。
o 登録を全部削除したい時は、「crontab -r」。
   + 自分が登録したコマンドだけ消えます。
o 登録します。「crontab mycron.txt」。
o 確認します。「crontab -l」。



==
関連ページ:
    ▼UNIX
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    > locale = UNIXで地域設定(ロケール)について確認する
(2010年5月12日追加。書き方の例と実行例)

お知らせなど

o 最新のお知らせ
携帯電話向けの表示に暫定対応しました
BloggerサービスのURL規則変更の影響と対応方法について(特に、FirefoxのRequestPolicyプラグイン等をご利用の方へ)

** 雑談
MAGIX Music Maker 2013ドイツ語版など登場
▼2011年の雑談
▼2010年の雑談

o このブログの目的
はじめに

o お知らせ
このブログについて
このブログの背景イラストについて
to_dkのzoome日記ご覧の方へ


==
関連ページ:
    ▼目次
    >> ▼制作メモ

このブログについて - お知らせなど

お知らせなど
このブログでは、to_dkの作品と、作品制作の過程で生まれたメモを公開しています。
このブログで使っている背景イラストと居眠りミクさんの説明はこちらです


**** はじめにお読み下さい。

o リンクやブックマークはご自由にどうぞ。
o ブログの内容は無保証です。
o 投稿記事の内容は、後で変更する事があります。
   + 普通のブログとは異なり、記事の内容を最新の情報に置き換える事があります。
   + この他、誤字などを発見した時に訂正します。
   + 記事の内容を変更した時は、なるべく更新日を記載します。
o ブログが重い時は、コメント機能を無効にする事があります。
   + その間に伝えたい事がありましたら、▽YouTubeにあるto_dkチャンネルのメッセージ機能でお願いします。

o 記事の中に、商標または登録商標が混じっている事があります。


o このブログの右上にある操作記号
「>」 = 次の記事。
「<」 = 前の記事。
「▲」 = 親記事に戻ります。

o リンクの説明記号
何もなし = 普通の記事です。外部リンクを見つけましたら、▽を付ける予定です。
「▼」 = 子記事を持つ記事です。
「▽」 = 外部リンクです。このブログ以外に移動します。


**** 以下、細かい規則です。興味のある方はどうぞ。

o 目次ページでは、コメントを書き込めないようにしました。
o また、コメントを想定していない通知ページでも、コメントを書き込めないようにしました。
   + 理由は、これらのページにコメントがあると、辿る度に気になるからです。
o 商品画像などを使うページでは、背景画像を変更する予定です。(= まだ該当ページはありません。)
o 記事に含まれる広告(予定)について
   + 本文中に、商品画像を使った説明を追加する予定です。広告というよりも、記事の説明目的です。
   + 右下の欄辺りに、広告か何かを入れるかもしれません。文字の記事だけでは寂しいですから。


**** このブログの歴史について
o このブログの前身は、2008年からzoomeと@wikiを中心に公開してきた、to_dkの制作メモです。
o 量が増えて、問題が出てきましたので、主な制作メモをこのブログに移しました。


==
関連ページ:
    ▼お知らせなど
    ▼目次
    > このブログの背景イラストについて
    to_dkのzoome日記ご覧の方へ
(2010年6月26日追加。このブログの歴史について)
(2010年5月27日追加。ページ背景変更に伴う、イラスト作者名などのご案内)
(2010年5月17日追加。目次ページのコメント欄非表示について)