mergemasterのオプションは-UPiF

mergemaster

-U ユーザーが変更していない設定ファイルを自動的にアップグレードします。稼働中のシステムに影響を与えるような更新で重要な変更がある場合、このオプションは思わぬ結果をもたらす可能性があります。

-P 置き換えるファイルを /var/tmp/mergemaster/preserved-files- または mergemaster rc ファイルで指定したディレクトリに保存します。

-i 宛先ディレクトリに存在しないファイルは、自動的にインストールします。

-F VCS文字列だけが違って内容は変わらないファイルを自動的にインストールします。

望ましいブロックサイズ

ddでデータを吸い出すとき、メディアごとに望ましいブロックサイズ

Format Device (example) bs=
————- ——————— —-
Data CD /dev/acd0 2048
Music CD /dev/acd0t01 2352
DVD /dev/acd0 2048
Hard disk /dev/ad0s1g 1m

# dd if=/dev/acd0 of=somefile.dd bs=2048 conv=noerror,sync

Apache2.4でfork後ゾンビプロセス

 Apache2.4でCGI-Perlを動かしたとき、あるPerlスクリプトがゾンビプロセスになった。そのスクリプトは要求を受けると、ごく短いHTMLページを返して、forkする。親プロセスはそのまま終了し、クライアントに制御を返す。子プロセスはそのまま処理を続け、5分以上かかるタスクを行う。

 しかし、実行してみると、先に終了した親プロセスがゾンビプロセスになり、制御をクライアントに返さない。30秒程すればそのゾンビプロセスは消えるが、クライアントはその間待っている状態であり、ブラウザがタイムアウトしてしまう。

 子プロセスがゾンビになるのは分かるが、親プロセスがゾンビになるのが謎だ。ためしに、子プロセスを親プロセス終了後、すぐに終了するように変更すると、すぐに制御がクライアントに戻った。

 スクリプトをあれこれいじったが、変化がない。そこで、httpd.confを見てみると、mod_cgiとmod_cgidが両方ロードされていた。この2つのモジュールは、CGIを動かすのに必要で、本質的には同じものらしい。そこで、mod_cgiの方をロードしないようにして、apacheを再起動し、forkするPerlスクリプトを実行したところ、期待したとおりの挙動を示した。親プロセスはすぐに制御を返して終了し、子プロセスはタスク処理を無事続行した。

FreeBSD UPDATE メモ

apache2.4+suexec

・SUEXECはコンパイル時にオプション指定
cd /usr/ports/www/apache24
make WITH_SUEXEC=yes SUEXEC_DOCROOT=/home SUEXEC_USERDIR=www

・PHP5のモジュールをインストールする
pkg install mod_php5

POSTFIX
・POSTFIXはSASLのオプションをつけてmake

MySQLとmy.cnf

my.cnfの場所で嵌ったのでメモ
 
my.cnfの場所は
 
1)DBのディレクトリ
2)/etc
3)~/
 
の何れかでないと、起動時に読み込んでくれない。
 
結局のところ、rc.confに以下を追加し、my.cnfを/usr/db/mysqlにコピーした。

mysql_enable=”YES”
mysql_dbdir=”/usr/db/mysql”

 
2)だと全体設定、3)だと個人設定になるらしい

Courier-IMAPのエラー

サーバを再起動すると、imapでloginできない。で、メールログを見ると、

imapd: authdaemon: s_connect() failed: No such file or directory

とあった。認証に失敗しているらしい。
 
どうやら、authdaemondというデーモンが先に起動していないと認証できないらしいので、/etc/rc.confに以下を追加

courier_authdaemond_enable=”YES”

 
Courier-IMAPの起動スクリプトに書いたほうが確実かもしれない。

authdaemond=/usr/local/sbin/authdaemond

start)
   ${authdaemond} start

stop)
   ${authdaemond} stop