파일 확장자로 검색하려면 /var/run에서 grep 명령을 사용하십시오.

파일 확장자로 검색하려면 /var/run에서 grep 명령을 사용하십시오.

grep디렉토리에서 명령을 사용하여 파일을 검색하고 싶습니다./var/run

/var/run시스템에서 실행되는 프로세스를 저장하는 파일로 pid확장자를 가집니다. .pid

내가 사용하고 있는 명령 sudo grep -nr '*.pid' . (디렉토리에서 이 명령을 실행하고 있습니다 /var/run)

출력이 표시되지 않습니다. 우분투 14.04 LTS를 사용하고 있습니다.

답변1

긴 이야기 짧게: 잘못된 도구입니다. 올바른 옵션을 grep사용하세요.find

이렇게 하면 이것이 디렉토리에 대한 심볼릭 링크 라는 stat /var/run것을 빨리 알게 될 것입니다 ./var/run/run

$ stat /var/run
  File: /var/run -> /run
  Size: 4           Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d  Inode: 696874      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-07 13:17:01.225178554 +0800
Modify: 2017-12-18 20:44:12.898113636 +0800
Change: 2017-12-18 20:44:12.898113636 +0800

따라서 디렉토리가 필요합니다 /run. 특정 파일 이름을 가진 파일을 검색하려면 find다음 명령이 필요합니다.

$ find /run -name "*.pid" 
/run/charon.pid
/run/starter.charon.pid
/run/dhclient-wlp2s0.pid

이 디렉토리의 일부 파일은 루트 또는 다른 시스템 사용자에 속하므로 이 명령을 와 결합해야 할 수도 있습니다 sudo.

또는, -L플래그를 사용하여 다음 심볼릭 링크 및 find호출을 허용할 수 있습니다 /var/run.

$ find -L  /var/run -name "*.pid" 
/var/run/charon.pid
/var/run/starter.charon.pid
/var/run/dhclient-wlp2s0.pid

또한 이것은 grep작업에 적합한 도구가 아닙니다. grep텍스트 패턴을 검색하는 데 사용됩니다.~에파일 이름이 아닌 텍스트 파일입니다.

당신은 또한 다음과 같이 언급했습니다.

/var/run은 pid 확장자를 가진 파일을 포함하여 시스템에서 실행 중인 프로세스를 저장합니다.

이것은 실제로 잘못된 것입니다. 프로세스 정보는 에 속합니다 /proc. .pid이 파일은일부동일한 프로세스의 여러 복사본이 실행되는 것을 방지하는 프로그램입니다(음, 이는 이러한 파일을 사용하는 가능한 방법 중 하나입니다). 바라보다이 스택오버플로우 게시물참고로 그리고이 높은 투표 답변unix.se에서. 이 디렉토리는 루트 사용자에 속하지만 데몬 응용 프로그램 실행에만 사용된다고 생각하지 마십시오. 루트 권한을 가진 사용자가 시작한 스크립트는 이 디렉토리에 쉽게 쓸 수 있습니다.

관련 정보