Linux Shutdown Graceful


17

Saya telah mendengar bahwa "shutdown -h now" bukan perintah shutdown yang anggun karena ia melakukan sesuatu yang mirip dengan "kill -9" untuk semua proses, sebagai lawan dari "kill -15".

Apakah ini benar, dan jika demikian, apa cara yang lebih anggun dari penutupan untuk memastikan semuanya memiliki waktu untuk membersihkan diri sendiri?

Ps Menggunakan CentOS, Ubuntu, dan Debian terutama.


Saya akan menunggu orang lain untuk berpadu, tetapi itu tidak terdengar sama sekali. -h hanya mengatakannya untuk menempatkan sistem ke mode HALT sebagai lawan reboot. Dan "sekarang" hanya berarti tidak ada tenggang waktu bagi pengguna untuk mematikan. Tidak yakin bagaimana semua ini akan memodifikasi perilaku kill yang sebenarnya dari shutdown
Jeffery Smith

4
Silakan baca halaman manual untuk shutdown ( man shutdown). Ini menjelaskan hal ini sepenuhnya.
Andrew Schulman

Jawaban:


15

shutdown -h nowakan menelepon /etc/rc.d/rcatau /etc/init.d/rc. The rcScript akan memanggil skrip membunuh untuk runlevel baru (0 untuk -h, 6 untuk -r), diikuti oleh script start.

Anda akan melihat S30killprocsatau S00killallsesuatu seperti itu tergantung pada distro Anda. Ini terjadi setelah semua skrip kill dipanggil untuk mencoba menghentikan setiap layanan secara bergantian. Ini akan mencoba kill -15terlebih dahulu, diikuti oleh kill -9.

Jawaban singkat: shutdown -h nowatau shutdown -r nowanggun. haltdan rebootdulunya tidak anggun, tetapi mereka hanya akan memanggil shutdownAnda kecuali Anda menggunakan -fopsi.


12

Tidak, itu tidak benar. shutdownperubahan level init yang kemudian menjalankan semua skrip shutdown. Apa yang dilakukan skrip ini tergantung pada skrip. Tetapi mereka biasanya tidak menghentikan proses tetapi mengirimkan mereka sinyal untuk mengakhiri.

Jadi ini adalah kutipan manual untuk shutdown:

   shutdown  brings  the system down in a secure way.  All logged-in users
   are notified that the system is going down, and  login(1)  is  blocked.
   It is possible to shut the system down immediately or after a specified
   delay.  All processes are first notified that the system is going  down
   by the signal SIGTERM.  This gives programs like vi(1) the time to save
   the file being edited, mail and news processing programs  a  chance  to
   exit  cleanly,  etc.   shutdown  does  its  job  by signalling the init
   process, asking it to change the runlevel.  Runlevel 0 is used to  halt
   the  system, runlevel 6 is used to reboot the system, and runlevel 1 is
   used to put to system into a state where administrative  tasks  can  be
   performed; this is the default if neither the -h or -r flag is given to
   shutdown.  To see which actions are taken on halt  or  reboot  see  the
   appropriate entries for these runlevels in the file /etc/inittab.

1
Nah, pada sebagian besar, jika tidak semua distro yang saya gunakan, hal terakhir yang dilakukan skrip runlevel 6 (reboot) adalah menjalankan global killall, untuk menangkap proses yang tertinggal atau macet. Tapi ini dijalankan setelah semua skrip berhenti normal selesai.
adaptr

2
@adaptr Tentu. Tetapi proses memiliki kesempatan untuk mengakhiri dengan anggun. Jika tidak, tidak ada kemungkinan lain selain membunuh mereka.
mailq
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.