【问题标题】:Safe to reboot just after running a command?运行命令后重启安全吗?
【发布时间】:2017-04-04 04:30:52
【问题描述】:

我想在 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 操作)?

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

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

【问题讨论】:

  • do_something 到底是什么?请显示它的代码。

标签: linux bash curl


【解决方案1】:

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

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

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

【讨论】:

  • 很好,有启发性的答案,我学到了一些我在阅读 Q 时没想到的东西。
猜你喜欢
  • 2013-09-14
  • 2021-01-13
  • 1970-01-01
  • 2023-03-30
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多