Cara terbaik untuk memulai ulang CentOS dengan anggun?

82

Saya selalu menggunakan perintah:

shutdown -r now

Namun, terkadang itu menyebabkan masalah MySQL.

Apa cara paling anggun untuk memulai ulang CentOS?

Saya telah melihat:

reboot

dan

halt

Bagaimana saya bisa dengan lembut me-reboot mesin?

Pengguna
sumber
3
rebootpada dasarnya adalah alias untuk shutdown -r... jadi ... ya.
Nathan C
Apakah posting saya menjawab pertanyaan Anda, atau apakah Anda perlu tahu hal lain?
Joffrey
Belum dapat berkomentar di sini, tetapi saya ingin memberi peringatan di sini tentang reboot. Jika instance ada di Amazon EC2, melakukan reboot -h sekarang akan menutup instance, jadi jangan pernah lakukan ini. Sebaliknya, jika Anda harus mematikan atau reboot, lakukan melalui antarmuka online Amazon, bukan shell. Jika Anda membuat instance, Anda dapat menghentikannya, melepaskan volume, membuat instance terpisah, dan melampirkan volume padanya, tanpa melepaskan volume pertama yang datang dengan instance baru. Maka Anda harus ssh ke instance baru, pasang volume lama, dan dapatkan file Anda darinya.
kloddant
sebenarnya, Anda ingin menjalankan sync: sync;sebelum menjalankan shutdown -rsehingga semua file I / O akan disinkronkan. Saya menduga ini juga akan menyelesaikan masalah denganmysql
user3629249

Jawaban:

96

Tidak ada cara yang lebih baik untuk me-restart server Anda dengan menggunakan apa pun selain perintah-perintah itu.

  • shutdown adalah cara paling umum untuk menghentikan sistem Anda. Menambahkan argumen -rdan waktu tertentu (atau ' now') akan reboot sistem Anda alih-alih menghentikannya setelah urutan shutdown.
  • reboot adalah shutdown putaran pembungkus yang melakukan beberapa pemeliharaan harddisk (menyinkronkan dan / atau menempatkan dalam mode siaga dan tidak benar-benar relevan).
  • Versi baru dari reboot(> 2.74) akan dimulai shutdownjika tidak di runlevel 0 atau 6.
  • Kebanyakan skrip init memanggil berhenti untuk membuat log in utmp .

Distribusi modern akan memiliki semua tugas yang dicakup terlepas dari perintah yang Anda gunakan. Pada dasarnya mereka semua memulai shutdown run-time skrip SysV Anda (CentOS <7) atau systemd (CentOS> = 7) (Saya akan memanggil mereka skrip init untuk kemudahan membaca).

Mematikan menggunakan skrip init langkah demi langkah menghentikan semua layanan Anda terdaftar di bawah biasanya runlevel 'S'. Skrip init individual dapat memiliki batas waktu, seperti skrip init MySQL di CentOS. Ketika argumen berhenti diberikan dan daemon tidak akan dimatikan dalam jumlah waktu yang wajar, skrip akan berhenti dan keluar memberikan kegagalan. Proses shutdown akan berlanjut seolah-olah tidak ada yang salah, hanya membutuhkan waktu sedikit lebih lama dan mungkin mencetak peringatan. Pada akhirnya, ketika semua skrip init dieksekusi, hal yang tak terhindarkan akan terjadi: semua proses yang masih berjalan akan mendapatkan SIGTERM sinyal dan, setelah beberapa detik (2 atau 5), a SIGKILL. Ini akan membersihkan sisanya sebelum panggilan ACPI dilakukan untuk benar-benar mem-boot ulang atau mematikan sistem Anda.

Satu pengecualian adalah menggunakan rebootperintah dengan -fopsi, ini akan melewatkan mengeksekusi skrip init dan akan reboot sistem secara langsung.

Anda akan lebih baik memperbaiki akar-penyebab kekhawatiran Anda: MySQL tidak dimatikan dengan benar.

Seringkali ini karena beban pekerjaan yang sangat besar yang perlu dilakukan sebelum daemon dapat keluar dengan aman. Saya pernah memiliki instance MySQL dengan +300.000 tabel yang membutuhkan waktu lebih dari satu jam untuk keluar. Masalah serupa dapat ditemukan dengan sistem yang menggunakan buffer besar dan ketersediaan I / O yang jarang.

Joffrey
sumber
31

Shutdown anggun dari Centos 6.x harus dilakukan dengan menggunakan perintah sebagai root:

shutdown -h now

Ini akan berusaha untuk menghentikan semua layanan yang berjalan sebelum mematikan server dengan anggun.

Menggunakan perintah ini juga mencegah masalah soket mySQL.

Demikian pula, untuk reboot yang anggun:

reboot -h now

Anda dapat membaca jawaban sebelumnya tentang pertanyaan serupa di sini:

https://stackoverflow.com/questions/20407292/centos-another-mysql-daemon-already-running-with-the-same-unix-socket

GeckoSEO
sumber
7
Saya pikir maksud Anda shutdown -r now, atau mungkin adil reboot. The rebootperintah tidak memiliki -hpilihan.
Michael Hampton
1
Hai Michael, Centos 6.x memang memiliki opsi untuk menghentikan layanan sebelum me-reboot. "shutdown -h now" adalah shutdown yang anggun, dan "reboot -h now" adalah reboot yang anggun. Cobalah di server Centos Anda ...
GeckoSEO
1
Oh Dan apa yang dilakukan -hopsi ini ? Itu tidak ada di halaman manual.
Michael Hampton
2
Benarkah? Apakah Anda memiliki beberapa dokumentasi untuk ini? Karena, pertama, itulah yang rebootdilakukannya tanpa -h . Kedua, tidak didokumentasikan seperti itu sama sekali, sejauh yang saya tahu.
Michael Hampton
2
Doc yang baru saja Anda tautkan menyatakan dengan tepat apa yang telah saya katakan kepada Anda! reboottidak punya -hpilihan, shutdowntidak.
Michael Hampton
2

Saat memberikan instruksi jarak jauh kepada pengguna akhir dan pelanggan, saya memerintahkan mereka poweroffuntuk mematikan dan mematikan sistem.

Jika mereka menginginkan boot ulang yang hangat, saya sarankan mereka menggunakan rebootperintah.

Saya kira orang bisa mengatakan bahwa menerbitkanCtrl-Alt-Delete juga menyelesaikan ini;)

putih
sumber
Saya tidak setuju dengan balasan ini. reboot dan shutdown (Ctrl-Alt-Delete) sangat kuat dan dapat di beberapa lingkungan, seperti yang menjalankan mySQL, menyebabkan socket "lock", yang kemudian mengharuskan membuat socket baru, atau menghapus / memindahkan socket yang ada sebelum membuat yang baru satu.
GeckoSEO
1
@GeckoSEO Itu adalah saran jenaka mengacu pada bahaya memungkinkan Ctrl-Alt-Delete diaktifkan di server Linux.
ewwhite
tanggapan saya di sisi lain tidak bercanda, saya hanya berusaha untuk mengklarifikasi jawaban bagi mereka yang mencoba untuk menyelesaikan pertanyaan ini. Silakan lihat jawaban saya sebelumnya, saya harap ini membantu.
GeckoSEO
2

Saya menggunakan perintah 'init 6'.

init 6 memberi tahu proses init untuk mematikan semua proses / daemon yang muncul seperti yang tertulis dalam file init (dalam urutan terbalik yang dimulai) dan terakhir memohon perintah shutdown -r sekarang untuk mem-boot ulang mesin.

Informasi lebih lanjut dapat ditemukan pada pertanyaan ini .

Itai Ganot
sumber
0

Saya merasa Anda mungkin tidak menyukai jawaban ini, tetapi jawaban ini mencakup beberapa wawasan yang tidak ada yang dipertimbangkan. . . Anda menulis:

Saya selalu menggunakan perintah:

shutdown -r sekarang

Namun, terkadang itu menyebabkan masalah MySQL.

Masalahnya di sini BUKAN metode shutdown Anda, adalah bagian dari perangkat lunak yang tidak dapat menangani shutdown dengan benar; MySql.

Cara HANYA Anda benar-benar dapat mengatasi ini adalah mengganti MySql (PostgreSql adalah pengganti yang hebat) ATAU menulis skrip shutdown Anda sendiri yang coddles pertama MySql seperti bayi, dan ketika senang ditutup maka THEN mematikan sistem.

... Sebagai orang yang memiliki spesialisasi dalam sistem basis data selama lebih dari 26 tahun, saya dapat memberi tahu Anda bahwa baru belakangan ini MySql mulai bekerja bersama mengenai kompetensi pada aspek terpenting dari apa sistem basis data itu. untuk - keamanan / integritas data. Sebelumnya, mereka kurang memperhatikan aspek-aspek ini dan lebih memperhatikan kinerja. Tapi apa gunanya kinerja hebat jika Anda kehilangan data? Pada BEBERAPA aplikasi, seperti, katakanlah, Netflix streaming rekaman video pada titik apa yang Anda tonton, kesetiaan absolut mungkin tidak terlalu penting - mungkin, bahkan, pelanggan Anda SEPERTI video Anda mencadangkan sedikit setelah kegagalan. Tetapi dalam sistem perbankan, ini adalah bencana dengan proporsi epik. Hanya pemilik data yang dapat mengetahui apa yang tepat untuk mereka.

Richard T
sumber
1
Ganti mysql hanya karena masalah me-restart atau mematikan sistem? Dan bagian terakhir dari solusi tidak berkontribusi apa pun untuk menyelesaikan masalah orang yang mengajukan pertanyaan
ftrujillo
Jawaban ini bias terhadap mysql tanpa sumber atau referensi. Ini tidak berguna dalam konteks pertanyaan; perangkat lunak apa pun yang terlalu lama untuk keluar dapat menyebabkan masalah saat reboot (terutama dengan systemd dan waktu habisnya yang agresif).
Harald