Bagaimana cara menonaktifkan shutdown sehingga proses penting tidak dapat terganggu?

10

Apa cara paling sederhana untuk menonaktifkan atau menunda sementara reboot / shutdown ketika proses penting sedang berjalan? Proses ini memakan waktu terlalu lama untuk diselesaikan dan tidak dapat dijeda / dilanjutkan, jadi saya ingin menghindari mematikan pc saat sedang berjalan. Itu dijalankan dari cron jadi kecuali saya secara manual memeriksa proses yang berjalan, saya tidak akan tahu bahwa itu sedang berjalan. Terima kasih.

zang3tsu
sumber
5
Kemungkinan duplikat: SO: Untuk sementara waktu mencegah linux dimatikan , petunjuk jawaban pada berbagai tingkat yang dapat dilakukan, yaitu skrip shell atau manajemen daya lingkungan desktop.
sr_
Saya tidak berpikir bahwa jawaban itu cukup spesifik tanpa penjelasan runlevel atau tautan ke penjelasan. Itu tidak ada dalam U&L SE. Bolehkah saya bertanya distro dan versi mana yang Anda gunakan?
bsd
Alih-alih memodifikasi prosedur penutupan, tulis pembungkus sehingga tugas menunjukkan selesai, baik mengirimkan atau menyentuh file. Tes untuk penyelesaian pekerjaan, lalu jalankan shutdown. (cron mengirimkan hasil pekerjaannya ke pemilik, tetapi itu bisa di-tweak).
bsd

Jawaban:

1

Jalankan which shutdownuntuk melihat di mana jalan menuju program shutdown. Anda dapat mengganti nama file, meskipun saya sarankan untuk tidak melakukannya.

Metode lain (lebih aman). Gunakan alias: alias shutdown=' ' Sesuatu seperti ini lebih reversibel. Jika Anda mencoba mencegah shutdown dari semua pengguna, tambahkan alias secara global.

Emil
sumber
Saya sedang berpikir untuk menggunakan alias, sekarang saya hanya perlu menulis skrip saya. Terima kasih!
zang3tsu
Bagaimana dengan perintah lain seperti stop atau poweroff. Apakah Anda perlu membuat alias '/ mengganti nama juga?
mintyfreshpenguin
17

Untuk sistem yang lebih baru dengan systemd ini telah diselesaikan oleh systemd-inhibit. Contoh penggunaan:

systemd-inhibit --why="Doing weekly backup" bash my-backups.sh

Kemudian, jika pengguna mencoba untuk mematikannya tidak akan diizinkan kecuali dipaksa.

❯ systemctl poweroff
Operation inhibited by "bash my-backups.sh" (PID 2414 "systemd-inhibit", user ntrrgc),
reason is "Doing weekly backup".
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.
Alicia
sumber
Namun ada masalah ini: menjalankannya sebagai root secara non-interaktif akan mengabaikan kunci. github.com/systemd/systemd/issues/2680
Alicia
Saya pikir Anda salah membaca laporan bug itu, mereka berbicara tentang menjalankan poweroffsebagai root non-interaktif
Ferrybig
Bagaimana saya salah membaca laporan bug? : S
Alicia
2

Nonaktifkan "shutdown / reboot / poweroff / halt / hostname" seperti perintah di server kritis misi

chmod 0 /sbin/shutdown

maka jika Anda perlu menggunakannya, chmod kembali ke chmod 0755.

danny
sumber
1
Bagaimana halt, poweroffdan systemctl poweroff?
Martin Ueding
1

Saya akan menonaktifkan perintah di file / etc / sudoers sehingga hanya root yang bisa menjalankannya.

di / etc / sudoers

# Cmnd alias specification
Cmnd_Alias     SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
vmule   ALL=(ALL:ALL) ALL, !SHUTDOWN

dan ketika saya mencoba menjalankan perintah:

vmule@debian:~$ sudo /sbin/shutdown  -r now
Sorry, user vmule is not allowed to execute '/sbin/shutdown -r now' as root on debian.vm
vmule
sumber
dapatkah Anda menguraikan jawaban Anda? shutdown mungkin tidak secara eksplisit ditentukan di / etc / sudoers.
Archemar
Tentu, saya mengedit jawabannya dengan penjelasan yang lebih baik. Cheers
vmule
0

Saya ingin mencegah pengguna lokal mematikan laptop selama peningkatan. Menonaktifkan perangkat input adalah cara terbaik. Bagi saya itu sudah cukup untuk menonaktifkan mouse, tetapi keyboard dapat dinonaktifkan juga.

Tentu saja ada kekurangannya, komputer tidak dapat digunakan selama periode ini.

Nonaktifkan input Keyboard & Mouse di unix (di bawah X)

Daniel F
sumber
-1

shutdownsecara teknis aplikasi juga, yang dapat Anda hapus. Lari which shutdown. whichadalah perintah yang menunjukkan jalan aplikasi. Dalam kasus saya hasilnya adalah /sbin/shutdown. Ini file sehingga Anda bisa melakukannya rm shutdown. Atau jika Anda ingin menonaktifkannya untuk sementara, salin nama dan hapus file aslinya.

Anda harus memiliki izin yang memadai jika ingin melakukannya rm shutdown. Ini hanya baca, karena itu mengapa Anda mungkin mendapatkan kesalahan. Coba hapus sebagai rootatau jika perlu coba gunakan perintah rm shutdown.

William Edwards
sumber
3
Kenapa -rbenderanya? Anda tidak memerlukannya untuk satu file, dan jika Anda salah ketik, bencana akan terjadi.
MadTux