system management
1751805 メンバー
4929 オンライン
108781 解決策
新規ポスト

シェルによるファイル書き込み制御について

 
T_M
時折のコントリビューター

シェルによるファイル書き込み制御について

システム運用設計・実装を担当しています。

通常、システムの自動運転をジョブスケジューラで行うと思いますが、

スケジューラ上で使用するジョブや

プロセスの監視等を行う常駐シェルで出力するメッセージを

1つのログファイルに集約しようと考えています。

運用上、こちらの方が利点が多いかと思いまして・・・

そこで、常駐シェルからのファイル書込みとジョブスケジューラで

実行するジョブのファイル書込みが競合が発生し、

ログがロストしたりいろいろな事象が考えられると思いますが、

皆様、どうされていますでしょうか?

ロギングプログラムを作成してファイルに対して排他書込みを行っていますか?

それとも、1つのファイルに集約する場合、syslogdの機能を使用していますか?
3件の返信3
uhyo
貴重なコントリビューター

シェルによるファイル書き込み制御について

私のところでは別にログは集約せずにOVOでのログの

監視運用をしているのであんまり良いアドバイスは

ないですが、私の知っている企業ではsyslogで

集約してますね

(loggerを使っているみたいです)。
hazelwood
信頼あるコントリビューター

シェルによるファイル書き込み制御について

appendモードでファイルをオープンすると、書き込みは常にファイルの最後に追加されるようですよ。

(open の man page参照ください。)

(echo a; sleep 60; echo b) >>/tmp/testlog &

としておいて、そのすぐ後に

echo c >>/tmp/testlog

を実行。60秒待ってから、cat /tmp/testlogしてみると、

---

a

c

b

---

となっていました。

したがって、必ずappend modeでopenすれば、とりあえず、ロストは避けられますが、書き込み単位によっては、情報が混ざるでしょうねぇ。

bojangle
時折のアドバイザー

シェルによるファイル書き込み制御について

私のところでは先日までは何も考えずにプロダクトが指定するログファイルに書き出しています。

以前に同様のログについて議論されたのですが、保守ベンダーが実際にログインしてログを見る際に余計なメッセージが混在すると調査に苦労する、ログファイルを送ってくれと言われる事を想定しても同様だったので、意図的に実装しませんでした。

監視については、現在OVOを使用していますので、監視すべきログファイルをログテンプレートを作成時に指定して配布するという方法で実装しています。