运行命令后安全重启?

Oli*_*ier 0 linux bash curl

我想在cronjob中运行一些代码后重启linux机器.

代码基本上如下所示:

#!/bin/sh
do_something
reboot
Run Code Online (Sandbox Code Playgroud)

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"
}
Run Code Online (Sandbox Code Playgroud)

do_somethingreboot运行之前是否有任何可能无法完成所有工作(例如i/o操作)?

在这种情况下,这些中最好的解决方案是什么:

  • sync之前添加reboot.
  • sleep 5之前添加reboot.
  • 添加syncsleep之前reboot.

vir*_*tor 6

从过去十年(或两年)开始,这对任何流行的系统都不是问题.reboot只会更改运行级别,目标或系统正在使用的任何概念来跟踪它应处于什么状态.实际上,重启或关闭只会触发将其置于该状态所需的事件.通常这涉及卸载所有文件系统,内核将在发生之前刷新/同步所有数据.

所以不行.在任何现代Linux发行版上,都不需要同步.

PS.这假定do_something不会产生任何后台任务.在这种情况下,问题完全不同,更多的是与服务同步.如果do_something完成所有操作并退出,那就很好.