lsusb는 왜 그렇게 오래 걸리나요?

lsusb는 왜 그렇게 오래 걸리나요?

여러 번 여행을 갔지만 lsusb돌아오는 데 시간이 오래 걸렸습니다. 완료되지 않거나 느리게 실행되는 이유가 있나요?

나는 kill그들의 PID를 살펴보았지만 소용이 없었습니다. 따라서 실행 중인 gnome 터미널 탭을 닫으면 해당 tty는 다음과 같습니다 ?.

$ ps aux | grep -i lsusb
t        13845  0.0  0.0  40000  3788 pts/21   D    14:59   0:00 lsusb
t        14216  0.0  0.0  40000  3812 pts/21   D+   15:06   0:00 lsusb
t        14236  0.0  0.0  40000  3792 ?        D    15:06   0:00 lsusb

내 말이 맞다면 D프로세스가 종료되고 있다는 뜻인가요? 왜 아직도 매달려 있나요?

dmesg계속 말해봐

[384722.320066] unregister_netdevice: waiting for wlan1 to become free. Usage count = 1 (repeated 77 times)

내부 Wi-Fi 어댑터가 작동하지 않아서 외부 Wi-Fi 어댑터를 연결했습니다(역시 작동하지 않음).

답변1

내가 맞다면 D는 프로세스가 종료되고 있다는 뜻인가요?

아니요, 이는 프로세스가 진행 중임을 의미합니다.방해받지 않는 수면. 때때로 "sleep"이 I/O를 기다리는 커널의 바쁜 루프라면 이는 매우 문제가 될 수 있습니다. 이러한 프로세스는 시스템을 무릎 꿇게 만들 수 있고 이에 대해 우리가 할 수 있는 일은 없습니다.왜냐하면 당신은 그들을 죽일 수 없기 때문입니다.. 그러나 상대적으로 수동적일 수도 있습니다(아직 죽일 수는 없지만).

그 이유는 정상적인 상황에서는 이러한 상황이 결코 발생하지 않거나 오랫동안 발생하지 않을 것이라는 사실에 근거한 타협 때문입니다. 이는 하드웨어 결함 또는 커널/드라이버 버그를 나타냅니다. "타협"이 수행되어 시스템이더 적은오류가 발생하기 쉬우며(정상적인 상황에서는) 일반적으로 문제가 되지 않습니다. 왜냐하면 애플리케이션이 아무리 잘못 작성되었더라도, 최종 사용자가 얼마나 어리석었는지, 아무리 파괴하려고 노력하더라도,할 수 없다그것을 창조하십시오. 이것오직이는 하드웨어 오류 또는 커널 오류로 인해 발생합니다.

즉, 이 상황에서 이러한 프로세스를 종료하면 정상적인 사용 중에 다른 문제가 발생할 위험이 더 커집니다. 따라서 그런 일이 발생하면 할 수 있는 일이 아무것도 없다는 것은 논리적인 절충안입니다.

답변2

lsusbUSB 버스에서 하드웨어 정보를 읽으려면 시스템 호출을 사용하십시오. USB 버스가 올바르게 구성되지 않았거나 장치가 응답할 수 없는 경우 시스템 호출은 시간이 초과될 때까지 차단됩니다. USB 장치를 한 번에 하나씩 연결하고 lsusb매번 명령을 실행하여 어떤 장치(또는 장치 조합)가 문제를 일으키는지 알아내야 할 수도 있습니다.

중단 없는 시스템 호출 중에는 신호가 차단되므로 프로세스를 종료(SIGKILL 전송)하거나 터미널을 닫아도(SIGHUP 전송) 프로세스가 종료되지 않습니다. 중단할 수 없는 시스템 호출에서 프로세스가 무기한 차단 되면 lsusb실제로 프로세스를 종료할 방법이 없습니다.

관련 정보