wgetでファイルをダウンロードしていて、ダウンロードが終了したらコンピューターの電源をオフにしたいのですが、どこかに行く必要があります:)プロセスが終了したときにbashでコマンドを正確に実行することは可能ですか?
私はこれが機能することを知っています:
wget http://example.com/file.rar; 今すぐシャットダウン
しかし、私だけを入力した場合:
wget http://example.com/file.rar
wgetでファイルをダウンロードしていて、ダウンロードが終了したらコンピューターの電源をオフにしたいのですが、どこかに行く必要があります:)プロセスが終了したときにbashでコマンドを正確に実行することは可能ですか?
私はこれが機能することを知っています:
wget http://example.com/file.rar; 今すぐシャットダウン
しかし、私だけを入力した場合:
wget http://example.com/file.rar
回答:
次のようなことができます:
waitは、現在のシェル(つまり、このwget)からバックグラウンドで実行されるすべてのプログラムを待機します。
待機が終了すると、シャットダウンが続行されます。
別のシェルでは、使用します
ps -u <your username> | grep wget
待機するコマンドのPIDを見つけるには、
wait <PID>; shutdown -h now
そのため、プロセスが終了するまでシャットダウンは実行されません。depesz's answerも参照してください。
wait同じシェルから開始されたコマンドに対してのみ機能します
私の解決策は次のとおりです。Control+ Zを使用して実行時間の長いタスクを中断し、次のように入力します。
fg; echo "Done!"
コマンドの成功または失敗に基づいて異なる反応を実行する場合は、&&および||を使用します 短絡演算子として。
fg && echo "Success!" || echo "Failure!"
編集:これはsudoでは機能しません。パスワードを要求するためです。したがって、sudoを使用して例を削除しました。2番目のタスクにsudoが必要な場合は、ここに掲載されている別の方法を使用してください。
一方、GNOMEとKDEの両方が、適切なD-Bus信号などを送信することにより、sudoを使用せずにシャットダウン/リブートをトリガーする方法を提供すると考えています。
fg...、しかしsudo、それはパスワードの入力を求められた場合問題になる可能性
はい、2番目のコマンドを入力してEnterキーを押します。現在のプログラムがテキストをスクロールしている場合、あなたが正しく入力しているものを見ることができないので、あなたが正しくそれをするようにキーを見てください。
よりスマートな方法は、別のTTY(CTRL + ALT + F1からF6)に切り替えてコマンドを同時に実行することです。または、画面のようなコマンドラインプログラムを使用している場合は、新しいウィンドウを作成できます。
あなたが空想を得たいなら、wgetのリターンステータスをチェックし、それが成功した場合のみシャットダウンします。
% wget http://example.com/file.rar
% if [ $? -eq 0 ]
> then
> shutdown now
> fi
wgetですが、実行中にテストをビルドするためのプロンプトが表示されません。