Jawaban:
at 18:00 shutdown now
menciptakan pekerjaan "at", yang dilakukan pada waktu yang ditentukan oleh at
daemon atau mungkin cron
daemon, tergantung pada sistem Anda.
shutdown 18:00
memulai 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:00
membuat /run/nologin
file 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.
nohup
atau disown
atau 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 shutdown
proses yang masih berjalan, alih-alih hanya memberi sinyal init
untuk memulai penghentian waktu. Yang terakhir mungkin sebenarnya yang terjadi, tetapi saya belum memeriksa baru-baru ini. Oh, tetapi @JdeBP telah; lihat jawaban itu )
at
agar berfungsi melalui cron
bukan atd
?
Jika Anda memiliki CentOS 7, Anda memiliki sistem operasi systemd dan jawabannya berbeda.
at 18:00 shutdown now
masih menjadwalkan melalui at
subsistem, tetapi shutdown
perintah itu, serta yang Anda panggil secara langsung shutdown 18:00
, berbeda. Ini sebenarnya systemctl
program systemd . systemctl
melakukan berbagai hal secara berbeda.
Pertama-tama, systemctl
mengirim permintaan penutupan yang dijadwalkan untuk diproses oleh demon, cukup banyak seperti dalam at
kasus ini. Ini adalah systemd dasmon, meskipun, khususnya logind
( systemd-shutdownd
dasmon telah dihapus dari systemd pada Mei 2015, yang sejak itu berubah meresap ke versi minor kemudian dari CentOS 7), bukan at
subsistem. systemctl
berbicara protokol internal ke broker Desktop Bus (seluruh sistem) yang kemudian berkomunikasi dengannya logind
.
Jadi, seperti dalam at
kasus ini, tidak ada shutdown
proses duduk di sana menghitung mundur dan menelurkan wall
pesan. 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 at
kasus ini, tetapi mereka dikeluarkan oleh logind
. Juga tidak seperti at
kasing, 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/shutdown
yang merupakan penyimpanan non-persistent.
Perbedaan lebih lanjut adalah bahwa hanya ada satu shutdown terjadwal pada suatu waktu, sedangkan satu dapat mengirimkan beberapa at
pekerjaan, dan Kit Kebijakan akan menerapkan aturan untuk shutdown
berjalan dalam konteks sesi non-login sebagai at
pekerjaan yang berbeda dengan aturan yang diterapkan untuk shutdown
dijalankan di konteks sesi masuk. Yang terakhir mungkin lebih permisif, yang memungkinkan (katakanlah) unprivileged pengguna yang login ke sesi login aktif untuk mematikan sistem.
shutdown 18:00
memulai proses di shell Anda yang menunggu". Bagaimana jika Anda logout sebelumnya?