그래서 이것은 수년 동안 저에게 붙어 있던 것입니다.
이는 dd보다 더 많은 프로그램에서 발생하지만 원시 파일 시스템 작업과 관련된 프로그램에서 자주 발생합니다.
dd를 사용하여 복사할 때(예를 들어 부팅 가능한 USB 디스크 만들기 등) sudo dd if=somelinuxdistro.iso of=/dev/sdb bs=64K status=progress
응용 프로그램에서 모든 신호를 무시하는 것과 같습니다. (또는 커널의 경우 SIGKILL
) 는 "중단 없이 잠자기"를 의미하는 htop
status 를 표시합니다 . D
계속 그렇게 있을 수 있어나이하드웨어 오류가 발생하고 정기적으로 사용하는 경우 작업을 계속할 수 있도록 터미널에서 분리할 방법을 찾을 수 없는 것 같습니다. 일반적으로 작업을 수행하기 위해 다른 터미널로 전환하게 됩니다.
이전에 이것을 찾아본 적이 있지만 이 상태의 목적이나 왜 커널이 이 상태에서 프로세스 종료를 거부하는지, 시간 낭비를 피하기 위해 무엇을 해야 하는지에 대한 설명을 찾지 못했습니다. (또한 제안 없음하다이런 일이 발생하면. )
간단히 말해서: D 상태의 프로세스를 안정적으로 강제 종료하거나 적어도 터미널에서 분리하는 방법을 원합니다. 또한 애초에 그들이 이 상태에 있게 만드는 배경에서 무슨 일이 일어나고 있는지 설명하고 싶습니다.
답변1
논스톱 읽기를 중단할 수 없고 이것이 종료 중인 NFS 서버와 관련이 없다면 드라이버 오류가 있는 것입니다.
로컬 백엔드 스토리지의 I/O 시간 초과는 5~10분을 초과할 수 없습니다. 따라서 입력하거나 ^C
10 ^Z
분 이내에 아무 일도 일어나지 않으면 드라이버 오류가 있는 것입니다.
배경은 fast IO
빠른 IO가 예측 가능한 시간 후에 종료되기 때문에 UNIX가 신호에 의한 무정전을 정의한다는 것입니다.
신호를 통해 IO를 중단할 수 있게 만들면 깨끗한 상태로 돌아가야 하기 때문에 더 높은 오버헤드가 발생합니다. IO가 시작된 후 발생하는 모든 작업은 해제되어야 하며 반환은 IO가 시작된 지점에서만 발생할 수 있습니다.
더 나쁜 것은 백엔드 스토리지 드라이버가 중단 가능한 IO를 구현하는 경우 해당 드라이버 위에 있는 파일 시스템이 처리할 수 없는 문제를 야기한다는 것입니다. 파일 시스템 백업 저장소로 사용하도록 설계된 드라이버를 사용하고 있습니다...
커널 메시지를 호출 dmesg
하고 확인하여 문제를 해결할 수 있습니다. 10분 후에도 인터럽트가 작동하지 않으면(읽기 또는 쓰기 시스템 호출이 시간 초과되어 dd
두 시스템 호출 사이에 종료될 수 있는 경우) 재부팅해야 합니다.
USB 장치인 경우 재부팅하기 전에 장치를 꺼내볼 수 있습니다.