CentOS - この状況でlnコマンドを使用する方法?


0

CentOSのログファイルのようなファイルを作成します。このログファイルが更新されると、ログファイルのコピーも更新されます。たぶん私はこのコマンドを使用します:

ln -s logfile copy_of_logfile

ログファイルの内容が追加されると、copy_of_logfileの内容も追加されます。それは問題ありませんが、logfileの内容が削除されると、copy_of_logfileの内容も削除されます。

logfileの内容が追加されたとき、それからcopy_of_logfileの内容も追加され、logfileの内容が削除されたときに、copy_of_logfileの内容が削除されないようにします。その方法を教えてください。

回答:


1

syslogデーモンを使用するという考えでしょうか。 その設定ファイル/etc/syslog.confで、あなたのアプリケーション/重大度などのためのログファイルを指定することができます。 多くのための: http://www.centos.org/docs/2/rh-cm-en-1.0/s1-software-syslog.html


それはおそらくTrungTrungの問題を解決するための正しい方法であるためです。
Hennes

1
   ln -s logfile copy_of_logfile
   then logfile's content is added, copy_of_logfile's content is also added

うーん、いや。あなたがソフトリンクを作成するならば、あなたはまだ持っているだけです 単一ファイル
その1つのファイルに対する操作は、両方のディレクトリエントリに影響します。

2つの例を使ってそれを明確にしましょう。

例1:携帯電話のアドレス帳に同じ電話番号で2つのエントリを作成した場合と同じです。呼び出しても同じ結果になります。

例2:本を使う(インデックスはディレクトリエントリです)

リンクする前に:

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------


以降 柔らかい リンク:

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
My copy of Sneeuwwite      See index entry for Sneeuwwite
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------

物語の例ではまだ同じページになっています。どちらかのストーリーを編集すると、両方が変更されます。


あなたが使用する場合 ハード ソフトリンクではなくリンク

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
My copy of Sneeuwwite      Page 11-14
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------

大丈夫ですが、logfileの内容は削除され、copy_of_logfileの内容も削除されます

はい、それは同じファイルだからです。コピーではありません。

あなたは他のファイル(コピー)から削除せずにファイルの一つから削除できるようにしたいので、あなたは必要になります 異なるファイル

2つのファイルにログを記録するか、またはを使用して出力を分割します。 tee

代替手段は tail -f 元のログファイルに追加されたすべての新しい情報を読み取るため。 (そしてそれをあなたのバックアップに追加してください)。



それはむしろリードを少し埋めます。あなたの答えは、明示的な「代わりにハードリンクを作成する」ことで可能になります。文のどこかに、できれば先頭に近いところに書いてください。 ( - :厳密に言えば、ハードリンクが1つのファイルに2つのリンクがある場合。シンボリックリンクがある場合、実際には2つのファイルがあり、1つは通常のファイル、もう1つはシンボリックリンクです。
JdeBP

0

実際には、あなたが望むものを手に入れる方法があります:与えられたファイルの実行中のコピー。それを作成することによって得ることができます 名前付きパイプ

   mkfifo mypipe.logfile

その名前が示すように、これはあなたがログを書き、次にそれを使ってログから読み込むファイルです。 tee 2つの同一ファイルに出力を送信するためのコマンド

   cat mypipe.logfile | tee -a logfile 1>> copy_of_logfile

これにより、2つの同一ファイルが自動的に生成されます。新しいファイルがそれぞれ追加されても、ファイルは段階的に保持されます。

プロセスが停止しないようにしたい場合は、 while ループ、

   while [ true ]; do cat mypipe.logfile | tee -a logfile 1>> copy_log_file; done

これはスクリプト化され、起動時に開始され、永遠に実行したい場合は再生成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.