ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    スポンサーサイト

    このエントリーを含むはてなブックマーク はてなブックマーク - スポンサーサイト あとで読む
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    CentOSでcronを使う方法

    このエントリーを含むはてなブックマーク はてなブックマーク - CentOSでcronを使う方法 あとで読む
    Webサイトのデータ更新を自動で行うために、cronを使いたい。

    cron(クーロン)は、プログラムを定期的に自動実行するための仕組みです。
    CentOSでcronを使う方法を調べてみました。

    Linuxコマンドブック ビギナーズ 第3版
    川口 拓之
    ソフトバンククリエイティブ
    2010-04-30
    1995円
    ★★★★★


    以下、KDDIのCloudCore VPSで操作した場合の話です。

    ●cronとは?
    crontab - Wikipedia

    crontab(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系OSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。
    標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。
    この記録を元に定時になると、その命令内容を読み取り、実行が行われる。
    cronという名称はギリシア語のクロノス (χρόνος)に由来するという説がある(Command Run ON の略という説も)。
    日本ではクーロンという読みが慣習的に広く用いられているが、海外では通常クロンまたはクローンと発音する。

    一般にcrontabコマンドで編集されたスケジュール内容は、crondデーモンにより実行される。
    crondはバックグラウンドで稼動し、毎分ごとに実行すべきスケジュールがないか確認し、もし実行すべきジョブがあれば、それを実行する。
    このジョブは「cron job」とも呼ばれる。




    ●cronの確認
    まず、
    ・cronがインストールされているか?
    ・cronが動作しているか?
    の確認を行います。

    (参考)CentOS で cron を設定する方法 | ウェブル

    ・動作の確認

    # /etc/rc.d/init.d/crond status
    bash: /etc/rc.d/init.d/crond: No such file or directory


    エラーメッセージが出た。
    cronがない?

    ・インストールの確認

    # crontab -e
    bash: crontab: command not found


    クーロンタブを編集しようとしたら、そんなコマンドないってさ。
    環境変数のパスが設定されていないか、そもそもcronがインストールされていないか、のどちらか?

    # whereis cron
    cron: /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly


    cronに関するファイルの所在を調べたら、一応、それっぽいのはあった。

    どうなってんのさ?

    …ということで、cronのインストールと設定を最初からやってみることに決定!!!


    ●cronのインストール
    (参考)
    cronのインストール - tech tech -テクテクブログ- (2010-10-11)
    cronのインストール( Linux : Fedora RedHat CentOS ) - サンプルコードによるPerl入門 (2009-01-15)
    CentOS5へのcrontabインストール - とあるSEの戯れ言 (2008-12-04)

    ・パッケージ名

    # yum install -y crontabs vixie-cron


    「crontabs」と「vixie-cron」を入れれば良いらしい。

    rpmコマンドでパッケージがインストールされたかを確認します。

    # rpm -q vixie-cron



    ・改めて動作確認

    # /etc/rc.d/init.d/crond status
    crond is stopped


    今度は、「止まっている」という表示が出た。

    ・cron起動

    # /etc/rc.d/init.d/crond start
    Starting crond: [ OK ]



    ・自動起動の確認

    # chkconfig --list crond



    ランレベル2345がonになっていない場合はonにする。(推奨設定は、サービス起動スクリプトにあります。)

    # chkconfig --level 2345 crond on



    cf. cronサービス起動スクリプトの見方

    # vi /etc/init.d/crond



    サービスそのものとして登録されていない場合は追加する。

    # chkconfig --add crond



    これで、cronを使う準備はOKです。


    ●crontabの編集
    次に、自動実行のスケジュールを編集します。

    # crontab -e



    (参考)
    cron & シェルスクリプト : 3流プログラマのメモ書き
    cron の設定ガイド

    (1) 定期実行するPHPスクリプトを用意
    (2) PHPスクリプトを実行するbashのシェルスクリプトを用意
    (3) クーロンタブで、シェルスクリプトの定期実行を指定
    という流れで指定してみます。
    (=XREAを使っていたときからの名残で。)

    (1) Webサイトのデータを更新するPHPスクリプト
    場所: /var/www/cgi-bin/update.php ←とりあえず、ここでいいかな?
    内容: <?php (更新の処理) ?>

    (2) PHPスクリプトの実行を指定するシェルスクリプト
    場所: /var/www/cgi-bin/cron.sh
    内容: シェバンと、PHP本体のパス+更新スクリプトのパス

    #!/bin/sh
    /usr/bin/php /var/www/cgi-bin/update.php



    (参考)シバン (Unix) - Wikipedia

    シバンまたはシェバン (shebang) とはUNIXのスクリプトの#!から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。

    パスを直接指定する。Bourne shellの例。
    #! /bin/sh



    (3) クーロンタブの編集

    30 * * * * /var/www/cgi-bin/cron.sh



    「cron.sh」は、毎時30分に実行=1時間に1回実行される。



    以上で、cronによるWebサイトの自動更新はOK!
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/837-ac528bf5

    FC2Ad

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。