Bagaimana cara mematikan komputer setelah tugas selesai?
25
Saya biasanya memulai unduhan sebelum pergi ke sekolah.
Perintah mana yang harus saya gunakan untuk secara otomatis melakukan penghematan yang diperlukan dan mematikan komputer setelah tugas tertentu selesai?
(Katakan, setelah menginstal pembaruan, atau setelah mengunduh file besar.)
wget http://..../somelargefile && halt- haltakan dieksekusi jika wgettidak ada kesalahan
wget http://..../somelargefile || halt- haltakan dieksekusi jika wgetmengembalikan kesalahan
Alternatif untuk ini adalah menggunakan kshutdown- dalam aplikasi ini Anda dapat menentukan tindakan apa yang harus dilakukan (reboot / shutdown / hibernate / etc atau eksekusi perintah) dan kapan (setelah beberapa waktu atau ketika aplikasi lain keluar). Jika Anda ingin menggunakan alat ini, Anda harus memilih proses yang benar - beberapa utilitas pembaruan memulai beberapa subproses.
Anda juga dapat memberikan shutdownwaktu untuk menunggu; tidak perlu menggunakan kshutdown untuk tujuan itu.
Cascabel
1
Tidak, tetapi shutdowntidak memiliki cara apa pun untuk menunggu acara yang sebenarnya.
Shadur
18
Setiap proses memiliki direktori bernama sesuai dengan id prosesnya (pid) di sistem procfile. Oleh karena itu Anda dapat menunggu penghentian proses tertentu dengan memeriksa apakah direktori tersebut ada berulang kali.
Anda dapat menggunakan ini untuk melakukan shutdown sistem setelah proses penghentian seperti ini (ganti 2296 oleh pid untuk menunggu):
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
Keuntungan:
Anda dapat memutuskan apakah akan mematikan atau tidak setelah mematikan perintah shell
Shutdown dikeluarkan sebagai root, perintah untuk menunggu belum tentu dilakukan sebagai root (tidak perlu untuk menyelesaikan akhir-kata sudosandi prompt).
Kekurangan:
Mungkin saja proses Anda berakhir dan OS kemudian menggunakan kembali pid yang sama untuk proses yang baru melahirkan dalam detik itu (kondisi balapan). Dengan demikian Anda akan terus menunggu proses baru itu berakhir.
Poin utama: Ini berfungsi bahkan jika proses sudah dimulai.
Heisenberg
Jika Anda telah memulai sesuatu dari terminal yang masih Anda buka psdi terminal yang sama akan membantu Anda menemukan PID untuk CMD. Jika prosesnya adalah / di terminal lain pipping output ps untuk semuanya melalui grep untuk memfilter untuk perintah Anda akan membantu Anda menemukannyaps -elf | grep <command_related_word>
TafT
Lebih baik periksa jawaban saya berdasarkan greppgrep alias ...
Gilles Quenot
Bagaimana saya bisa menempatkan perintah ini di latar belakang?
Anda dapat menggunakan &&dan ||operator untuk menghubungkan perintah bersama. Sebagai contoh:
apt-get update && sleep 2 && init 0
yang akan melakukan pembaruan ke sistem menggunakan aptitude, tunggu 2 detik, dan pergi ke runlevel 0, tergantung pada sistem Anda, ini mungkin atau mungkin tidak benar-benar mematikan perangkat keras.
Untuk berbicara dengan satu operasi atau lebih mengikuti operasi yang lebih sewenang-wenang, seperti, mungkin browser web, unduh Anda akan memerlukan logika tambahan untuk menonton file unduhan untuk memverifikasi bahwa unduhan sebenarnya telah selesai, namun, logika shell tidak berubah.
shutdown
waktu untuk menunggu; tidak perlu menggunakan kshutdown untuk tujuan itu.shutdown
tidak memiliki cara apa pun untuk menunggu acara yang sebenarnya.Setiap proses memiliki direktori bernama sesuai dengan id prosesnya (pid) di sistem
proc
file. Oleh karena itu Anda dapat menunggu penghentian proses tertentu dengan memeriksa apakah direktori tersebut ada berulang kali.Anda dapat menggunakan ini untuk melakukan shutdown sistem setelah proses penghentian seperti ini (ganti 2296 oleh pid untuk menunggu):
Keuntungan:
sudo
sandi prompt).Kekurangan:
sumber
ps
di terminal yang sama akan membantu Anda menemukan PID untuk CMD. Jika prosesnya adalah / di terminal lain pipping output ps untuk semuanya melalui grep untuk memfilter untuk perintah Anda akan membantu Anda menemukannyaps -elf | grep <command_related_word>
pgrep
alias ...Anda dapat menggunakan
&&
dan||
operator untuk menghubungkan perintah bersama. Sebagai contoh:yang akan melakukan pembaruan ke sistem menggunakan aptitude, tunggu 2 detik, dan pergi ke runlevel 0, tergantung pada sistem Anda, ini mungkin atau mungkin tidak benar-benar mematikan perangkat keras.
Untuk berbicara dengan satu operasi atau lebih mengikuti operasi yang lebih sewenang-wenang, seperti, mungkin browser web, unduh Anda akan memerlukan logika tambahan untuk menonton file unduhan untuk memverifikasi bahwa unduhan sebenarnya telah selesai, namun, logika shell tidak berubah.
sumber
Jika Anda ingin memantau proses yang sudah dimulai, Anda dapat melakukannya dalam sebuah shell :
sumber
Ada aplikasi, bernama sentinella yang dapat melakukannya untuk Anda dengan GUI-nya:
untuk menginstalnya:
sumber