grep
명령을 사용하여 파일을 검색하고 싶습니다. /var/run
/var/run
디렉토리에는 시스템에서 실행중인 프로세스가 저장되며 pid
확장자. 확장자가 pid
인 모든 파일 목록을 얻고 싶습니다.
sudo grep -nr "*.pid" .
를 사용하고있는 명령 (/var/run
디렉토리에서이 명령을 실행하고 있습니다)
출력이 표시되지 않습니다. Ubuntu 14.04 LTS를 사용하고 있습니다.
댓글
답변
TL; DR : grep
는 잘못된 도구입니다. find
를 사용하세요. 올바른 옵션으로
stat /var/run
를 수행하면 /var/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
파일은 일부 프로그램에서 사용됩니다. 동일한 프로세스의 여러 복사본이 실행되는 것을 방지합니다 (이 파일을 사용할 수있는 가능한 방법 중 하나). 참조는 이 스택 오버플로 게시물 과 이 높은 투표 응답 . 디렉토리가 루트 사용자에게 속하지만 시작 및 데몬 앱 전용이라고 가정하지 마십시오. 스크립트는 다음으로 시작됩니다. 사용자의 루트 권한은 디렉토리에 쉽게 쓸 수 있습니다.
댓글
-
/var/run/
에서는-L
가 필요하지 않습니다. 또한 Ubuntu 14 LTS는 Upstart를 사용하며 실제로 여러 프로세스로 실행되는 동일한 프로그램의 여러 복사본을 방지하는 것은 Upstart가이를 시작하지 않는 것을 알고 있다는 것입니다. - @JdeBP 죄송합니다.
find /var/run
만으로는 ' 제 경우에는 작동하지 않습니다.find --version
보고서find (GNU findutils) 4.7.0-git
. 따라서 적어도 내 버전의 GNUfind
에서는-L
플래그가 필요합니다. BSDfind
가 어떻게 처리하는지 잘 모르겠습니다. 14.04 Ubuntu '의 Upstart 기능에 대해 알아서 반가 웠지만, ' 자신의 여러 복사본을 피하려는 스크립트에는 도움이되지 않습니다. 따라서 최소한 askubuntu에서는.pid
파일을 사용하는 것이 좋습니다. - 내가 쓴 내용을 빠르게 읽어보세요. 천천히 다시 읽고 정확한 문자 순서를 기록하십시오. (-:
- @JdeBP 아 … 마지막 슬래시 추가 작업 …
/var/run
에 대한 올바른 설명이 아닙니다. 기껏해야 PID 파일이 필요하다는 오해 아래서 노력하고 있습니다. 실제로 이 파일은 위험하고 심각한 결함이있는 메커니즘 으로 세상이 오해 할 수 있습니다. -마침내 제거의 지혜를 배웠습니다.