(在 OS X 10.11.3 上)我在启动需要侦听端口 8040 的 java 进程时遇到问题。获取 BindException。看来其他人已经在听了。快速检查确认:
lsof -i TCP| fgrep LISTEN | grep 8040
jspawnhel 13566 alon 255u IPv6 0x2a5edc8fe0a093d7 0t0 TCP *:8040 (LISTEN)
jspawnhel 14482 alon 255u IPv6 0x2a5edc8fe0a093d7 0t0 TCP *:8040 (LISTEN)
jspawnhel 81770 alon 255u IPv6 0x2a5edc8fe0a093d7 0t0 TCP *:8040 (LISTEN)
所以,我试图弄清楚这些过程是什么,但我不明白 ps 向我展示了什么:
ps ax | grep "13566\|14482\|81770"
13566 ?? U 0:00.00 313:316
14482 ?? U 0:00.00 324:327
81770 ?? U 0:00.00 301:304
“??”是什么意思?意思是?在这种情况下 313:316 是什么?
即使使用-9,我也无法杀死它:
kill -9 13566
ps ax | grep 13566
13566 ?? U 0:00.00 313:316
尝试了很多次...
任何帮助表示赞赏。
答案1
如果您ps ax
在没有 grep 的情况下运行,您将看到列标题:
PID TT STAT TIME COMMAND
??
位于TT
列中——这是进程的控制终端。表示??
该进程不与终端关联。
U
列中的表示STAT
进程处于不可中断睡眠状态。这就解释了为什么你不能杀死它——它被阻塞在内核中的不间断睡眠中,并且不能被唤醒以终止。当进程最终退出不可中断状态时,它会注意到该信号并死亡。
右侧的数字位于该COMMAND
列中——这就是进程的名称。至于那些过程是什么,我不知道。