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. 따라서 적어도 내 버전의 GNU find에서는 -L 플래그가 필요합니다. BSD find가 어떻게 처리하는지 잘 모르겠습니다. 14.04 Ubuntu '의 Upstart 기능에 대해 알아서 반가 웠지만, ' 자신의 여러 복사본을 피하려는 스크립트에는 도움이되지 않습니다. 따라서 최소한 askubuntu에서는 .pid 파일을 사용하는 것이 좋습니다.
  • 내가 쓴 내용을 빠르게 읽어보세요. 천천히 다시 읽고 정확한 문자 순서를 기록하십시오. (-:
  • @JdeBP 아 … 마지막 슬래시 추가 작업 …

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다