• ベストアンサー

複数のプログラムのログを1つのログファイルに出力

初めて質問させていただきます。 Bourne Shell(Bシェル)のいくつかのプログラムで1つのログファイルを 使用したいと考えています。 ログファイルは、 echo ログ >> ログファイル といった形で出力予定です。 ただ業務の仕様上、シェルプログラムが同時に動く可能性があるのですが そうした場合、やはり片方のログが出力されないといったことになるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

こういった問題はどうなるというよりも、「動作が保証されない」と思います。 試しに手元の環境で以下のプログラムを試してみました。 明らかに平行してないです。 やはり、RDBMSに流し込む方がベターでしょうね。 #!/usr/bin/perl use strict; for(1 .. 10){ print "$_\n"; sleep 2; } $ ./test.pl >> log.txt & $ ./test.pl >> log.txt & $ ./test.pl >> log.txt & $ cat log.txt 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

OMEGA_3210_50
質問者

お礼

早速のご回答ありがとうございます。 「動作が保証されない」 問題の核心をつくような答えありがとうございます。 RDBMSを使用するよう検討します。 ありがとうございました。

その他の回答 (1)

回答No.2

実際にそれだけでは情報が足りないので具体的にどういったことをするのかが分からないと完全な解決法は提示できませんが… 問題とされていることに対するアプローチでなら、トランザクション処理について勉強してみるとおそらく解答は見つかるかと思います。 既にあげられてるようにRDBMSを使うのが一番いいかと。 結局処理としても同じような感じになるでしょうし。 あとあと何かとログの種類によって出力形式を変えたりするのにもRDBMSなら列ひとつ追加で済みますしね。

OMEGA_3210_50
質問者

お礼

早速のご回答ありがとうございます。 RDBMSを使用せずとも、もっと楽にログの管理ができるかも と思ってシェルからログファイルにログをはかせようと思ったのですが 結局は、RDBMSを使用する方が良いようですね。 ありがとうございました。

関連するQ&A