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.)

Saya juga memposting silang di askubuntu .

Jawaban:


25

Itu tergantung Anda memulai tugas. Jika itu adalah beberapa alat baris perintah, Anda cukup menjalankan haltatau shutdown -h now:

  1. wget http://..../somelargefile; halt- haltakan dieksekusi setelahwget

  2. wget http://..../somelargefile && halt- haltakan dieksekusi jika wgettidak ada kesalahan

  3. 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.

KShutdown


4
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.

2
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?
DerWeh

1
@DerWeh Bungkus dalam skrip shell dan ikuti langkah-langkah yang diberikan di sini: stackoverflow.com/q/625409/1025391
moooeeeep

3

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.


3

Jika Anda ingin memantau proses yang sudah dimulai, Anda dapat melakukannya dalam sebuah :

# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now

1

Ada aplikasi, bernama sentinella yang dapat melakukannya untuk Anda dengan GUI-nya: sentinella

untuk menginstalnya:

sudo aptitude update
sudo aptitude install sentinella
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.