파일 크기를 확인할 때 예기치 않은 동작

파일 크기를 확인할 때 예기치 않은 동작

/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위와 같이.

관련 정보