创建一个类似 CentOS 中的日志文件的文件,当这个日志文件更新时,日志文件的副本也会更新。也许我会使用这个命令:
ln -s logfile copy_of_logfile
然后当添加logfile的内容时,也会添加copy_of_logfile的内容==>没问题,但是当删除logfile的内容时,copy_of_logfile的内容也会被删除。
我希望在添加日志文件的内容时,同时添加副本日志文件的内容,而当删除日志文件的内容时,我希望副本日志文件的内容不会被删除。请告诉我该怎么做。
答案1
使用 syslogd 守护进程是个好主意吗?在其配置文件 /etc/syslog.conf 中,您可以指定应用程序/严重性等的日志文件。更多信息:http://www.centos.org/docs/2/rh-cm-en-1.0/s1-software-syslog.html
答案2
ln -s logfile copy_of_logfile
then logfile's content is added, copy_of_logfile's content is also added
嗯,不。如果你创建软链接,那么你仍然只有一个文件.
对该单个文件的任何操作都会在两个目录条目上显示。
让我用两个例子来澄清一下:
例1:就好比你在手机通讯录中创建了两个相同电话号码的条目,拨打电话时得到的结果是一样的。
示例 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 的内容也被删除了
是的,因为是同一个文件,不是副本。
由于您希望能够从其中一个文件中删除而不从另一个文件(副本)中删除,因此您需要二不同的文件。
记录到两个文件,或者使用以下方法拆分输出tee
。
另一种方法是使用tail -f
读取添加到原始日志文件的所有新信息。(并将其添加到备份中)。
答案3
实际上,有一种方法可以获取您想要的东西:给定文件的运行副本。可以通过创建命名管道,
mkfifo mypipe.logfile
顾名思义,它是您将写入日志的文件,然后使用命令从中读取tee
,并将输出发送到两个相同的文件:
cat mypipe.logfile | tee -a logfile 1>> copy_of_logfile
这将自动生成两个相同的文件,随着新材料添加到每个文件,这两个文件将保持同步。
如果你想确保这个过程永不停止,可以添加一个while
循环,
while [ true ]; do cat mypipe.logfile | tee -a logfile 1>> copy_log_file; done
这可能是脚本,在启动时启动,如果您希望它永远运行则重新启动,等等。