특정 텍스트만 포함된 파일을 찾는 가장 빠른 방법

특정 텍스트만 포함된 파일을 찾는 가장 빠른 방법

구체적으로 "무엇"

그 이유는 다음과 같습니다. PID가 파일 어딘가에 저장되어 있다고 확신하는 프로세스가 있지만 어디에 있는지는 모릅니다(그리고 알아내고 싶습니다). 나는 /var/run/myproc.pid해당 pid 등을 저장하는 데 사용할 수 있는 파일 이름을 찾으려고 노력했지만 지금까지는 성공하지 못했습니다. 검색해보고 싶어요오직그 번호. 유사한 도구에서 PID를 가져온 다음 내용이 해당 숫자에 해당하는 파일을 검색하고 ps -aux싶습니다 .top

인터넷 검색을 해보았지만 모든 답변에는 "무엇"...그 안에 무엇이 들어있나. 조금 다른 것을 원했다...완전히 일치하는 것을 원했다"무엇"

미리 감사드립니다.

답변1

원하는 텍스트를 파일에 넣고 cmp각 후보 파일에서 실행합니다.

pgrep myproc >/tmp/the_pid
find /var -type f -size $(wc -c </tmp/the_pid)c -exec cmp -s /tmp/the_pid {} \; -print

strace -eopen하지만 이 사용 사례에서는 아래 프로그램을 다시 시작하거나 다음을 사용합니다.auditd규칙:

auditctl -F "ppid=$$,a2&0x100" -S open
/path/to/daemon

답변2

grep에 정규식을 전달할 수 있습니다. 다음을 시도해 보십시오. (PID가 67543이라고 가정)

grep -R '^67543$' /

정규식에서 ^당근(sp) 기호는 "문자열의 시작"을 의미하고 $달러 기호는 "문자열의 끝"을 의미하므로 위 정규식은 "67543" 문자열로 시작하고 끝나는 파일만 반환합니다.

답변3

find searchtree -type f -size `stat -c%s needle`c | xargs -n1 diff -s needle

답변4

프로그램이 부팅 시 시작되지 않거나 수많은 다른 프로그램과 함께 시작되는 경우 pidfile은 프로세스만큼 오래되어 1분도 채 안 된 것입니다.

PID를 알고 있으면 길이도 알 수 있으므로 검색하는 파일 수를 더 줄일 수 있습니다.

 find -type f -mmin -1 -size 6c -exec grep 12345 {} \;

5비트 PID의 경우 후행 개행 문자가 포함되어 있으므로 크기로 6c를 사용합니다(주석으로 ysangkok 참조).

관련 정보