CentOS-在这种情况下如何使用 ln 命令?

CentOS-在这种情况下如何使用 ln 命令?

创建一个类似 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

这可能是脚本,在启动时启动,如果您希望它永远运行则重新启动,等等。

相关内容