Bagaimana cara mematikan Linux pada waktu tertentu dari terminal?


46

Sepertinya saya bisa mematikan menggunakan sudo shutdowndengan menentukan waktu atau menit.

Apakah ada cara untuk menentukan datetime untuk shutdown?

Jawaban:


78

Anda dapat melakukan ini langsung dari shutdown command, lihat man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

Jadi, misalnya:

shutdown -h 21:45

Itu akan berjalan shutdown -hpada 21:45.


Untuk perintah yang tidak menawarkan fungsi ini, Anda dapat mencoba salah satu dari:

A. Menggunakan di

The atdaemon dirancang untuk tepat ini. Tergantung pada OS Anda, Anda mungkin perlu menginstalnya. Pada sistem berbasis Debian, ini dapat dilakukan dengan:

sudo apt-get install at

Ada tiga cara memberi perintah kepada at:

  1. Pipa itu:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. Simpan perintah yang ingin Anda jalankan di file teks, dan kemudian meneruskan file itu ke at:

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. Anda juga dapat meneruskan atperintah dari STDIN:

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    Kemudian, tekan CtrlDuntuk keluar dari atshell. The lsperintah akan dijalankan dalam satu menit.

Anda dapat memberikan waktu yang sangat tepat dalam format [[CC]YY]MMDDhhmm[.ss], seperti pada

$ at -t 201403142134.12 < script.sh

Ini akan menjalankan skrip script.shpada 21:34 dan 12 detik pada 14 Maret 2014.

B. Menggunakan cron (meskipun ini bukan ide yang bagus untuk shutdown)

Pendekatan lainnya adalah menggunakan cronpenjadwal yang dirancang untuk melakukan tugas pada waktu tertentu. Biasanya digunakan untuk tugas-tugas yang akan diulang tetapi Anda juga dapat memberikan waktu tertentu. Setiap pengguna memiliki "crontab" mereka sendiri yang mengontrol pekerjaan apa yang dijalankan dan kapan. Format umum crontab adalah:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Jadi, misalnya, ini akan berjalan lssetiap hari pada 14:04:

04 14 * * * ls

Untuk mengatur cronjob untuk tanggal tertentu:

  1. Buat crontab baru dengan menjalankan crontab -e. Ini akan memunculkan jendela editor teks favorit Anda.

  2. Tambahkan baris ini ke file yang baru saja dibuka. Contoh khusus ini akan berjalan pada 14:34 pada 15 Maret 2014 jika hari itu adalah hari Jumat (jadi, OK, itu mungkin berjalan lebih dari sekali):

    34 14 15 5  /path/to/command        
    
  3. Simpan file dan keluar dari editor.

Jawaban SO ini menyarankan cara untuk menjalankannya hanya sekali tetapi saya belum pernah menggunakannya sehingga saya tidak dapat menjaminnya.


2
Menjadwalkan shutdown dengan cron adalah kebiasaan yang sangat buruk. Tiba-tiba Anda akan bertanya-tanya mengapa server mati setiap Senin pagi.
Ouki

4
@ Ouki Maaf, tapi saya tidak tahu di mana saya merekomendasikan menggunakan cron untuk shutdown. Saya menyebutkan dalam tanda kurung bahwa itu mungkin (itu) tetapi tidak merekomendasikannya. Kami cenderung menyukai jawaban yang komprehensif di sini karena itulah saya menawarkan alternatif lain sementara tidak pernah menyarankan mereka harus digunakan shutdown. Saya merasakan pengalaman buruk itu, itu tidak mungkin menyenangkan.
terdon

2
Ini lebih tentang saran, karena Anda mencampur shutdownpenjadwalan dan crondalam jawaban yang sama ... Apakah itu workstation atau server mail 1000 pengguna (pengalaman sedih saya) lebih tentang konsekuensi dari kebiasaan buruk.
Ouki

3
Saya dengan Ouki di sini. Saat berdiskusi shutdown, seseorang seharusnya tidak memasukkan cron. (terutama dengan seseorang yang tidak akan tahu mengapa itu ide yang mengerikan.)
Ricky Beam

2
Saya agak bingung bahwa jawaban ini sepertinya mengarah pada informasi yang sudah diasumsikan oleh pertanyaan itu. Sepertinya OP tahu cara menentukan waktu untuk mematikan, tetapi ingin tahu cara menentukan tanggal dan waktu. Itu ditujukan dalam jawaban ini, tetapi diberikan seolah-olah itu informasi tambahan, ketika itulah yang diminta.
Weeble

24

Tidak, Anda tidak dapat menentukan tanggal pada perintah penutupan tetapi ada dua alternatif:

1) Cara termudah adalah menggunakan perintah at . Contoh berikut akan dijalankan shutdown +5pada waktu dan hari tertentu:

echo "shutdown +5" | at 10:05am 2019-01-19

2) jika Anda tidak keberatan menggunakan kalkulator Anda dan ingin mematikan dalam katakanlah 24 jam (24 * 60 = 1440 menit) dan Anda benar-benar yakin sistem tidak akan reboot di antara:

shutdown -r +1440

2
Alasan untuk jawaban saya di atas: jawaban terdon benar dan sangat komprehensif tapi terlalu cerewet (setidaknya IMHO)
ndemou

2
Jika dengan cerewet maksudmu membantu dan komprehensif ... Jawaban Anda bahkan tidak menjelaskan atperintah.
Anthony

@Anthony Saya percaya cara menggunakan ini attidak perlu penjelasan. Saya bisa melihat Anda percaya sebaliknya. Pikiran yang berbeda, pandangan yang berbeda.
ndemou

Jawaban ini tidak lagi benar. Perintah van Smoorenburg, Upstart, dan systemd shutdowntidak mengizinkan spesifikasi tanggal. Tetapi nosh toolset shutdownmendukung, mendukung sintaks BSD yang sudah lama ada.
JdeBP

@ JdeBP: alternatif apa dari dua yang Anda yakini tidak lagi benar dan sudahkah Anda menguji dan memverifikasi itu? Saya baru saja menguji kedua perintah dalam 3 sistem (Ubuntu 18.04,16.04 & CentOS 7) dan mereka bekerja dengan baik. Mengenai sisa komentar Anda ("The van Smoorenburg ...") Saya tidak yakin apakah ini merupakan klarifikasi atas pernyataan Anda bahwa jawaban ini tidak lagi benar atau komentar umum. Mungkin Anda harus memposting jawaban dengan sedikit informasi lebih lanjut.
ndemou

6

Ini akan mematikan sistem Anda pada pukul 12:00:

$ sudo shutdown -h 12:00

Pilihan:

-h, -P, --poweroff

Matikan mesin.

-r, --reboot

Nyalakan ulang mesin.

-c

Batalkan pematian yang tertunda.


5
Metode Anda tidak menunjukkan cara mematikan pada tanggal tertentu ...
Askar
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.