死活監視をする

実は動いていなかったらどうする?

う~ん、たとえば電源が切れていたりしたら、気づかずに平和ボケしそうです。どうしたら良いんでしょう?

そうね。動いているか、確認したらいいわ。できれば5分おきに確認したら良いと思うわ。

そりゃそうですけれど、学校にも行かないといけないし、第一、寝れないじゃないですか?

あなたがやる必要ないのよ。設定しておけば良いの。見ていてね。

簡単な死活監視

まずはサーバーにpingが通るかどうかやってみます。

pi@raspberrypi:~ $ ping -c 3 -w 2 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.120 ms

--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 0.113/0.116/0.120/0.011 ms
// 存在しないアドレスへping
pi@raspberrypi:~ $ ping -c 3 -w 2 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.

--- 192.168.1.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 34ms

上の2つの違いわかる?ping が通るかどうかで、ある程度サーバーが生きているかどうか分かるのよ。もちろん、pingに反応するようにしておかないといけないけれど。

もしかして、これをプログラムで実行するということですか?

お、冴えてきましたね。そういうこと。今回はPHPでやる例です。

<?php
pingCheck("192.168.1.1); //チェックしたいサーバーのIPを入れる

/**
 * PINGチェック
 * @return <i>true</i> 接続OK<br><i>false</i> 接続NG
 */
function pingCheck($server_ip)
{
    $ping_command_str = "ping -c 3 -w 5 ".$server_ip;
    $ret = `$ping_command_str`;
    echo $ret;
    if (strstr($ret, '100% packet loss')) {
        sendErrorMSG("Mybe you should better check your parent machine whether it is alive or not.");
        return false;
    }
    return true;
}

定期的に実行する

コマンドを打つよりは、プログラムを実行させるのが便利だけれど、そもそも定期的にやらせるためにプログラムにしたはずなんですが。
どうしたら良いのでしょうか?

そう、そのために、cron設定をします

pi@raspberrypi:~ $ crontab -e
no crontab for pi - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2

設定を編集するには、上記のようにcrontab -eと打ち込みます。
最初だけ、上記のようにどのエディタを使うか選ぶように画面が出ました。vimがやっぱり良いので、迷わずvim.basicを選びます。

最後の行に書いてありますが、
「分」「時」「日」「月」「曜日」 「実行したいプログラム」の順に空白をあけて記載します。記載方法を以下にまとめます

項目設定方法
0-59の数字 もしくは、0,10,20,30 もしくは、*/5 (5分おき)もしくは、範囲指定10-15
0-23
1-31
1-12
曜日 0-7 (0または7は日曜日)
0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日

#で始まっている行はコメントなので、無視して大丈夫。
書き方を下に示しておくわ

# crontab -e 記入例
# 毎時0分に起動させる場合
0 * * * * /usr/bin/php example.php
# 10分おきに起動させる場合
*/10 * * * * /usr/bin/php example.php 
# 毎日4:30に実施する場合
30 4 * * * /usr/bin/php example.php

コメント

タイトルとURLをコピーしました