“find / var /” vs “localizar / var / run /”

4

Estou observando esse comportamento estranho e não encontrei explicações:

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

MAS

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

A segunda instrução não retorna nada enquanto a primeira destaca que existe um arquivo em / var / run /

O que está acontecendo aqui?

    
por sandyp 02.09.2016 / 22:47

1 resposta

4

Pelo menos no Ubuntu 1 , /var/run é um link simbólico para /run

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

O comando find tem duas opções que controlam o tratamento de links simbólicos, conforme observado na página de manual:

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

   -L     Follow symbolic links.  

Então, quando você executou find /var/ -name reboot-required , o link não foi seguido e o arquivo não foi encontrado. Em contraste, quando você executou find /var/run/ -name reboot-required , a pesquisa foi iniciada a partir do "outro lado" do link simbólico (como se você tivesse executado find /run -name reboot-required ) e, portanto, o arquivo foi encontrado.

Adicionar o sinal -L deve resolver a ambiguidade, por exemplo

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


[1] Na verdade, isso parece ser exigido pelo padrão Linux FHS 3.0 .

    
por 03.09.2016 / 01:15

Tags