首页 > 开机一段时间后sudo命令卡死的问题

开机一段时间后sudo命令卡死的问题

手头有一个bay trail的mini pc(基本上跟intel的compute stick差不多,z3735f+2GB+32GB),装了一个Ubuntu 14.04 AMD64,其他方面基本正常,但是sudo一直不对头。

具体表现是,刚开机的时候,sudo命令是正常的,但是不知道是什么原因触发,总之是开机一段时间以后,sudo命令执行时会卡死,甚至还没有到提示输入密码的环节;而且很诡异的是,在这种情况下即使是使用root执行kill -9,也无法把sudo进程杀死。在sudo出错的时候,通过ssh也无法再连上去了,然而端口是可以连上的;此时nginx可以正常完成请求,su命令可以正常切换到root帐号,系统中其他程序也可以正常执行。

放狗找了一些解决方案(比如修改hosts,把hostname主动加进去,实际上本来就有),都无效。

后面贴了一段是strace sudo的后一部分输出,可以看出是卡死在sendto这个syscall上面(正常情况下应当会返回20,也就是发送成功的字节数);有一次比较奇怪的是,在卡死很长一段时间以后居然返回了,于是sudo正常了一段小时间,然后又不正常了。

大概情况就是这样,不知道各位是否有什么好的建议可以尝试。

191 open("/proc/7278/stat", O_RDONLY)       = 3
192 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
193 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a03bea000
194 read(3, "7278 (sudo) R 7275 7275 7235 348"..., 1024) = 340
195 close(3)                                = 0
196 munmap(0x7f7a03bea000, 4096)            = 0
197 stat("/dev/console", {st_mode=S_IFCHR|0600, st_rdev=makedev(5, 1), ...}) = 0
198 stat("/dev/wscons", 0x7ffd6be5c300)     = -1 ENOENT (No such file or directory)
199 stat("/dev/pts/14", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 14), ...}) = 0
200 uname({sys="Linux", node="felix021-t02", ...}) = 0
201 ioctl(2, TIOCGWINSZ, 0x7ffd6be5e3b0)    = -1 ENOTTY (Inappropriate ioctl for device)
202 getrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0
203 setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0
204 socket(PF_NETLINK, SOCK_RAW, 0)         = 3
205 bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
206 getsockname(3, {sa_family=AF_NETLINK, pid=7278, groups=00000000}, [12]) = 0
207 sendto(3, "\24\0\0\0\22\0\1\3\204\237\335U\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12

没遇到过这个问题,但是看你的描述,应该是PAM模块有问题。
检查或恢复一下PAM设置应该能解决。
你可以在卡死时,用ssh带-vvv参数连接主机,把最后几行贴上来看看。

【热门文章】
【热门文章】