Bagaimana saya bisa hibernasi / menangguhkan dari baris perintah dan melakukannya pada waktu tertentu

36

Saya berhasil mengetahui cara menangguhkan / hibernasi sistem dari baris perintah dengan membaca Bagaimana saya bisa menangguhkan / hibernasi dari baris perintah? .

Namun, saya ingin tahu cara menggunakan baris perintah untuk menangguhkan / hibernasi pada waktu tertentu, secara absolut (misalnya, 11:00) atau relatif (misalnya, dalam 30 menit) istilah.

Saya sudah tahu bagaimana melakukan ini dengan shutdown, tapi saya perhatikan yakin apakah perintahnya sama.

Ederico
sumber

Jawaban:

43

Anda dapat menggunakan atperintah untuk menjadwalkan tindakan apa pun, termasuk menjalankan perintah yang diperinci dalam pertanyaan itu .

Misalnya, jika Anda ingin hibernasi dalam 30 menit:

echo 'pmi action hibernate' | at now + 30 min

Atau jika Anda ingin menangguhkan pukul 11:00 malam:

echo 'pmi action suspend' | at 11pm

Jika Anda perlu menjalankan perintah sebagai root, jalankan atdengan sudoalih - alih perintah itu sendiri sudo(karena sudoseharusnya hanya dijalankan secara interaktif, kecuali Anda sudah mengonfigurasinya untuk tidak meminta kata sandi Anda). Misalnya, ekivalen dari perintah di atas menggunakan pm-hibernatedan pm-suspendadalah:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm

Eliah Kagan
sumber
Terima kasih telah mengetahui bahwa kedua situasi diminta ... Saya mengedit judul untuk mencerminkan ini juga. Saya mengubah jawaban saya untuk memasukkan kedua situasi sekarang.
cprofitt
Ada yang tahu bagaimana saya bisa menghapus pekerjaan?
KhoPhi
2
@Rexford atrmPerintah menghapus pekerjaan yang dibuat oleh at.
Eliah Kagan
9

Untuk spesifikasi relatif (mis. "Setelah 30 menit") Anda cukup menggunakan sleepperintah untuk membuat perintah penangguhan / hibernasi menunggu.


Contoh:

Tunggu 30 menit, kemudian tunda:

sudo sleep 30m; sudo pm-suspend

Tunggu 1 jam, lalu hibernasi:

sudo sleep 1h; sudo pm-hibernate
Eenoku
sumber
Saya suka pendekatan ini juga.
KhoPhi
2
Setelah 1 jam pm-hibernateingin kata sandi untuk root lagi dan menangguhkan tidak terjadi.
Vitaly Zdanevich
bagaimana dengan login sebagai root untuk menghindari diminta kata sandi?
banan3'14
4

Untuk waktu tertentu yang diulang - seperti mematikan komputer adalah waktu tertentu setiap hari. gunakan cron.

crontab -e

tambahkan yang berikut:

15 14 1 * * pmi action suspend

Jika Anda ingin menyesuaikannya.

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Untuk pekerjaan satu kali kita perintah at

Misalnya, jika Anda ingin hibernasi dalam 30 menit:

echo 'pmi action hibernate' | at now + 30 min

Atau jika Anda ingin menangguhkan pukul 11:00 malam:

echo 'pmi action suspend' | at 11pm
cprofitt
sumber
2
Menggunakan cronadalah solusi yang baik ketika tujuannya adalah untuk menangguhkan atau hibernasi pada waktu tertentu dalam sehari, atau waktu tertentu pada hari tertentu dalam seminggu, atau bulan, atau tahun. Tetapi untuk menjadwalkan suspensi atau hibernasi tunggal, yang tampaknya menjadi pertanyaan Ederico (dan yang merupakan sesuatu yang lebih masuk akal untuk dilakukan), atperintah harus digunakan. (Anda dapat menjadwalkan satu peristiwa dengan cronmembuat acara itu mengedit crontab yang relevan, misalnya menggunakan sedatau awk, tapi itu sangat kompleks dan tidak perlu; gunakan at.)
Eliah Kagan
Tidak cocok dengan persyaratan relatif yang diminta oleh pertanyaan, hanya berguna untuk jadwal tertentu.
Bruno Pereira
Ya, ini adalah contoh untuk 'waktu spesifik' yang diminta. "Namun, saya ingin tahu cara menggunakan baris perintah untuk menangguhkan / hibernasi pada waktu tertentu, secara absolut (misalnya,
11:00
1
Anda telah mengedit jawaban Anda untuk menambahkan informasi tentang cara menggunakan at, tetapi informasi yang Anda tambahkan sayangnya tidak benar. The <Operator pengalihan teks dari berkas atau perangkat tertentu ke kanan untuk input standar untuk perintah tertentu untuk kiri. Jika Anda ingin menggunakan <alih-alih |(seperti dalam jawaban saya ), Anda harus membuat file dengan pmi action suspend(atau pmi action hibernate) sebagai isinya. Kompleksitas seperti ini menjadi |lebih baik di sini.
Eliah Kagan
Sebagai pedoman umum, ketika Anda memiliki catperintah di sebelah kiri |(misalnya cat foo | bar), Anda bisa menggantinya dengan <ekspresi ( bar < foo). Tetapi ketika Anda memiliki echoperintah di sebelah kiri a |, itu tidak dapat dengan mudah diganti dengan <ekspresi.
Eliah Kagan