/proc/*/maps
커널 프로세스처럼 보이는 프로세스의 모든 PID를 가져오고 커널 프로세스 가장 무도회를 나타내는 무언가가 있는지 확인하는 한 줄의 bash 스크립트를 작성하려고 합니다 .
현재 다음 스크립트가 있습니다.
for pid in $(ps aux | grep "\[" | awk -F' ' '{print $2}');do if [ -s /proc/$pid/maps ]; then echo $pid; fi; done
/proc/$pid/maps
크기가 0보다 크면 스크립트는 pid를 출력해야 합니다. 그러나 스크립트는 아무것도 출력하지 않습니다.
if [ -s /proc/$pid/maps ]
파일이 비어 있지 않은지 여부를 나타내야 합니다. 작동하지 않는 것 같습니다.
이 문제를 해결할 수 있는 또 다른 방법이 있지만 -s
인터넷에서는 파일이 비어 있는지 확인하기 위해 이 옵션을 제안했습니다.
여기에 문제가 있나요? 명령줄(avahi 데몬)에 해당 프로세스의 내용이 포함되는 괄호가 있는 프로세스가 있다는 것을 알고 있으므로 /proc/$pid/maps
테스트 목적으로 최소한 1개의 pid 출력이 있어야 합니다. 파이프라인에서 grep을 제거하면 모든 PID를 반복하지만 여전히 출력은 없습니다.
답변1
문제는 /proc/$pid
아래 파일의 내용과 관계없이 출력 크기가 0이라는 것입니다.
ls -l /proc/*/maps
그리고
wc -c /proc/*/maps
/proc/$pid/maps
실제로 읽어야 하는 크기를 확인하려면 다음을 사용하세요.예를 들어 wc -c
위와 같이.