Posts Tagged ‘CentOS3’

接続障害が発生していました

今朝ルーターが落ちていたのが原因で、ほぼ丸1日サイトにアクセスできない状態になっていました。ごめんなさい。

障害そのものは朝の段階で検知・対応していたのですが、DNS情報の更新スクリプトが24時間に1回しか回らない設定になっていた(というか俺がした)ので、ついさっきまで外部から接続できない状態に気がつかなかったのでした。ごめんなさいごめんなさい。

とりあえずcronによる更新頻度を3時間毎に上げたので再発はしないはず。
話をそらす目的も含め、cronを書くときにいつも参考にしているサイトを紹介させていただきます。
(お世話になってます!)

crontabの書き方

 

ps aux で表示結果が途切れてしまう

psコマンドにauxオプションセットというのは半ばお約束だが、これだとコンソール(端末)の画面右端で折り返されずにカットされてしまう。
驚いたことに出力先にファイルを指定した場合でも、環境によっては出力文字列がやはりカットされてしまう事実が判明。

具体的にはCentos3.2の環境下では80文字でぶった切られる。Centos5.xでは問題なさそう。

解決策としてはwオプション(ワイド出力)を追加して、

# ps auxw

として実行してやればよい。

引っ張った割にはあっけない解決策でごめん。

 

PHPで重複起動を防ぐ

cronで定期的に回すバッチなど、複数同時に呼び出したくない処理は、起動時に自分以外の誰かが既に突っ走ってないかチェックしてやる

$self = basename($_SERVER['SCRIPT_NAME']); //自身のファイル名取得
exec("ps aux | awk '{print $12}' | grep $self", $retVal); //プロセスを調べる
if(count($retVal) > 2) { //3つ以上の場合は誰か突っ走ってる
	echo "プロセスが既に起動中しています。処理を中止します。\n";
	exit(0);
}

$selfにチェックしたいファイル名を入れてやれば、自分自身以外のプログラムの起動チェックも可能。

 

文字化けしないmy.cnf設定 (MySQL5.0.x)

とりあえずウチのmy.cnfそのまま貼り付けてみます。手抜きとか言わない。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
default-character-set=utf8
skip-character-set-client-handshake

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

デフォルトの文字コードはUTF-8に統一。skip-character-set-client-handshakeを宣言してクライアントにも暗黙的にUTF-8を使わせる仕様。Centos5あたりで新しくMySQLサーバ立てるならこの設定で鉄板です。

ちなみにMySQL3.xから4.xにバージョンアップさせた場合、old_passwordsがデフォルトで0に設定されているので注意が必要です。Centos3.xのサーバにWordpress入れた時ここで見事にハマりました。 orz