我正在使用 RHEL 5.10 服务器(它们在集群中使用一些共享服务)。当我使用“init 6”或“reboot”重新启动它们时,服务器在关闭时挂起,并不断显示以下消息:
sock_sendmsg-error 22
我必须进入 ilO cli 模式并重置电源,之后服务器才能再次正常重启。之后我没有在 /var/log/messages 中看到任何重大错误。有人能解释一下这个错误是什么意思吗?这是内核级套接字的问题吗?
答案1
22
将是标准 errno 值。这些是在一系列(许多)以 errno.h 开头的 C 语言包含头文件中定义的。我发现查找这些的最简单方法是使用诸如 之类的工具cscope
。无论如何,在大多数 Linux 机器上, 22 是与 相对应的值EINVAL
,它具有“无效参数”的标准呈现。
#define EINVAL 22 /* Invalid argument */
"/usr/include/asm-generic/errno-base.h"
由于我们知道这与系统调用有关sendmsg
,因此我们可以查阅 sendmsg(2) 的手册页,它只是告诉我们传递给它的参数无效,可能是因为某些东西没有妥善处理错误。这也可能来自其他错误,例如当命令mount
正在挂载 CIFS 网络共享时,出现诸如凭据无效之类的错误。在这种情况下,真正的错误可能位于内核日志 ( dmesg
) 中。
不过我不确定哪个系统组件会报告该错误。希望您也能在日志中看到它?