在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
之前添加sleep
和reboot
。 最佳答案
这对过去十年(或二十年)的任何流行系统来说都不是问题。.reboot
只会更改运行级别、目标或系统用来跟踪其应处于何种状态的任何概念。实际上,重新启动或关机只会触发将其置于该状态所需的事件。通常这需要卸载所有的文件系统,内核会在这之前刷新/同步所有的数据。
所以不需要。在任何现代Linux发行版上,都不需要同步。
这假设do_something
不会产生任何后台任务。在这种情况下,问题完全不同,更多的是与服务同步有关。如果do_something
完成所有的操作和退出,你就好了。
关于linux - 运行命令后安全重启吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43198296/