“查找/var/”与“查找/var/run/”

“查找/var/”与“查找/var/run/”

我正在观察这种奇怪的行为,但没有找到解释:

$ find /var/run/ -name reboot-required 2>/dev/null 
/var/run/reboot-required

$ find /var/ -name reboot-required 2>/dev/null
$ 

第二条语句不返回任何内容,而第一条语句则突出显示 /var/run/ 中有一个文件

这里发生了什么?

答案1

至少在 Ubuntu 1中,/var/run是一个符号链接/run

$ ls -l /var/run
lrwxrwxrwx 1 root root 4 Jun 29 14:05 /var/run -> /run

find命令有两个选项来控制符号链接的处理,如手册页中所述:

   -P     Never follow symbolic links.  This  is  the  default  behaviour.

   -L     Follow symbolic links.  

所以当你运行时find /var/ -name reboot-required,链接没有被点击,文件也没有找到。相反,当您运行 时find /var/run/ -name reboot-required,搜索是从符号链接的“另一侧”开始的(就像您执行了一样find /run -name reboot-required),因此文件曾是成立。

添加-L标志应该可以解决歧义,即

find -L /var/ -name reboot-required 2>/dev/null


[1]。事实上,这似乎是由Linux FHS 3.0标准。

相关内容