我尝试重新启动我的 CentOS 7 服务器,但它给出了荒谬的错误消息。
作为 root(当然):
# systemctl reboot
Authorization not available. Check if polkit service is running or see debug message for more information.
Failed to start reboot.target: Connection timed out
See system logs and 'systemctl status reboot.target' for details.
Exit 1
是否polkit
需要检查是否root
有权限重启机器???如果是这样,为什么?
# systemctl status reboot.target
● reboot.target - Reboot
Loaded: loaded (/usr/lib/systemd/system/reboot.target; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd.special(7)
Exit 3
我需要启用reboot
目标吗?为什么默认情况下会禁用此功能?
也许这会起作用?
# systemctl start reboot.target
Authorization not available. Check if polkit service is running or see debug message for more information.
Failed to start reboot.target: Connection timed out
See system logs and 'systemctl status reboot.target' for details.
Exit 1
好,强制执行,然后:
# systemctl --force reboot
Authorization not available. Check if polkit service is running or see debug message for more information.
Failed to execute operation: Connection timed out
Exit 1
而且服务器还开着。
答案1
如果 Zach Sanchez 的答案不起作用(我在 CentOS 7 下遇到了Failed to start reboot.target: Connection timed out
奇怪systemctl --force reboot
的情况),那么可以通过 SSH 作为 root 来完成内核崩溃重启,如下所示:
# echo s > /proc/sysrq-trigger
# echo u > /proc/sysrq-trigger
# echo b > /proc/sysrq-trigger
这三个命令分别同步所有已挂载的文件系统,以只读模式重新挂载所有已挂载的文件系统,然后立即重新启动机器。
在最后一个命令之后,预计不会有任何响应,因为内核会立即重新启动计算机。更多细节这里等等维基百科。
正如@LunarShaddow 和其他人指出的那样,不需要s
提前一秒。b
答案2
尽管看起来很奇怪,但尝试跑步
systemctl --force --force reboot
它出现在我进行的几次搜索中。这可能与 DBus 服务重新启动的问题有关。
答案3
由于我无法在保罗的回答中发表评论,所以我在这里写下我的评论。
来自内核文件:
当您无法关闭时,reboot(b) 是很好的选择。但您还应该首先同步和卸载。当您无法关闭时,reboot(b) 是很好的选择。但您还应该首先同步和卸载。
当您的系统被锁定时,sync(s) 非常有用,它允许您同步磁盘,并且肯定会减少数据丢失和 fscking 的机会。请注意,直到您看到屏幕上出现“确定”和“完成”后,同步才发生。 (如果内核确实处于冲突中,您可能永远不会收到“确定”或“完成”消息......)
umount(u) 的用途基本上与sync(s) 相同。当我的系统锁定时,我通常会同步,卸载(u),然后重新启动(b)。它为我节省了很多 fsck 的时间。同样,直到您看到屏幕上出现“确定”和“完成”消息后,卸载(重新安装只读)才发生。
所以 FMHO,Paul 的答案可以简化为 's' 'u' 'b',并且您可能需要在每次输入后等待一段时间。