在FreeBSD下的顶级进程状态栏

在交互式运行顶部时,可以看到状态栏中的各种单词:

  • nanslp,biord,select,uwait,lockf,pause,kqread,piperd,sbwait …

有些像nanslp或kqread是自我解释,其他人不是。

试过曼先生的网页:

STATE是当前状态(“开始”,“运行”(在SMP系统上显示为“CPUn”),“hibernate”,“停止”,“ZOMB”,“等待”,“locking”进程等待),C是进程正在执行的处理器编号(仅在SMP系统上可见)

试过search引擎:

  • 堆栈溢出
  • 邮件列表档案

我可以在哪里获得FreeBSD 9下可能的进程状态的完整列表,以及它们的含义?

top手册页进一步是:

  If a process is in the "SLEEP" or "LOCK" state, the state column will report the name of the event or lock on which the process is waiting. Lock names are prefixed with an asterisk "*" while sleep events are not 

所以基本上,所有非大写的“STATE”,前面加星号都是睡眠事件的名字。

这些标签是在FreeBSD内核中设置的,所以这是你应该去查找它们的意思的地方。 可悲的是没有好的总结,因为事件名称是由sleep呼叫设置的。

例如,在pipe_read函数的/usr/src/sys/kern/sys_pipe.c中的pipe_read

error = msleep(rpipe, PIPE_MTX(rpipe), PRIBIO | PCATCH, "piperd", 0);

或者在kern_nanosleep函数的/usr/src/sys/kern/sys_pipe.c中:

error = tsleep(&nanowait, PWAIT | PCATCH, "nanslp", tvtohz(&tv));