NFSを使用する複数のマシンで実行されているプログラムがあり、それらのすべての出力を1つのファイルに記録したいと思います。すべてのマシンで実行できますか./my_program >> filename
、それとも同時実行性に注意する必要がある問題がありますか?追加しているだけなので問題ないと思いますが、確認しているだけです。
質問する
1356 次
2 に答える
3
それは機能する可能性がありますが、はい、同時実行の問題が発生し、ログファイルは基本的に判読できなくなります。
私がお勧めするのは、マシンごとにログファイルを作成し、定期的に(たとえば、毎晩)、ファイル名としてマシン名と一緒にファイルを連結することです。
for i in "/path/to/logfiles/*"; do
echo "Machine: $i";
cat $i;
done > filename.log
それはあなたにいくつかのアイデアを与えるはずだと私は思います。
于 2010-04-26T05:05:08.060 に答える
2
NFSプロトコルはアトミックな追加書き込みをサポートしていないため、どのプラットフォームのNFSでも追加書き込みがアトミックになることはありません。しようとすると、ファイルが破損してしまいます。
複数のスレッドまたはプロセスからファイルに追加する場合、そのファイルへのfwriteは、ファイルが追加モードで開かれ、ファイルに書き込まれる文字列がファイルシステムのブロックサイズを超えず、ファイルシステムがローカルであるという条件の下でアトミックです。NFSではそうではありません。
回避策がありますが、シェルスクリプトからそれを行う方法はわかりません。この手法は、オープンに近いキャッシュの一貫性と呼ばれます
于 2010-09-29T16:01:22.637 に答える