タスクの完了後にコンピュータをシャットダウンするにはどうすればよいですか?


8

通常、学校に行く前にダウンロードを開始します。
特定のタスクが完了した後、必要な保存を自動的に行い、コンピューターの電源を切るには、どのコマンドを使用すればよいですか?
(たとえば、アップデートをインストールした後、または大きなファイルをダウンロードした後。)

また、これをunix.stackexchangeにクロスポストしました


1
トレントをダウンロードする場合、一部には完了後にシャットダウンするオプションがあります。完了がシードではなく100%であることを確認してください。また、コマンドラインで実行している場合は、コマンドの最後に&& haltを追加するだけで、PCが自動的に停止します。&&は後に実行することを意味します。
theTuxRacer 2010年

ほぼすべての答えは正しいです。使用するダウンロードやプログラムの種類について詳しく説明すればするほど、正確になります:)
Pitto

あなたのクロスポストのプロセスベースの答えは、私が見た中で最も素晴らしく、最も柔軟なものの1つだと思います。 unix.stackexchange.com/a/65060/21070 `ps -elf | grep <somthing_related_to_task>は、プロセスの終了時に期限切れになるPIDを識別します。
TafT

回答:


8

これはあなたの質問に正確に答えるものではありませんが、時間ベースにすることもできます。つまり、ダウンロードが2時間で完了すると思われる場合は、次のコマンドを発行するだけです。

shutdown -h +120

8

パスワードなしでマシンをシャットダウンできるようにするために一度行うには:

コマンドラインを開き、次のように入力します。

sudo visudo 

開いたファイルの最後に次の行を追加します。

yourusername ALL=NOPASSWD: /sbin/halt

次に、エディターを終了して安全にします(Ctrl+ X)。

これで、たとえば何かをダウンロードした後など、コマンドラインからコンピューターをシャットダウンできます。

wget UrlOfTheFileYouWantToDownload && sudo halt

4
wgetがエラーなしで返されるようにするには、「;」を置き換えます。「&&」で。
David Rivers

3

更新後にシャットダウンするには、次のpythonスクリプトを使用できます:http : //kotbcorp.blogspot.com/2009/06/shutdown-after-update-in-ubuntu.html

ダウンロード後にシャットダウンするには、次のコマンドを使用します。

wget http://somehwere.com/path/to/some.file && halt

2
haltはスーパーユーザー特権が必要なのでsudo -s、コマンドを入力する前に実行する必要があります。
loevborg 2010年

3

他の答えは正しいですが、何かが欠けています:

wget UrlOfTheFileYouWantToDownload ; sudo halt

wget UrlOfTheFileYouWantToDownload && sudo halt

2つ目は、正常に戻った場合にのみコンピュータをシャットダウンしwgetます。最初のものwgetは、正常に戻るか失敗するかに関係なく停止します。


2

ダウンロードマネージャーまたは急流のクライアントを使用して、完了後にPCをシャットダウンするか、ほとんどのソフトウェアで利用できる、シャットダウン後にクリックしてシャットダウンできるディスクを最適化するとします。


2

どうやって「ダウンロード」したかによりますね。

apt-get update、upgradeシーケンスについて話している場合は、ルートとして&&を使用してコマンドをつなぎ合わせます(シーケンスは、エラーがなかった場合にのみ続行されます)

sudo su -
apt-get update && apt-get upgrade && shutdown -h now

ダウンロードについて話している場合(例:wgetを使用)[&&表記を使用してコマンドを連結し、前のコマンドが成功した場合にのみコマンドが順番に実行されるようにします]

sudo su -
wget -t0 -c http://somedownloadsite/path/file.foo && shutdown -h now

ダウンロードがグラフィカルクライアント(gui)によって行われた場合、ダウンロードが成功した後にスクリプトを実行することは、そのクライアントのメカニズムに依存します。


2
sudo su -新しいシェルを開始し、セミコロンの後のコマンドは、新しいシェルが終了するまで実行されないため、これらのコマンドは機能しません。
loevborg 2010年

公正なコメント。命令が個別のコマンドのシーケンスであることを示すように命令を変更しました。
フィンリー

1

個人的には、geditを使用してオリジナルをセットアップする方が簡単だと思いました

yourusername ALL=NOPASSWD: /sbin/halt    

以来、sudo visudo私に混乱して、はっきりと最後の行を示しませんでした

だから私は

sudo -H gedit /etc/sudoers

その後、明確な(私にとって)ページに終わりました

# User privilege specification
root    ALL=(ALL:ALL) ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d
shantiq ALL=NOPASSWD: /sbin/halt

誰かが少し混乱した場合に備えて、


1

シャットダウン時にアクセス許可を変更する代わりに、次のことを実行できます。

sudo bash -c 'apt-get update; apt-get dist-upgrade; shutdown -h now'

これは、単一引用符で囲まれたリストの項目を実行して終了するrootとしてbashプロンプトを実行することです。この方法のボーナスは、Ubuntuがsudo一定の時間が経過すると(初期設定のタイムアウト期間に応じて-デフォルトでは15分)最初の認証を忘れることであり、マシンを横切る誰かが現在のコマンドを停止するだけで、新しいコマンドを実行することはできません。また、を使用するようsuに言うすべての人のために、試してください:

sudo -s

ネットワークが短時間ダウンし、apt-getがその仕事に失敗した場合はどうなりますか?
Quamis、

1
それでもシャットダウンしたいと思うでしょう。-cのコマンドのいずれかの段階が失敗した場合、&&の代わりにセミコロンを使用したため、他の段階が続行されます(&&でチェーンされたコマンドは、それぞれが順番に成功した場合にのみ機能します)。
Calcipher、

0

そんなことができるとは思いません...特定のアプリケーションがいつ終了したかを知る方法はありません。

やったことある sudo su; sleep 3600; halt;


なぜ反対票?
Quamis、

誰かがおそらく「知る方法がない」という部分に反対しましたか?
belacqua 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.