从脚本重启 Linux

从脚本重启 Linux

我有一个通过 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

在您的脚本中更改rebootsudo reboot

相关内容