▼完全無料で安心のモバコイ
関連シーソラス辞典
検索キーワード= 株価
優先キーワード=
[ 51] cronによる日時指定のWeb更新、メール送信
[引用サイト]
http://keijisaito.info/arc/cron/cron_use.htm
あらかじめ日時指定をしてWeb更新、メール送信、ログ(バックアップ)保存ができるcronの使い方を説明します。 シェルスクリプトやPHPの書き方を知らなくても、必要な箇所だけを修正してテンプレートとして利用できます。 cronはUNIX(Linux)系のOSで定期的にコマンドを実行する仕組みです。cronを使うと、その時点にPCを操作せずとも、あらかじめコマンドを発注しておくことができます。cronが使えるWebサーバでは、以下のようなことができます。 cronは指定された日時にLinuxコマンドで書かれたシェルスクリプトを読み込みます。このため、cronを利用するためにはLinuxコマンド等を学ぶ必要があります。しかし、限られた用途とはいえLinuxコマンドをゼロから学ぶのは面倒です。このページにはLinuxコマンドやメール送信用PHPのテンプレートをおいてあります。Linuxコマンドを知らない方でも、必要な部分を書き換えることで、cronを利用して上記の[A][B][C]を行うことができます。 Windowsではファイルの入れ物をフォルダと言いますが、UNIX(Linux)ではディレクトリと言います。WebサーバはUNIX系が大半ですので、このページでは統一してディレクトリと書きます。 代表的な格安サーバでcronが使えるものとしてXREA (エクスリア) のXREA+[年間2400円位]やさくらインターネットのレンタルサーバ:スタンダード[年間5000円位]があります。大学や会社のサーバでcronを使いたい場合は、管理者に尋ねてみてください。 cronは指定されたシェルスクリプトを指定された時間に実行します。Webサーバでの設定では、日時とシェルスクリプトを指定します。 例えば、『public_html』以下が公開ディレクトリとすると、非公開のディレクトリにある『new_index.html』を『public_html/index.html』に上書きコピーすると、Webサイトのトップページが変わります。この書き方は 上記のコードをコピーして必要箇所を変更してからエディターの改行コードを[LF]にして保存しておきます。エディターの改行コードの選択は、フリーのエディターでもMKeditorやxyzzyで保存時に設定できます。拡張子は[txt]でも良いですが、シェルスクリプトであることを明示するため[sh]とつけておきます。 保存したシェルスクリプトおよび上書きするためのhtmlやファイルをWebサーバの非公開ディレクトリに上げておきます。cronでシェルスクリプトおよび日時設定をすれば、指定時間に該当htmlが上書きコピーされ更新されます。曜日毎のページを作り、更新することもできます。 自動で判別してくれるFTPツールもありますが、シェルスクリプトはアスキーモードでアップロードすると無難です。 XREAはシェルスクリプトの属性(パーミッション)が、標準の644でもcronが利用できるようです。一方でさくらインターネットはオーナーに実行権限のないシェルスクリプトを指定しようとすると『指定されたコマンドは実行することができません。』と受け付けません。(少なくとも齋藤経史が使っているサーバではそうなります。これがXREAとさくらインターネットの会社で異なっているのか、会社内のサーバで異なっているのかは分かりません。)オーナーに実行権限を与えている方が無難です。シェルスクリプトを非公開ディレクトリに置くようにすれば、仮に属性(パーミッション)を777にしても、トラブルは起きないようにも思います。 指定日時が来たらWeb上から削除したいファイルの場合は[rm]というコマンドで削除することができます。 [rm A]でAというファイルを削除できます。公開ディレクトリ下の『temp.html』を削除したい場合は以下のように書きます。 記念日や賀状メール、リマインダーなど指定日時にメールを送りたいという場合にもcronは使えます。メールを送信するシェルスクリプトの記述方法もありますが、日本語指定や複数行の書き方が面倒なので、PHPというプログラム言語を使って記述します。 サーバがPHP4以上を設置している必要があると思います。XREAやさくらインターネットなら大丈夫です。 自動で判別してくれるFTPツールもありますが、PHPもアスキーモードでアップロードすると無難です。 上のPHPを実行してメールを送信すると、example@example.comに以下のようなメールが届きます。 PHP内に本文を書いた後は、サーバの設定に従って[サーバのPHP本体の位置 設置したPHPスクリプトの位置]で指定すれば、『auto_mail.php』が指定日時に実行されます。PHP本体がどこにあるか?は各サーバの設定に従って記載してください。XREAやさくらインターネットを含め、標準的な位置では以下のように書きます。 サーバの仕様によっては、差出人のメールアドレスが取得ドメインに一致していなければ、送信できないかもしれません。 ログやバックアップの保存も基本的には用途AのWeb更新と同じで、コピーしていくだけです。ただ日付がファイル名に入った方が、ログの整頓が楽になります。シェルスクリプトの中でも関数を使うことができ、[`date '+%Y%m%d'`]と書けば、サーバ側で実行した日時を書き込んでくれます。例えばコマンド実行時にサーバ内の時計で2006年4月1日であれば[20060401]と書き込んでくれます。その日のログファイルを日付入りのファイル名で保存するには、logというディレクトリを作り とシェルスクリプトを書きます。毎日cronを実行するよう設定すると『t20060401.log』『t20060402.log』『t20060403.log』と、日付入りのファイル名でログが作成され、logディレクトリ下に保存されます。定期的なファイルのバックアップも同様の要領で行えます。 ディレクトリを丸ごとバックアップしたい場合も、アスタリスク*を使って、一行で指定することができます。例えば、先に非公開ディレクトリに[backup_bbs]というディレクトリを作っておけば、以下のような指定方法で[public_html/bbs/]下のサブディレクトリを含めて、全てコピーしてbackup_bbs下にバックアップをとることができます。 『-r』のオプションはrecursive(再帰的な、繰り返しての)の頭文字です。このオプションを指定すると、サブディレクトリがなかった場合にも自動で作成します。 ログの保存は、コピー先のファイル名に日付を入れましたが、コピー元のファイル名に日付を入れることでWeb更新にも応用できます。あらかじめ『t20060401.html』、『t20060402.html』、『t20060403.html』というファイルを作っておき と書いて毎日cronを実行すると、ホームページが毎日自動更新され、カウントダウンなどをhtml上で行うことも可能です。 cronはもともとバックアップなどの定期実行の仕組みであるために、1年以内の指定しかできません。しかし日付入りのファイル名とシェルスクリプトを使うことで(サーバの設定が変わらなければ)10年先でも自動でファイルをコピーしたり上書きすることができます。htmlでのカウントダウンの要領で『t20200101.html』というhtmlを作っておき、毎年元旦にcronを実行するようにすると、(サーバの設定が変更されず、権利が保持できれば)2020年の元旦にhtmlを更新することも可能です。 cronの実行は、サーバに負荷をかけるので、可能な限り少ない実行で済むよう実行日時を設定しておきます。 Webページの更新と同様にPHPのファイル名に名称に日付を入れることもできます。『t20200101mail.php』として毎年元旦にcronを実行すれば、(2019年までは何も送らずに)2020年の元旦にメールを自動送信することも可能です。 遺言メール、へそくりの在処やネット銀行のアカウント、パスワードのメールを作っておく。(生きていれば、自分でcronの実行を延期する) cronの実行結果やエラーは通知メールが管理者に送信されます。XREA+の場合は登録メールアドレスに送信され、さくらインターネットの場合はpostmaster@***.sakura.ne.jpへ送信されます。この通知メールは、cronの指定に[/dev/null]を書き込こむことで操作できます。 (Webの日時指定更新やメールの日時指定送信でファイルが存在せず、実行不可の場合など) エラー通知も含め、全ての通知が不要の場合 [1]はエラーがない標準出力部を指し、[2]はエラー部分の出力を指します。[/dev/null]は、ゴミ箱や破棄という意味だと思ってください。 コピーの[cp]や削除の[rm]は、何もオプションを付けなければ、標準出力[1]すらありません。標準出力[1]とエラー出力[2]の両方がない場合は、[example.sh]の後に何も記述していなくても通知メールが送信されません。コピーや削除の実行結果を標準出力[1]に出すには、[cp -v]や[rm -v]と『-v』のオプションを付けます。『-v』を付けると正常動作した場合にも標準出力[1]に出力され、通知メールが送信されます。 用途Bのメール送信では、[Content-type: text/html]という本文の通知メールが届き、cronの動作が確認できます。機械的な標準出力ではなく、cronの正常動作メールであることを明記したい場合は、mail_send.shに当たるシェルスクリプトに以下のechoを足しておきます。 [cp -v]、[rm -v]を使うと、どのファイルをコピー、削除したかが分かりますが、単にcronの動作確認メールを受け取りたい場合は、シェルスクリプトの最後にでも以下の一行を加えてください。
|
戻る
ほしのあき
髭剃り
ロレックス