วิธีที่ดีที่สุดในการรีสตาร์ท CentOS อย่างสง่างาม?


81

ฉันมักจะใช้คำสั่ง:

shutdown -r now

อย่างไรก็ตามบางครั้งก็ทำให้เกิดปัญหากับ MySQL

วิธีที่ดีที่สุดในการรีสตาร์ท CentOS คืออะไร

ฉันเคยเห็น:

reboot

และ

halt

ฉันจะรีบูตเครื่องเบา ๆ ได้อย่างไร?


3
rebootเป็นนามแฝงของshutdown -r... ดังนั้น ... ใช่
นาธาน C

โพสต์ของฉันตอบคำถามของคุณหรือคุณจำเป็นต้องรู้อะไรอีกบ้าง?
Joffrey

ยังไม่สามารถแสดงความคิดเห็นได้ที่นี่ แต่ฉันต้องการที่จะเตือนที่นี่เกี่ยวกับการรีบูตเครื่อง หากอินสแตนซ์นั้นอยู่ใน Amazon EC2 การรีบูตเครื่อง -h ตอนนี้จะทำให้อินสแตนซ์นั้นเป็นอิฐ แต่ถ้าคุณต้องปิดหรือรีบูตให้ทำผ่านส่วนต่อประสานออนไลน์ของ Amazon ไม่ใช่เชลล์ หากคุณสร้างอินสแตนซ์ของคุณขึ้นมาคุณสามารถหยุดมันแยกวอลลุ่มสร้างอินสแตนซ์แยกต่างหากและแนบวอลลุ่มนั้นโดยไม่ต้องถอดโวลุ่มแรกที่มาพร้อมกับอินสแตนซ์ใหม่ จากนั้นคุณจะต้อง ssh ในอินสแตนซ์ใหม่เมานต์วอลลุ่มเดิมและนำไฟล์ของคุณออก
kloddant

ที่จริงแล้วคุณต้องการเรียกใช้sync: sync;ก่อนที่จะรันshutdown -rดังนั้นไฟล์ I / O ทั้งหมดจะถูกซิงโครไนซ์ ฉันสงสัยว่าสิ่งนี้จะช่วยแก้ปัญหาด้วยmysql
3629249

คำตอบ:


92

ไม่มีวิธีที่ดีกว่าในการรีสตาร์ทเซิร์ฟเวอร์ของคุณโดยใช้สิ่งอื่นนอกเหนือจากคำสั่งเหล่านั้น

  • การปิดระบบเป็นวิธีที่พบได้บ่อยที่สุดในการหยุดระบบของคุณ การเพิ่มอาร์กิวเมนต์-rและเวลาที่ระบุ (หรือ ' now') จะรีบูตระบบของคุณแทนการหยุดชะงักหลังจากลำดับการปิดระบบ
  • rebootเป็น wrapper round shutdown ซึ่งจะมีการบำรุงรักษาฮาร์ดดิสก์ (การซิงค์และ / หรือการเข้าสู่โหมดสแตนด์บายและไม่เกี่ยวข้องกัน)
  • เวอร์ชั่นใหม่ของreboot(> 2.74) จะเริ่มต้นshutdownหากไม่อยู่ใน runlevel 0 หรือ 6
  • สคริปต์ init ส่วนใหญ่เรียกหยุดเพื่อให้เข้าสู่ระบบในutmp

การแจกแจงสมัยใหม่จะมีงานทั้งหมดครอบคลุมโดยไม่คำนึงถึงคำสั่งที่คุณใช้ โดยพื้นฐานแล้วพวกเขาทั้งหมดเริ่มต้นการปิดระบบของสคริปต์SysV (CentOS <7) หรือsystemd (CentOS> = 7) สคริปต์ของคุณ (ฉันจะเรียกพวกเขาว่าสคริปต์ init เพื่อความสะดวกในการอ่าน)

การปิดระบบโดยใช้สคริปต์เริ่มต้นทีละขั้นตอนจะหยุดการให้บริการทั้งหมดของคุณที่ลงทะเบียนภายใต้runlevel 'S' สคริปต์เริ่มต้นแต่ละรายการอาจมีการหมดเวลาเช่นสคริปต์เริ่มต้น MySQL ใน CentOS เมื่ออาร์กิวเมนต์หยุดถูกกำหนดและ daemon จะไม่ถูกปิดในเวลาที่เหมาะสมสคริปต์จะหยุดและออกจากการให้ความล้มเหลว กระบวนการปิดระบบจะดำเนินต่อไปราวกับว่าไม่มีอะไรผิดปกติใช้เวลานานขึ้นเล็กน้อยและอาจพิมพ์คำเตือน ในตอนท้ายเมื่อสคริปต์ init ทั้งหมดจะดำเนินการหลีกเลี่ยงไม่ได้ที่จะเกิดขึ้น: กระบวนการทั้งหมดยังคงทำงานจะได้รับSIGTERM สัญญาณและหลังจากนั้นไม่กี่วินาที (2 หรือ 5) SIGKILLซึ่งเป็น สิ่งนี้จะทำความสะอาดส่วนที่เหลือก่อนที่จะทำการเรียกACPIเพื่อรีบูตหรือปิดระบบของคุณจริงๆ

มีข้อยกเว้นอย่างหนึ่งคือการใช้rebootคำสั่งพร้อมกับ-fตัวเลือกซึ่งจะเป็นการข้ามการเรียกใช้งานสคริปต์ init และจะรีบูตระบบโดยตรง

คุณจะดีกว่าที่จะแก้ไขสาเหตุของความกังวลของคุณ: MySQL ไม่ได้ปิดตัวลงอย่างถูกต้อง

บ่อยครั้งเกิดจากภาระงานจำนวนมากที่ต้องทำก่อนที่ daemon จะสามารถออกได้อย่างปลอดภัย ฉันเคยมีอินสแตนซ์ MySQL ที่มี 30,000 ตารางที่ใช้เวลามากกว่าหนึ่งชั่วโมงในการออก พบปัญหาที่คล้ายกันกับระบบที่ใช้บัฟเฟอร์ขนาดใหญ่และความพร้อมใช้งาน I / O แบบกระจาย


31

การปิดระบบ Centos 6.x ที่สวยงามควรทำโดยใช้คำสั่งเป็นรูต:

shutdown -h now

วิธีนี้จะพยายามหยุดบริการที่กำลังทำงานอยู่ทั้งหมดก่อนที่จะปิดเซิร์ฟเวอร์อย่างเรียบร้อย

การใช้คำสั่งนี้ยังช่วยป้องกันปัญหาซ็อกเก็ต mySQL

ในทำนองเดียวกันสำหรับการรีบูทที่สวยงาม:

reboot -h now

คุณสามารถอ่านคำตอบก่อนหน้าเกี่ยวกับคำถามที่คล้ายกันได้ที่นี่:

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


7
ฉันคิดว่าคุณหมายถึงหรือบางทีอาจจะเป็นเพียงแค่shutdown -r now คำสั่งไม่ได้มีตัวเลือก rebootreboot-h
Michael Hampton

1
สวัสดี Michael Centos 6.x มีตัวเลือกให้หยุดบริการก่อนที่จะรีบูตเครื่อง "shutdown -h now" เป็นการปิดระบบอย่างงดงามและ "reboot -h now" เป็นการรีบูตอย่างงดงาม ลองบนเซิร์ฟเวอร์ Centos ของคุณ ...
GeckoSEO

1
โอ้? และ-hตัวเลือกนี้จะทำอะไร? มันไม่ได้อยู่ในหน้าคน
Michael Hampton

2
จริงๆ? คุณมีเอกสารเกี่ยวกับเรื่องนี้ไหม เพราะเป็นครั้งแรกว่าเป็นสิ่งที่rebootไม่ได้โดยไม่ต้อง -hประการที่สองมันไม่ได้บันทึกไว้อย่างนั้นเท่าที่ฉันสามารถบอกได้
Michael Hampton

2
เอกสารที่คุณเพิ่งจะเชื่อมโยงระบุสิ่งที่ฉันบอกคุณ! rebootไม่มี-hตัวเลือกshutdownไม่
Michael Hampton

2

เมื่อให้คำแนะนำระยะไกลแก่ผู้ใช้และลูกค้าฉันแนะนำให้ใช้poweroffเพื่อปิดเครื่องและปิดระบบ

หากพวกเขาต้องการการรีบูตที่อบอุ่นฉันขอแนะนำให้พวกเขาใช้rebootคำสั่ง

ฉันคิดว่าอาจกล่าวได้ว่าการออกCtrl-Alt-Deleteยังประสบความสำเร็จนี้;)


ฉันไม่เห็นด้วยกับคำตอบนี้ รีบูตและปิดเครื่อง (Ctrl-Alt-Delete) มีประโยชน์และสามารถใช้งานได้ในบางสภาพแวดล้อมเช่นผู้ที่ใช้ mySQL ทำให้ซ็อกเก็ต "ล็อค" ซึ่งต้องสร้างซ็อกเก็ตใหม่หรือลบ / ย้ายซ็อกเก็ตที่มีอยู่ก่อนสร้างใหม่ หนึ่ง.
GeckoSEO

1
@GeckoSEO มันเป็นคำแนะนำที่น่ากลัวที่อ้างถึงอันตรายของการอนุญาตให้เปิดใช้งาน Ctrl-Alt-Deleteบนเซิร์ฟเวอร์ Linux
ewwhite

การตอบกลับของฉันในทางกลับกันไม่ได้น่ากลัวฉันเพียงแค่พยายามชี้แจงคำตอบสำหรับผู้ที่พยายามแก้ไขคำถามนี้ โปรดดูคำตอบก่อนหน้าของฉันฉันหวังว่ามันจะช่วย
GeckoSEO

2

ฉันใช้คำสั่ง 'init 6'

init 6 บอกกระบวนการ init ให้ปิดกระบวนการ / daemons ที่เกิดขึ้นทั้งหมดตามที่เขียนไว้ในไฟล์ init (ในลำดับที่ตรงกันข้ามที่เริ่ม) และเรียกใช้คำสั่ง shutdown -r now เพื่อรีบูตเครื่อง

ข้อมูลเพิ่มเติมสามารถพบได้ในคำถามนี้


0

ฉันมีความรู้สึกที่คุณอาจไม่ชอบคำตอบนี้ แต่คำตอบนี้รวมถึงความเข้าใจบางอย่างที่คนอื่นไม่พิจารณา . . ที่คุณเขียน:

ฉันมักจะใช้คำสั่ง:

ปิด -r ตอนนี้

อย่างไรก็ตามบางครั้งก็ทำให้เกิดปัญหากับ MySQL

ปัญหาที่นี่ไม่ใช่วิธีการปิดเครื่องของคุณเป็นชิ้นส่วนของซอฟต์แวร์ที่ไม่สามารถจัดการการปิดได้อย่างถูกต้อง MySql

วิธีเดียวที่คุณสามารถระบุได้ว่านี่คือแทนที่ MySql (PostgreSql เป็นการแทนที่ที่ยอดเยี่ยม) หรือเขียนสคริปต์การปิดระบบของคุณเองที่ FIRST coddles MySql เหมือนเด็กและเมื่อมีความสุขที่ได้ปิดระบบแล้ว

... ในฐานะบุคคลที่มีความเชี่ยวชาญในระบบฐานข้อมูลมานานกว่า 26 ปีฉันสามารถบอกคุณได้ว่าในเวลาไม่นานมานี้ MySql ได้เริ่มทำหน้าที่ร่วมกันเกี่ยวกับความสามารถในแง่มุมที่สำคัญที่สุดของระบบฐานข้อมูลใดบ้าง สำหรับ - ความปลอดภัยของข้อมูล / ความสมบูรณ์ ก่อนหน้านี้พวกเขาให้ความสำคัญกับเรื่องเหล่านี้น้อยลงและให้ความสำคัญกับประสิทธิภาพมากขึ้น แต่ประสิทธิภาพที่ยอดเยี่ยมคืออะไรถ้าคุณทำข้อมูลหาย ในแอปพลิเคชั่น SOME เช่นการพูดการบันทึกวิดีโอสตรีมมิ่งของ Netflix ณ จุดที่คุณกำลังดูความเที่ยงตรงแบบสมบูรณ์อาจไม่สำคัญอย่างยิ่ง - บางทีลูกค้าของคุณอาจชอบการแบ็กอัพวิดีโอหลังจากความล้มเหลว แต่ในระบบธนาคารมันเป็นหายนะของสัดส่วนที่ยิ่งใหญ่ มีเพียงเจ้าของข้อมูลเท่านั้นที่รู้ว่าอะไรเหมาะสมสำหรับพวกเขา


1
แทนที่ mysql เพียงเพราะปัญหาการรีสตาร์ทหรือปิดระบบ? และส่วนสุดท้ายของการแก้ปัญหาไม่ได้มีส่วนร่วมในการแก้ปัญหาของคนที่ทำคำถาม
ftrujillo

คำตอบนี้มีอคติต่อ mysql โดยไม่มีแหล่งที่มาหรือการอ้างอิง มันไม่มีประโยชน์ในบริบทของคำถาม ซอฟต์แวร์ใด ๆ ที่ใช้เวลานานเกินไปในการออกอาจทำให้เกิดปัญหาเมื่อรีบูท (โดยเฉพาะอย่างยิ่งกับ systemd และการหมดเวลาเชิงรุก)
Harald
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.