我正在观察这种奇怪的行为,但没有找到解释:
$ 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标准。