Apa perbedaan antara shutdown 18:00 dan shutdown 18:00?

30

at 18:00 shutdown nowdan shutdown 18:00, apakah mereka memulai layanan yang sama? Apakah mereka bekerja dengan cara yang sama?

yang
sumber

Jawaban:

48

at 18:00 shutdown nowmenciptakan pekerjaan "at", yang dilakukan pada waktu yang ditentukan oleh atdaemon atau mungkin crondaemon, tergantung pada sistem Anda.

shutdown 18:00memulai proses di shell Anda yang menunggu hingga waktu yang ditentukan dan kemudian melakukan shutdown. Perintah ini dapat dihentikan jika mis. Sesi shell Anda dihentikan.

Hasil akhirnya dalam banyak kasus akan sama: sistem dimatikan pada pukul 18:00.

Satu perbedaan adalah bahwa jika Anda menggunakan at, pekerjaan itu akan disimpan dan jika sistem dimatikan dengan cara lain sebelum pukul 18:00, setelah boot lagi pekerjaan itu masih menunggu untuk dijalankan; jika waktu telah berlalu, shutdown akan dilakukan segera yang bisa sangat tak terduga.

Perbedaan lainnya adalah shutdown 18:00membuat /run/nologinfile 5 menit sebelum waktu yang dijadwalkan untuk mencegah orang masuk setelah momen itu. Pesan siaran juga akan dikirim untuk memperingatkan pengguna yang masuk bahwa sistem akan dimatikan.

Anda perlu memperhitungkan perbedaan-perbedaan ini untuk memutuskan mana yang akan digunakan.

Wurtel
sumber
1
" shutdown 18:00memulai proses di shell Anda yang menunggu". Bagaimana jika Anda logout sebelumnya?
RonJohn
1
@ RonJohn: Maka itu tergantung apakah Anda menggunakan nohupatau disownatau apa pun, jika logout biasanya membunuh proses latar belakang yang berjalan . Sistem yang berbeda dapat memiliki standar yang berbeda untuk itu. (Saya berasumsi bahwa benar-benar ada sudo shutdownproses yang masih berjalan, alih-alih hanya memberi sinyal inituntuk memulai penghentian waktu. Yang terakhir mungkin sebenarnya yang terjadi, tetapi saya belum memeriksa baru-baru ini. Oh, tetapi @JdeBP telah; lihat jawaban itu )
Peter Cordes
Apakah benar-benar memungkinkan untuk mengatur atagar berfungsi melalui cronbukan atd?
terdon
3
Ada moderator berlian yang belum membaca How to Ask . (-: Anda akan menemukan bahwa pertanyaan ini ditanyakan empat tahun lalu di unix.stackexchange.com/questions/147643 .
JdeBP
"Juga pesan siaran akan dikirim untuk memperingatkan pengguna yang masuk bahwa sistem akan dimatikan." Saya akan mengatakan ini adalah perbedaan paling penting dalam server yang memiliki banyak pengguna, saya akan menyoroti lebih dalam jawaban ini.
JiK
23

Dan sekarang, jawaban systemd.

Jika Anda memiliki CentOS 7, Anda memiliki sistem operasi systemd dan jawabannya berbeda.

at 18:00 shutdown nowmasih menjadwalkan melalui atsubsistem, tetapi shutdownperintah itu, serta yang Anda panggil secara langsung shutdown 18:00, berbeda. Ini sebenarnya systemctlprogram systemd . systemctlmelakukan berbagai hal secara berbeda.

Pertama-tama, systemctlmengirim permintaan penutupan yang dijadwalkan untuk diproses oleh demon, cukup banyak seperti dalam atkasus ini. Ini adalah systemd dasmon, meskipun, khususnya logind( systemd-shutdownddasmon telah dihapus dari systemd pada Mei 2015, yang sejak itu berubah meresap ke versi minor kemudian dari CentOS 7), bukan atsubsistem. systemctlberbicara protokol internal ke broker Desktop Bus (seluruh sistem) yang kemudian berkomunikasi dengannya logind.

Jadi, seperti dalam atkasus ini, tidak ada shutdownproses duduk di sana menghitung mundur dan menelurkan wallpesan. Jadi seseorang dapat logout dan ini tidak akan mempengaruhi jadwal, dan pembatalan tidak sesederhana hanya mengganggu / membunuh proses latar depan sesi login. Sama seperti dengan at.

Masih ada pesan, tidak seperti dalam atkasus ini, tetapi mereka dikeluarkan oleh logind. Juga tidak seperti atkasing, pekerjaan terjadwal tidak bertahan di seluruh sistem restart, sehingga shutdown yang sebenarnya membatalkan yang dijadwalkan. Ada adalah sebuah file di filesystem, tetapi di bawah /run/systemd/shutdownyang merupakan penyimpanan non-persistent.

Perbedaan lebih lanjut adalah bahwa hanya ada satu shutdown terjadwal pada suatu waktu, sedangkan satu dapat mengirimkan beberapa atpekerjaan, dan Kit Kebijakan akan menerapkan aturan untuk shutdownberjalan dalam konteks sesi non-login sebagai atpekerjaan yang berbeda dengan aturan yang diterapkan untuk shutdowndijalankan di konteks sesi masuk. Yang terakhir mungkin lebih permisif, yang memungkinkan (katakanlah) unprivileged pengguna yang login ke sesi login aktif untuk mematikan sistem.

Bacaan lebih lanjut

JdeBP
sumber