我有一个服务器,我通过SSH远程pipe理,由于各种原因,它需要重新启动。 但是,当我尝试这样做时,几乎在发送挂机信息之后立即进入不可中断的睡眠状态。
$ ps aux | grep 'shutdown' root 4754 0.0 0.1 1888 720 ? D 07:26 0:00 shutdown -r 0 w
目前我没有物理访问机器的权限。 我该怎么办? 服务器仍在响应,我仍然可以login。
状态D不是“死”,它等待磁盘IO被阻塞。
像“重新启动-n -f”是更有力,可能工作。 你有文件系统的麻烦? shutdown命令在告诉initclosures之前写入wtmp条目。
使用Magic SysRq键启用:
echo "1" > /proc/sys/kernel/sysrq
并执行以下步骤干净的重新启动:
shutdown可能正在等待写入/dev/initctl类的东西 – 使用strace -p 4754来查看它挂起的位置,然后修复任何被破坏的东西。
如果有(过时的)NFS挂载或服务器连接到SAN,则看到挂起挂起。 这是你的清单:
df -h看到所有的磁盘安装吗(或者访问安装盘)? D状态下是否有shutdown其他进程? dmesg你回复一些关于I / O的信息,或者是否有一个很好的内核恐慌等着你呢? lsofvalidation在该挂载上没有打开任何文件,然后umount该挂载? btrace , btrace /your/disk返回什么? 如果一切都失败了,@quanta提供的SysRq节应该可以工作,但是首先要确保有人如果由于某种原因不能干净地启动,就可以在服务器上亲自保pipe服务器。