我跑lsusb
了好几次,但要花很长时间才能回来。是否有原因无法完成或运行缓慢?
我试过kill
ing 他们的 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
Run Code Online (Sandbox Code Playgroud)
如果我是对的,是否D
意味着进程正在被杀死?为什么还挂?
dmesg
一直说
[384722.320066] unregister_netdevice: waiting for wlan1 to become free. Usage count = 1 (repeated 77 times)
Run Code Online (Sandbox Code Playgroud)
我的内部无线网络适配器不起作用,所以我插入了一个外部适配器(也不起作用)。
如果我是对的,D 表示进程正在被杀死?
不,这意味着进程处于不间断睡眠状态。有时,如果“睡眠”是内核忙循环等待 I/O 时,这可能会很成问题;此类进程会使系统陷入停顿,并且无能为力,因为您无法杀死它们。但是,它也可能相对被动(尽管您仍然无法杀死它们)。
这样做的原因是一种妥协,基于这样一个事实,即在正常情况下这永远不会发生,或者在很长一段时间内永远不会发生。它表示硬件出现故障,或者可能是内核/驱动程序错误。“妥协”是这样的做事让系统更不容易出错(在正常情况下),而且它通常不是问题,因为一个应用程序,无论写得多么糟糕,或者一个愚蠢的最终用户,无论多么地狱一心要破坏,不能创造。它可能发生的唯一方式是由于硬件故障或内核错误。
换句话说,在这种情况下可以终止这样的进程,因此在正常使用期间会产生更大的其他问题风险。因此,当它确实发生时您无能为力的事实是一个合乎逻辑的权衡。
lsusb
使用系统调用从 USB 总线读取硬件信息。如果您的 USB 总线配置不正确或者有一个设备无法回复,系统调用将阻塞直到超时。也许您应该一次插入一个 USB 设备,并lsusb
每次发出命令来找出哪个设备(或设备组合)造成了问题。
信号在不间断的系统调用期间被阻止,这就是为什么终止进程(发送 SIGKILL)或关闭其终端(发送 SIGHUP)不会终止进程。如果lsusb
进程在不可中断的系统调用中无限期地阻塞,则实际上没有办法杀死它。
归档时间: |
|
查看次数: |
3481 次 |
最近记录: |