如何在命令行中休眠/暂停并在特定时间这样做


36

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

但是,我想知道如何在绝对时间(例如11PM)或相对时间(例如30分钟)内使用命令行在给定的时间挂起/休眠。

我已经知道如何使用shutdown来执行此操作,但是请注意命令是否相似。

Answers:


43

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

例如,如果要在30分钟内休眠:

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

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

echo 'pmi action suspend' | at 11pm

如果您需要为运行命令root,运行atsudo而不是命令本身的sudo(因为sudo只应交互运行,除非你已经配置它不询问您的密码)。例如,使用pm-hibernate和的上述命令的等效项pm-suspend是:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


感谢您发现两种情况都被要求了...我也编辑了标题以反映这一点。我修改了答案,现在包括了这两种情况。
cprofitt 2011年

知道如何清除工作吗?
KhoPhi

2
@Rexford该atrm命令删除由创建的作业at
伊利亚·卡根

9

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


例子:

等待30分钟,然后暂停:

sudo sleep 30m; sudo pm-suspend

等待1小时,然后进入休眠状态:

sudo sleep 1h; sudo pm-hibernate

我也喜欢这种方法。
KhoPhi

2
1小时后pm-hibernate,再次需要root用户的密码并不会挂起。
Vitaly Zdanevich

如何以root用户身份登录以避免被要求输入密码?
banan3'14

4

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

crontab -e

添加以下内容:

15 14 1 * * pmi action suspend

如果要自定义它。

* * * * * 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)

一次工作是我们的at命令

例如,如果要在30分钟内休眠:

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

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

echo 'pmi action suspend' | at 11pm

2
cron当目标是在一天中的特定时间或一周,某月或某年的特定时间的特定时间挂起或休眠时,使用是一个很好的解决方案。但是,对于调度单个暂停或休眠(这似乎是Ederico所要问的(并且这样做更有意义)),at应使用命令。(您可以cron通过使事件编辑相关的crontab 来安排单个事件,例如使用sedawk,但这非常复杂且不必要;请使用at。)
Eliah Kagan

不符合问题要求的相对条件,仅对特定的时间表有用。
布鲁诺·佩雷拉

是的,这是所请求的“特定时间”的示例。“但是,我想知道如何在绝对的时间(例如11PM)中使用命令行在给定的时间挂起/休眠”
cprofitt 2011年

1
您已经编辑了答案,以添加有关如何使用at的信息,但是很遗憾,您添加的信息不正确。的<操作者重定向从文本文件设备指定其为指定其左命令标准输入权。如果您想使用<而不是|(如我的回答),则必须制作一个以pmi action suspend(或pmi action hibernate)为内容的文件。这样的复杂性|在这里变得更好。
伊利亚·卡根

一般而言,当您cat|(例如cat foo | bar)的左侧有一个命令时,可以将其替换为<表达式(bar < foo)。但是,当您echo在的左侧有一个命令时|,就不能用<表达式来简单地替换它。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.