【发布时间】:2013-11-18 11:42:51
【问题描述】:
在我的私人网络上,我有一个备份服务器,它每晚运行一次 bacula 备份。为了节省能源,我使用 cron 作业来唤醒服务器,但我还没有发现如何在备份完成后正确关闭它。 通过 bacula-director 配置,我可以在处理最后一个备份作业(即文件目录的备份)期间调用脚本。我尝试使用这个脚本:
#!/bin/bash
# shutdown server in 10 minutes
#
# ps, 17.11.2013
bash -c "nohup /sbin/shutdown -h 10" &
exit 0
脚本关闭服务器 - 但显然它只是在关闭期间返回, 因此,最后一个备份作业会一直挂起,直到关机。如何使脚本文件关闭并立即返回?
更新:经过广泛搜索后,我想出了一个(尽管很丑陋)的解决方案: bacula 运行的脚本如下所示:
#!/bin/bash
at -f /root/scripts/shutdown_now.sh now + 10 minutes
第二个脚本(shutdown_now.sh)看起来像这样:
#!/bin/bash
shutdown -h now
其实我没有发现明显的方法可以在'at'命令的语法中添加shutdown所需的参数。也许有人可以在这里给我一些建议。
【问题讨论】:
-
刚刚在我的 Debian 机器上测试过,似乎还是正确的,虽然不需要将其包装到
bash -c中,nohup /sbin/shutdown -h 10 &似乎在这里工作得很好