Linux 프로세스 상태에 대해 자세히 알아보기 위해 실험을하고있었습니다.10 억 개가 넘는 파일이있는 디렉토리에서 "tar"를 실행하면 해당 프로세스는 D 상태로 유지됩니다.
그래서, 억 이상 파일 (디렉토리가 많은 하위 디렉토리를 재귀 적있다)이있는 디렉토리 (라는 이름의 big_dir)가있다, 그리고 나는 tar -cv big_dir | ssh anotherServer "tar -xv -C big_dir"
을 실행하고 tar
프로세스가 D에 남아, 실행 top
를 통해 발견 지위. 한편, tar 명령은 파일의 경로를 계속 출력합니다.
디스크 I/O를 수행 중이기 때문에 프로세스가 D 상태에 있었지만 상태가 D와 R 사이를 전환하지 않은 이유는 무엇입니까? 디렉토리 아래에 파일 이름을 인쇄 할 때 CPU 계산을 사용해야합니다. 그렇지 않습니까? 그렇지 않으면 find 명령은 어떻게 인쇄해야 하는지를 알 수 있습니까?
dd if=/dev/zero of=/dev/null
을 실행하면 dd
프로세스 상태가 top
출력에서 R 상태로 유지됩니다. 그런데 왜 D 상태가 아니 었습니까? 항상 I/O를하고 있지 않습니까?
실제로. 나중에/proc에서 프로세스 상태를 확인하고 "State : \t D (디스크 잠) SleepAVG : 78 %"를 보았습니다. – zzhang