在cronjob中运行一些代码之后,我想让linux机器重新启动。
代码基本上如下所示:

#!/bin/sh
do_something
reboot

其中do_something基本上是:
function do_something {
    local REPORT_URL=https://example.com/services/status
    local PAYLOAD='{"message":"Update script run with success.","code":'$UPDATE_SUCCESS'}'
    curl -X POST --form "payload=$PAYLOAD" "$REPORT_URL"
}

是否有可能在运行do_something之前reboot没有完成其所有作业(例如i/o操作)?
在这种情况下,在这些方案中,什么是最好的解决方案:
sync之前添加reboot
sleep 5之前添加reboot
sync之前添加sleepreboot

最佳答案

这对过去十年(或二十年)的任何流行系统来说都不是问题。.reboot只会更改运行级别、目标或系统用来跟踪其应处于何种状态的任何概念。实际上,重新启动或关机只会触发将其置于该状态所需的事件。通常这需要卸载所有的文件系统,内核会在这之前刷新/同步所有的数据。
所以不需要。在任何现代Linux发行版上,都不需要同步。
这假设do_something不会产生任何后台任务。在这种情况下,问题完全不同,更多的是与服务同步有关。如果do_something完成所有的操作和退出,你就好了。

关于linux - 运行命令后安全重启吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43198296/

10-13 05:48