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에서. 이 디렉토리는 루트 사용자에 속하지만 데몬 응용 프로그램 실행에만 사용된다고 생각하지 마십시오. 루트 권한을 가진 사용자가 시작한 스크립트는 이 디렉토리에 쉽게 쓸 수 있습니다.