web-dev-qa-db-ja.com

コマンドラインから休止状態/サスペンドし、特定の時間にそれを行うにはどうすればよいですか

コマンドラインからどのようにサスペンド/ハイバネートできますか? を読むことで、コマンドラインからシステムをサスペンド/ハイバネートする方法を見つけることができました。

ただし、絶対(例、午後11時)または相対的(例、30分)で、コマンドラインを使用して特定の時間にサスペンド/休止状態にする方法を知りたいと思います。

私はすでにシャットダウンでこれを行う方法を知っていますが、コマンドが似ているかどうかは確かです。

34
Ederico

at コマンドを使用して、 その質問 で詳しく説明されているコマンドの実行など、アクションをスケジュールできます。

たとえば、30分で休止状態にする場合:

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

または、午後11:00に中断する場合:

echo 'pmi action suspend' | at 11pm

コマンドをrootとして実行する必要がある場合は、コマンド自体をatで実行するのではなく、SudoSudoを実行します(パスワードを要求しないように構成していない限り、Sudoは対話式でのみ実行する必要があるため)。たとえば、pm-hibernateおよびpm-suspendを使用した上記のコマンドに相当するものは次のとおりです。

echo pm-hibernate | Sudo at now + 30 min

echo pm-suspend | Sudo at 11pm

41
Eliah Kagan

相対的な指定(「30分後」など)の場合は、sleepコマンドを使用して、一時停止/休止コマンドを待機させることができます。


例:

30分待ってから中断します。

Sudo sleep 30m; Sudo pm-suspend

1時間待ってから、休止状態にします。

Sudo sleep 1h; Sudo pm-hibernate
7
Eenoku

繰り返される特定の時間-コンピューターのシャットダウンのように、毎日特定の時間です。 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
4
cprofitt