下次重启时运行命令(仅限)

下次重启时运行命令(仅限)

我花了很多时间寻找在重启时运行命令的好方法。大多数解决方案建议使用带有“@reboot”时间规范的 crontab。

我最终得到了下面的代码,但是,它有一个明显的问题,我希望能有一个很好的修复:

每次系统重启时,cron 任务都会运行,但这并不是我们想要的。最不靠谱的解决方法是让脚本本身删除此脚本中包含的 crontab 行,但这会造成非常不干净的依赖关系。

reboot_and_launch_setup() {
    # Get the command on reboot ready with cron
    if [[ -f "${DEP_SCRIPT}" ]]; then
        POST_REBOOT_CM="@reboot ${DEP_SCRIPT}"
        (crontab -u $(whoami) -l; echo "${POST_REBOOT_CM}" ) | crontab -u $(whoami) -
    else 
        echo "ERROR: The deployment script did not get installed."
        echo "ERROR: Expected to find deployment script, ${DEP_SCRIPT}"
        echo "ERROR: Check that the deployment script is included in the archive:"
        echo "ERROR:      --> ${PSA_DEPS_FILE}"
    fi
    reboot
}

at理想的解决方案是提供一个带有时间规范的命令,@reboot以便正在运行的命令仅在下次重新启动时运行一次。这几乎就像我们需要对命令进行增强at以接受 cron 接受的相同快捷方式列表。

无论如何,我离题了...有没有办法做到这一点,第二个脚本不必首先将其自身从 crontab 中删除?

答案1

我想我会将其设置为适当的服务(systemd 或其他),在它成功完成“部署操作”后,它会再次自行删除。

相关内容