Cách tốt nhất để khởi động lại CentOS một cách duyên dáng?


82

Tôi luôn luôn sử dụng lệnh:

shutdown -r now

Tuy nhiên, đôi khi điều đó gây ra vấn đề MySQL.

Cách duyên dáng nhất để khởi động lại CentOS là gì?

Tôi đã nhìn thấy:

reboot

halt

Làm thế nào tôi có thể nhẹ nhàng khởi động lại máy?


3
rebootvề cơ bản là một bí danh để shutdown -r... vì vậy ... vâng.
Nathan C

Có phải bài viết của tôi trả lời câu hỏi của bạn, hoặc bạn cần biết thêm gì nữa không?
Joffrey

Không thể bình luận ở đây, nhưng tôi muốn đặt một cảnh báo ở đây về việc khởi động lại. Nếu phiên bản là trên Amazon EC2, thực hiện khởi động lại - bây giờ sẽ gạch phiên bản, vì vậy không bao giờ thực hiện việc này. Thay vào đó, nếu bạn phải tắt máy hoặc khởi động lại, hãy thực hiện thông qua giao diện trực tuyến của Amazon, chứ không phải vỏ. Nếu bạn gạch phiên bản của bạn, bạn có thể dừng nó, tách âm lượng, tạo một thể hiện riêng và gắn âm lượng vào nó, mà không tách rời âm lượng đầu tiên đi kèm với thể hiện mới. Sau đó, bạn sẽ cần phải ssh vào phiên bản mới, gắn âm lượng cũ và xóa các tệp của bạn.
kloddant

thực tế, bạn muốn chạy sync: sync;trước khi chạy shutdown -rđể tất cả các tệp I / O sẽ được đồng bộ hóa. Tôi nghi ngờ điều này cũng sẽ giải quyết vấn đề vớimysql
user3629249

Câu trả lời:


94

Không có cách nào tốt hơn để khởi động lại máy chủ của bạn bằng cách sử dụng bất kỳ thứ gì khác ngoài bất kỳ lệnh nào.

  • tắt máy là cách phổ biến nhất để ngăn chặn hệ thống của bạn. Thêm đối số -rvà thời gian cụ thể (hoặc ' now') sẽ khởi động lại hệ thống của bạn thay vì tạm dừng nó sau chuỗi tắt máy.
  • khởi động lại là tắt máy vòng bao bọc, thực hiện một số bảo trì ổ cứng (đồng bộ hóa và / hoặc đặt ở chế độ chờ và không thực sự phù hợp).
  • Các phiên bản mới của reboot(> 2,74) sẽ bắt đầu shutdownnếu không ở runlevel 0 hoặc 6.
  • Hầu hết các script init dừng lại để tạo một bản ghi trong utmp .

Các bản phân phối hiện đại sẽ có tất cả các tác vụ được bảo vệ bất kể lệnh bạn đang sử dụng. Về cơ bản, tất cả chúng đều khởi tạo thời gian chạy tắt của các tập lệnh SysV (CentOS <7) hoặc systemd (CentOS> = 7) của bạn (tôi sẽ gọi chúng là các tập lệnh init để dễ đọc).

Việc tắt sử dụng init script từng bước sẽ dừng tất cả các dịch vụ của bạn được đăng ký theo thường là runlevel 'S'. Các tập lệnh init riêng lẻ có thể có thời gian chờ, như tập lệnh init của MySQL trong CentOS. Khi đối số dừng được đưa ra và trình nền sẽ không bị tắt trong một khoảng thời gian hợp lý, tập lệnh sẽ dừng và thoát gây ra lỗi. Quá trình tắt máy sẽ tiếp tục như không có gì sai, chỉ mất một chút thời gian và có thể in cảnh báo. Cuối cùng, khi tất cả các tập lệnh init được thực thi, điều không thể tránh khỏi sẽ xảy ra: tất cả các quá trình vẫn đang chạy sẽ nhận được SIGTERM tín hiệu và sau vài giây (2 hoặc 5), a SIGKILL. Điều này sẽ dọn sạch phần còn lại trước khi cuộc gọi ACPI được thực hiện để thực sự khởi động lại hoặc tắt hệ thống của bạn.

Một ngoại lệ là sử dụng rebootlệnh với -ftùy chọn, điều này sẽ bỏ qua việc thực thi các tập lệnh init và sẽ khởi động lại hệ thống trực tiếp.

Bạn sẽ tốt hơn trong việc khắc phục nguyên nhân gốc rễ của những lo lắng của bạn: MySQL không tắt đúng cách.

Thường thì điều này là do khối lượng công việc khổng lồ cần phải được thực hiện trước khi daemon có thể thoát ra an toàn. Tôi đã từng có một phiên bản MySQL với hơn 300.000 bảng mất hơn một giờ để thoát. Các vấn đề tương tự có thể được tìm thấy với các hệ thống sử dụng bộ đệm lớn và tính khả dụng I / O thưa thớt.


31

Việc tắt Centos 6.x một cách duyên dáng nên được thực hiện bằng cách sử dụng lệnh dưới dạng root:

shutdown -h now

Điều này sẽ cố gắng dừng tất cả các dịch vụ đang chạy trước khi tắt máy chủ một cách duyên dáng.

Sử dụng lệnh này cũng ngăn chặn các vấn đề về ổ cắm myQuery.

Tương tự, để khởi động lại duyên dáng:

reboot -h now

Bạn có thể đọc câu trả lời trước về một câu hỏi tương tự ở đây:

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


7
Tôi nghĩ bạn có nghĩa là shutdown -r now, hoặc có lẽ chỉ reboot. Các rebootlệnh không có một -hlựa chọn.
Michael Hampton

1
Xin chào Michael, Centos 6.x thực sự có tùy chọn tạm dừng dịch vụ trước khi khởi động lại. "shutdown -h now" là một sự tắt máy duyên dáng và "restart -h now" là một khởi động lại duyên dáng. Hãy dùng thử trên máy chủ Centos của bạn ...
GeckoSEO

1
Oh? Và -htùy chọn này làm gì? Nó không có trong trang người đàn ông.
Michael Hampton

2
Có thật không? Bạn có một số tài liệu cho việc này? Bởi vì, đầu tiên, đó là những gì rebootkhông -h . Thứ hai, nó hoàn toàn không được ghi nhận theo cách đó, theo như tôi có thể nói.
Michael Hampton

2
Các tài liệu bạn vừa liên kết chính xác những gì tôi đã nói với bạn! rebootkhông có -hlựa chọn, shutdownkhông.
Michael Hampton

2

Khi đưa ra các hướng dẫn từ xa cho người dùng cuối và khách hàng, tôi hướng dẫn họ sử dụng poweroffđể tắt và tắt nguồn hệ thống.

Nếu họ muốn khởi động lại ấm áp, tôi đề nghị họ sử dụng rebootlệnh.

Tôi cho rằng người ta có thể nói rằng việc ban hànhCtrl-Alt-Delete cũng hoàn thành điều này;)


Tôi không đồng ý với câu trả lời này. khởi động lại và tắt máy (Ctrl-Alt-Delete) rất mạnh và có thể trong một số môi trường, chẳng hạn như khi chạy myQuery, gây ra "khóa" ổ cắm, sau đó yêu cầu tạo ổ cắm mới hoặc xóa / di chuyển ổ cắm hiện có trước khi tạo lại ổ cắm mới một.
GeckoSEO

1
@GeckoSEO Đó là một đề xuất vô nghĩa khi đề cập đến sự nguy hiểm của việc cho phép Ctrl-Alt-Delete được bật trên các máy chủ Linux.
ewwhite

mặt khác, câu trả lời của tôi không phải là vô nghĩa, tôi chỉ đơn giản là cố gắng làm rõ câu trả lời cho những người đang cố gắng giải quyết câu hỏi này. Xin vui lòng xem câu trả lời trước đó của tôi, tôi hy vọng nó sẽ giúp.
GeckoSEO

2

Tôi sử dụng lệnh 'init 6'.

init 6 cho biết quá trình init tắt tất cả các tiến trình / trình nền được sinh ra như được ghi trong các tệp init (theo thứ tự nghịch đảo mà chúng bắt đầu) và cuối cùng gọi lệnh shutdown -r now để khởi động lại máy.

Thông tin thêm có thể được tìm thấy về câu hỏi này .


0

Tôi có cảm giác bạn có thể không thích câu trả lời này, nhưng câu trả lời NÀY bao gồm một số cái nhìn sâu sắc không ai trong số những người khác xem xét. . . Bạn viết:

Tôi luôn luôn sử dụng lệnh:

tắt máy -r ngay

Tuy nhiên, đôi khi điều đó gây ra vấn đề MySQL.

Vấn đề ở đây KHÔNG phải là phương pháp tắt máy của bạn, là phần mềm không thể xử lý tắt máy đúng cách; MySql.

Cách DUY NHẤT mà bạn thực sự có thể giải quyết vấn đề này là thay thế MySql (PostgreSql là một sự thay thế tuyệt vời) HOẶC viết kịch bản tắt máy của riêng bạn mà FIRST mã hóa MySql như một đứa trẻ, và khi nó vui lòng tắt THEN thì tắt hệ thống.

... Là một người chuyên về các hệ thống cơ sở dữ liệu trong hơn 26 năm, tôi có thể nói với bạn rằng chỉ trong thời gian gần đây, MySql đã bắt đầu hành động cùng nhau về năng lực ở các khía cạnh quan trọng nhất của hệ thống cơ sở dữ liệu là gì cho - bảo mật / toàn vẹn dữ liệu. Trước đây, họ ít chú ý đến những khía cạnh này và quan tâm nhiều hơn đến hiệu suất. Nhưng những gì tốt là hiệu suất tuyệt vời nếu bạn mất dữ liệu? Trên một số ứng dụng, như, giả sử, Netflix ghi video trực tuyến tại thời điểm bạn đang xem, độ trung thực tuyệt đối có thể không đặc biệt quan trọng - thậm chí, có thể, khách hàng của bạn THÍCH video sao lưu một chút sau thất bại. Nhưng trong một hệ thống ngân hàng, đó là một thảm họa về tỷ lệ sử thi. Chỉ chủ sở hữu dữ liệu có thể biết những gì phù hợp với họ.


1
Thay thế mysql chỉ vì vấn đề khởi động lại hoặc tắt hệ thống? Và phần cuối cùng của giải pháp không đóng góp gì để giải quyết vấn đề của người đưa ra câu hỏi
ftrujillo

Câu trả lời này thiên vị so với mysql mà không có nguồn hoặc tài liệu tham khảo. Nó không hữu ích trong bối cảnh của câu hỏi; bất kỳ phần mềm nào mất quá nhiều thời gian để thoát đều có thể gây ra sự cố khi khởi động lại (đặc biệt là với systemd và thời gian chờ tích cực của nó).
Harald
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.