Sự khác biệt giữa khởi động lại, init 6 và tắt máy -r bây giờ là gì?


100

Tôi chỉ muốn biết sự khác biệt giữa

  • reboot
  • init 6
  • shutdown -r now

và cái nào là an toàn nhất và tốt nhất?


1
Hành vi chính xác của ba lệnh này thay đổi từ hệ điều hành đến hệ điều hành.
Thorbjørn Ravn Andersen

Câu trả lời:


83

Không có sự khác biệt trong họ. Trong nội bộ họ làm chính xác điều tương tự:

  • rebootsử dụng shutdownlệnh (với công tắc -r). Lệnh shutdown được sử dụng để tiêu diệt tất cả các tiến trình đang chạy, ngắt kết nối tất cả các hệ thống tệp và cuối cùng báo cho kernel phát lệnh ACPI power. Nguồn có thể được tìm thấy ở đây . Trong các bản phân phối cũ hơn, lệnh khởi động lại đã buộc các tiến trình thoát ra bằng cách phát SIGKILLtín hiệu (vẫn được tìm thấy trong các nguồn, có thể được gọi bằng -ftùy chọn), trong hầu hết các bản phát hành gần đây, nó mặc định là thân thiện hơn và dễ sử dụng hơn init 1 -> shutdown -r. Điều này đảm bảo rằng daemon tự làm sạch trước khi tắt máy.

  • init 6báo cho initquá trình 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 shutdown -r nowlệnh để khởi động lại máy

Ngày nay không có nhiều khác biệt vì cả hai lệnh đều thực hiện giống hệt nhau và chúng tôn trọng các tập lệnh init được sử dụng để bắt đầu dịch vụ / trình nền bằng cách gọi các tập lệnh tắt cho chúng. Ngoại trừ reboot -f -r nownhư đã nêu dưới đây

Có một lời giải thích nhỏ được lấy từ các trang hướng dẫn về lý do reboot -fkhông an toàn:

  -f, - lực lượng
    Buộc dừng ngay lập tức, tắt nguồn, khởi động lại. Đừng liên hệ với hệ thống init.

Biên tập:

Quên đề cập đến, trong các bản phân phối RHEL sắp tới, bạn nên sử dụng systemctllệnh mới để phát hành poweroff / restart. Như đã nêu trong các trang của rebootshutdownchúng là "một lệnh kế thừa chỉ dành cho khả năng tương thích." và systemctlphương pháp sẽ là duy nhất an toàn.


Đôi khi khởi động lại của tôi bị treo ở SIGTERM, có cách nào để biết lý do tại sao không, và cũng có cách để hết thời gian khởi động lại, như vậy nếu mất quá nhiều thời gian, nó sẽ buộc khởi động lại?
CMCDragonkai

2
Những phiên bản RHEL này không còn "sắp ra mắt". Như đã giải thích chi tiết hơn tại unix.stackexchange.com/a/196014/5132 , trên các hệ điều hành systemd như vậy không có sự khác biệt nào cả. Họ thậm chí không có chương trình khác nhau.
JdeBP

Bạn đã đánh máy bằng cách nói init 1 -> shutdown -r?
deed02392

Liên kết của bạn bị hỏng.
whoKnows

8

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 khi thời gian đến gần - quá trình sẽ có trật tự và chuyên nghiệp hơn.


5

Trên các đơn vị truyền thống, rebootshutdown -r nowlà các lệnh rất khác nhau. Theo cách sử dụng thông thường, rebootchỉ an toàn khi sử dụng ở chế độ người dùng.

shutdown -r nowlà phương pháp chính tắc để tắt máy trên các * nix khác nhau và an toàn hơn để sử dụng nói chung và tương đương về mặt chức năng init 6.

init (8) khởi động lại (8)


4

Trên FreeBSD có sự khác biệt giữa rebootshutdown -r now. Từ reboottrang người đàn ông:

Thông thường, tiện ích tắt máy (8) được sử dụng khi hệ thống cần tạm dừng hoặc khởi động lại, giúp người dùng cảnh báo trước về sự diệt vong sắp xảy ra của họ và chấm dứt hoàn toàn các chương trình cụ thể.


1
Tuy nhiên, đây không phải là một câu hỏi BSD, bằng chứng là thẻ trong câu hỏi và việc sử dụng cấp độ hệ thống 5 trong một trong các lệnh. ☺
JdeBP

1
Tôi biết đó là một câu hỏi Linux. Tôi nghĩ ai đó có thể thấy hữu ích khi biết rằng trên một số hệ thống khác, đó là một sự khác biệt.
Marián Černý
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.