通常、学校に行く前にダウンロードを開始します。
特定のタスクが完了した後、必要な保存を自動的に行い、コンピューターの電源を切るには、どのコマンドを使用すればよいですか?
(たとえば、アップデートをインストールした後、または大きなファイルをダウンロードした後。)
askubunt にもクロスポストしました。
開始したタスクによって異なります。コマンドラインツールの場合は、halt
またはshutdown -h now
を実行するだけです。
wget http://..../somelargefile; halt
-halt
はwget
の後に実行されます
wget http://..../somelargefile && halt
-halt
がエラーを返さない場合、wget
が実行されます
wget http://..../somelargefile || halt
-halt
がエラーを返した場合、wget
が実行されます
これの代わりにkshutdown
を使用します-このアプリでは、実行するアクション(再起動/シャットダウン/休止状態/その他またはコマンドの実行)とタイミング(しばらくしてから、または別のアプリケーションが終了したとき)を指定できます。このツールを使用する場合は、正しいプロセスを選択する必要があります-一部の更新ユーティリティは、いくつかのサブプロセスを開始します。
すべてのプロセスには、proc
ファイルシステム内のプロセスID(pid)に従って名前が付けられたディレクトリがあります。したがって、ディレクトリが繰り返し存在するかどうかを確認することで、特定のプロセスの終了を待つことができます。
これを使用して、次のようにプロセスの終了後にシステムのシャットダウンを実行できます(待機するpidで2296を置き換えます)。
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
利点:
Sudo
- passwordプロンプトを回避する必要はありません)。短所:
&&
および||
演算子は、コマンドをチェーンします。例えば:
apt-get update && sleep 2 && init 0
これは、aptitudeを使用してシステムの更新を実行し、2秒待ってからランレベル0に移行します。システムによっては、ハードウェアの電源が実際にオフになる場合とそうでない場合があります。
おそらくWebブラウザーなどのより任意の操作に続く1つ以上の操作と話すには、ダウンロードファイルを監視してダウンロードが実際に完了したことを確認する追加のロジックが必要ですが、シェルロジックは変更されていません。
すでに開始されているプロセスを監視したい場合は、 Shell でこれを行うことができます。
# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now
GUIを使用して実行できる、sentinellaという名前のアプリケーションがあります。
それをインストールするため:
Sudo aptitude update
Sudo aptitude install sentinella