구체적으로 "무엇"
그 이유는 다음과 같습니다. 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 참조).