我有一个通过 cron 作业每天执行的备份脚本。它从 FTP 服务器、连接的 USB 硬盘、数据库等进行复制。
在脚本的最后,我想重新启动 Linux 机器,因此我在脚本的最后输入了:
reboot
但输入 uptime next day 后发现它没有重新启动。cron 作业由 root 用户执行,因此据我所知,我不需要将 sudo 或 su 放在命令前面。因此,我尝试了该命令的其他变体,例如:
shutdown -t 10 -r
shutdown -r now
/sbin/shutdown -t 10 -r
/sbin/shutdown -r now
/sbin/reboot
当然,每次只能尝试一次,不要将以上 5 行全部接连执行。PC 不会重新启动。
有人对此有什么想法吗?
答案1
我发现(在 Raspbian 上测试过)关机命令按预期工作,但关键是调用脚本不能在计时器结束前退出。所以我添加了一个睡眠命令:
shutdown --reboot 1 "System rebooting in 1 minute"
sleep 90
答案2
重新启动它的最好方法是使用
reboot -f
但这会在 3 秒内重新启动您的机器,而不会正常停止任何服务\应用程序,因此您可能需要考虑另一种方法。
另外,shutdown 可能无法识别“-t”参数,而是采用这样的时间参数:
shutdown -r 10 //reboot in 10 minutes
无论如何,手动关机可能会派上用场。看来关机不会接受小于分钟的分辨率,但您的里程可能会有所不同。
答案3
我在这里找到了一个很好的答案https://askubuntu.com/a/956465/1431379 它在 Armbian 上对我有用。
我甚至能够通过未提升权限运行的脚本重新启动系统。
尝试这个命令
systemctl reboot -i
要关机,请运行此
systemctl poweroff -i
休眠、暂停、混合运行
systemctl hibernate -i systemctl suspend -i systemctl hybrid-sleep -i
答案4
允许用户使用以下方式重启visudo
your_username ALL= /sbin/reboot
在您的脚本中更改reboot
为sudo reboot