タイトル盛りました。
正確には、
apacheのconfigtestは"Syntax OK" を標準エラー出力する。戻り値はちゃんと0が返る。
です。
調べてもあまり情報出てこなかったし、誰も気にしていないんだろうけど。
Server version: Apache/2.2.34 (Unix)
Server version: Apache/2.4.33 (Unix)
定期的に(結構な頻度で)apacheのエイリアスを増やさなきゃいけない不思議な環境がありまして。
いい加減、手作業がダルいので、シェルで自動化しようと考えまして。
# 色々処理をごにょごにょ
doSomething1
doSomething2
doSomething...
service httpd configtest >> logfile
RET=$?
echo $RET >> logfile
if [ ${RET} = 0 ]; then
service httpd graceful
fi
(今、そらで書いたのでだいぶ怪しい)
で、動かして見たらconfigtestのところがログになかった。
あれ???ってなって、構文ミスったかな? とか、いろいろ見直した。
最終的にやっと気が付いて、
# 色々処理をごにょごにょ
doSomething
doSomething2
doSomething...
service httpd configtest >> logfile 2>&1
RET=$?
echo $RET >> logfile
if [ ${RET} = 0 ]; then
service httpd graceful
fi
これでちゃんとログに出た。
Q. これってapacheの仕様うんぬんの前に……。
A. はい。何らかのエラー出力があった場合もログに出ないので、最初のプログラムはただの僕が作ったバグです。
戻り値はちゃんと出し分けてるのに(当たり前だ)
出力は出し分けずに標準エラー出力で統一ってのも、なんか不思議な気はする。
まあ、だいたい2>&1するし、実害はないんだけど。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント