【问题标题】:Running delayed command with sudo使用 sudo 运行延迟命令
【发布时间】:2023-08-06 00:41:01
【问题描述】:

想要以 root 身份运行 bash 脚本但延迟了。如何做到这一点?

sudo "sleep 3600; command" , or
sudo (sleep 3600; command)

不起作用。

【问题讨论】:

  • 我不明白下面建议cron 的答案,该cron 用于定期 服务器上的预定事件。如果您只想执行一次操作,那么at 是一个非常更好的选择。
  • 当然。因此,我接受了 at 的答案。 :)

标签: bash sudo gnu-coreutils


【解决方案1】:

你可以使用at:

sudo at next hour

然后您必须输入命令并使用 Ctrl+D 关闭文件。或者,您可以指定要在文件中运行的命令:

sudo at -f commands next hour

【讨论】:

  • 是的,因为对于超级用户来说,cron 是首选。
【解决方案2】:

如果你真的必须避免使用 cron:sudo sh -c "(sleep 3600; command)&"

【讨论】:

    【解决方案3】:

    怎么样:

    sleep 3600; sudo <command>
    

    无论如何,我会考虑在你的情况下使用 cron……

    【讨论】:

    • 这将在一个小时后询问密码 - 我想现在输入密码
    • 在这种情况下,我认为 chrisdowney 几乎把它钉在了下面。你也可以使用sudo bash -c 'sleep 3600; command'