如何从命令行休眠/挂起并在特定时间执行此操作

Ede*_*ico 41 command-line suspend hibernate 11.10

通过阅读如何从命令行挂起/休眠,我设法找到了如何从命令行挂起/休眠系统.

但是,我想知道如何使用命令行在给定时间以绝对(例如,晚上 11 点)或相对(例如,以 30 分钟为单位)暂停/休眠。

我已经知道如何通过关闭来做到这一点,但我确定命令是否相似。

Eli*_*gan 47

您可以使用该at命令来安排任何操作,包括运行该问题中详述的命令。

例如,如果您想在 30 分钟后休眠:

echo 'pmi action hibernate' | at now + 30 min

或者,如果您想在晚上 11:00 暂停:

echo 'pmi action suspend' | at 11pm

如果您需要以 as 运行命令root,请at使用 withsudo而不是命令本身运行sudo(因为sudo只能以交互方式运行,除非您已将其配置为不要求输入密码)。例如,使用pm-hibernate和的上述命令的等价物pm-suspend是:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm

  • @Rexford [`atrm` 命令](http://manpages.ubuntu.com/manpages/xenial/en/man1/atrm.1.html) 删除由 `at` 创建的作业。 (2认同)

Een*_*oku 13

对于相关规范(例如“30 分钟后”),您可以简单地使用sleep命令使挂起/休眠命令等待。


例子:

等待 30 分钟,然后挂起:

sudo sleep 30m; sudo pm-suspend
Run Code Online (Sandbox Code Playgroud)

等待 1 小时,然后休眠:

sudo sleep 1h; sudo pm-hibernate
Run Code Online (Sandbox Code Playgroud)

  • 1 小时后`pm-hibernate` 再次想要root 的密码并且挂起不会发生。 (6认同)

cpr*_*itt 5

对于重复的特定时间 - 就像关闭计算机是每天的特定时间。使用 cron。

crontab -e
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

15 14 1 * * pmi action suspend
Run Code Online (Sandbox Code Playgroud)

如果你想自定义它。

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Run Code Online (Sandbox Code Playgroud)

一次性工作我们 at 命令

例如,如果您想在 30 分钟后休眠:

echo 'pmi action hibernate' | at now + 30 min
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在晚上 11:00 暂停:

echo 'pmi action suspend' | at 11pm
Run Code Online (Sandbox Code Playgroud)

  • 当目标是在一天中的特定时间,或一周、一个月或一年中的特定时间暂停或休眠时,使用 `cron` 是一个很好的解决方案。但是为了安排一次暂停或休眠,这似乎是 [Ederico](http://askubuntu.com/users/28661/ederico) 所询问的(这是更有意义的事情) ),应该使用 `at` 命令。(您可以通过使事件编辑相关的 crontab 来使用 `cron` 安排单个事件,例如使用 `sed` 或 `awk`,但这是极其复杂和不必要的;使用 `at`。) (2认同)