Khởi động lại ngay lập tức hoặc tắt máy ngay bây giờ, ngay bây giờ, lệnh khởi động lại an toàn hơn?


50

Chúng tôi có trong tổ chức của mình khoảng ~ 500 máy RedHat Linux.

Trên tất cả các máy, chúng tôi đã cài đặt các ứng dụng và dịch vụ bên dưới /etc/init.dvà các máy chủ RAC. Chúng tôi dự định thực hiện cập nhật yum trên tất cả các máy và sau đó hãy khởi động lại.

Vì vậy, tôi đã tự hỏi lệnh nào là an toàn hơn:

reboot

hoặc là

shutdown -r now


1
chúng ta có tất cả các loại - như redhat 4,5,6,7
dandan

6
Hãy tua lại: Tại sao bạn nghĩ có thể có sự khác biệt về an toàn?
gạch dưới

2
@underscore_d: không phải là không có lý khi nghĩ rằng một người có thể là một lệnh "chỉ sử dụng nội bộ" mà không thực hiện tất cả các bước tắt máy giống nhau. Ví dụ, có thể người ta sử dụng người kia sau khi thực hiện một số bước tắt máy ban đầu. Tất nhiên, trang man giải thích rằng đó rebootchỉ là một lệnh kế thừa và vẫn chỉ tồn tại cho compat ngược.
Peter Cordes

1
@ Recognhy Một câu hỏi không thể là một bản sao của một câu hỏi trên một trang web khác ..
Insane

Câu trả lời:


50

Đối với các hệ thống Red Hat, không có sự khác biệt về chức năng giữa rebootshutdown -r now.

Làm bất cứ điều gì dễ dàng hơn cho bạn.


13
Nhưng một điều khiến bạn gõ nhiều hơn và về cơ bản là 'ngầu' hơn!
Mất trí

Một yêu cầu quyền truy cập siêu người dùng, người khác có thể được thực thi bởi bất kỳ người dùng nào (trừ khi bị hạn chế) từ phiên X.
Burhan Khalid

2
@BurhanKhalid Nếu bạn có người ngẫu nhiên đăng nhập vào phiên X trên máy chủ, thì bạn có thể gặp vấn đề lớn hơn là tự hỏi hai lệnh nào là "an toàn" hơn.
CVn

1
Ít nhất là trên Debian (mặc dù tôi sẽ dễ dàng thừa nhận tôi không biết về Red Hat, nhưng câu trả lời của Janne Pikkarainen cho thấy nó có thể giống nhau nhưng khác nhau) halt, rebootpoweroffkhông chấp nhận tin nhắn lý do cũng như thời gian, như Mikhail T. giải thích . Tôi nghĩ rằng tôi sẽ xem xét một công cụ để có thể làm điều gì đó mà công cụ khác không cho phép là "sự khác biệt về chức năng".
CVn

88

Tắt máy là thích hợp hơn vì nó cho phép bạn chỉ định lý do cho hành động quyết liệt - điều bạn nên luôn luôn làm. Thông điệp sẽ được ghi lại trong (các) nhật ký cho hậu thế. Ví dụ:

shutdown -r now 'Kernel upgrade requires reboot'

Bạn cũng có thể thực hiện khởi động lại theo lịch trình - bằng cách chỉ định một cái gì đó ngoài nowthời gian khởi động lại:

shutdown -r 22:00 'Work around kernel memory leak'

Sau đó, người dùng của bạn sẽ nhận được lời nhắc định kỳ để thoát ra và cứ thế - quá trình sẽ có trật tự và chuyên nghiệp hơn.


13

Nếu bạn xem qua, trong cả RHEL 7 /sbin/shutdown/sbin/rebootthực sự chỉ là các liên kết tượng trưng cho systemctllệnh của systemd . Vì vậy, sử dụng bất cứ điều gì bạn muốn. Không có sự khác biệt về chức năng như ewwhite đã nói, ngay cả trong các bản phát hành trước đó của RHEL chưa sử dụng systemd.


12
Tôi không tìm thấy lập luận này rất hấp dẫn: rõ ràng là /sbin/shutdown/sbin/rebootlàm không cư xử như nhau trong mọi trường hợp (đặc biệt: /sbin/shutdown! Không khởi động lại theo mặc định), vì vậy nếu họ đang symlinked với cùng thực thi, sau đó phải thực thi được kiểm tra ARGV[0]và điều chỉnh hành vi của nó cho phù hợp. Mặc dù điều đó chắc chắn làm giảm nguy cơ của sự khác biệt không chủ ý , nhưng đó không phải là bằng chứng thuyết phục rằng không có sự khác biệt về chức năng có chủ ý mà OP có thể muốn biết.
ruakh

3
Coi chừng giả sử một liên kết tượng trưng hàm ý tương đương, đặc biệt nếu có các tên khác nhau liên quan.
mckenzm

ruakh là đúng - hãy suy nghĩ về nó trong giây lát, mặc dù rebootđược liên kết với nhau systemctl, bạn không thể sử dụng, ví dụ reboot status whatever.servicenhư bạn sẽ làm với cái sau, bạn có thể không?
grawity

9

Sử dụng rebootsẽ an toàn hơn.

Sử dụng rebootý định của bạn là rõ ràng và không có cách nào để gõ nhầm nó cho một cái gì đó khác shutdown -t nowcó thể dẫn đến một vài vấn đề đau đầu nếu bạn đang sử dụng trên một máy chủ từ xa với sự kiểm soát hạn chế.


2
IMHO đánh giá thấp câu trả lời. Rất thường chúng ta quên mất tầm quan trọng của việc làm cho ý định rõ ràng và thời gian và những lời chửi rủa nó tiết kiệm trong thời gian dài!
RoughTomato

1

Đối với RHEL hiện đại, bạn nên sử dụng lệnh systemctl như được tóm tắt tại đây : [gần đây] Các bản phân phối RHEL nên sử dụng lệnh systemctl mới để phát hành poweroff / restart. Như đã nêu trong các trang hướng dẫn khởi động lại và tắt máy, chúng là "một lệnh kế thừa chỉ có sẵn để tương thích."

Tuy nhiên, nếu bạn sử dụng nhiều bản phân phối khác nhau, hoặc bản phân phối của các loại rượu khác nhau, thì có lẽ phải gắn bó shutdown -r now 'reason for shutdown'.

Lý do chính để sử dụng rebootlà để tránh nguy cơ quên thêm -r khi sử dụng shutdown -rtrên máy từ xa, điều này có thể dễ dàng dẫn đến việc không thể đăng nhập lại và phải sử dụng quản trị viên từ xa (nếu có) để khởi động lại máy móc.


0

Các hệ thống cũ chắc chắn đã tạo ra sự khác biệt giữa shutdownreboot. Cái sau sẽ không tắt các dịch vụ hoặc nhất thiết phải đồng bộ bộ đệm đĩa. Trong môi trường không đồng nhất - hoặc để tránh tiền lệ có thể gây nguy hiểm trong tương lai khi gặp phải các triển khai * ix khác - có giá trị trong việc shutdowntập thói quen.

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.