この奇妙な動作を観察していますが、説明が見つかりませんでした。
$ find /var/run/ -name reboot-required 2>/dev/null
/var/run/reboot-required
しかし、
$ find /var/ -name reboot-required 2>/dev/null
$
2番目のステートメントは何も返しませんが、最初のステートメントは/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
コマンドには、マニュアルページに記載されているようにシンボリックリンクの処理を制御する2つのオプションがあります。
-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基準。