Câu trả lời:
Đó là một chút lịch sử.
halt
đã được sử dụng trước ACPI (hôm nay sẽ tắt nguồn cho bạn) *. Nó sẽ tạm dừng hệ thống và sau đó in một thông báo tới hiệu ứng "bây giờ tắt nguồn rồi". Trước đó, có các công tắc bật / tắt vật lý, thay vì nút nguồn điều khiển ACPI kết hợp của các máy tính hiện đại.
poweroff
, tự nhiên sẽ tạm dừng hệ thống và sau đó tắt nguồn ACPI.
* Những ngày halt
này đủ thông minh để tự động gọi poweroff
nếu ACPI được bật. Trong thực tế, chúng là chức năng tương đương bây giờ.
/sbin/poweroff
là một liên kết tượng trưng đến /sbin/halt
.
shutdown
. Là lệnh halt
giống như shutdown -H
, và lệnh poweroff
giống như shutdown -P
? @phunehehe cũng vậy.
halt
được sử dụng để làm điều đó. Không có trật tự tắt máy, chỉ cần dừng những gì máy đang làm ngay lúc đó và ở đó. Vấn đề thường gặp là sync;sync;sync;halt
đảm bảo tất cả các bộ đệm đã được ghi ra đĩa.
Chúng không giống nhau, chỉ liên quan rất chặt chẽ. Trong thực tế, trừ khi bạn muốn chỉ định một thời gian cụ thể để tắt máy hoặc buộc khởi động lại / tạm dừng / tắt nguồn ngay lập tức, điều đó thực sự không quan trọng cho dù bạn chạy shutdown -h
hay halt
... hoặc shutdown -r
so với reboot
. Mọi thứ trước đây không thuận tiện lắm, nhưng đây là cách nó hoạt động (rất nhiều cơ hội cho sự mơ hồ hoặc lỗi người dùng đã bị xóa / xóa).
/sbin/shutdown
thực hiện nhiều công việc "dọn dẹp" như thông báo cho người dùng, chặn thông tin đăng nhập mới trong khi hệ thống đang tắt. Nó cũng có thể được yêu cầu tắt hệ thống tại một thời điểm nhất định hoặc trong XX phút - cảnh báo người dùng đăng nhập thường xuyên bị tắt máy sắp xảy ra.
Nó cũng thay đổi runlevel thành 0
( halt
/ poweroff
) hoặc 6
( reboot
) để kích hoạt hệ thống dừng các dịch vụ đang chạy, ngắt kết nối đĩa, v.v. để chuẩn bị cho việc dừng thực tế, tắt nguồn hoặc khởi động lại.
Khi tất cả đã được thực hiện, sau đó nó gọi /sbin/halt
, /sbin/reboot
hoặc /sbin/poweroff
( reboot
và poweroff
thường là các liên kết tượng trưng halt
, để diễn giải chúng như halt -r
và halt -P
tương ứng).
Tuy nhiên, lưu ý rằng nếu halt
/ reboot
/ poweroff
được gọi khi hệ thống KHÔNG ở runlevel 0
hoặc 6
sau đó họ sẽ gọi shutdown
để thực hiện công việc của mình trừ khi tùy chọn -f
hoặc force
được sử dụng.
(Chi tiết về cách chạy cấp được giải thích có thể thay đổi từ distro để distro, nhưng 0
và 6
được sử dụng như mô tả ở đây trong Debian và Debian các dẫn xuất như Ubuntu).
Xem các trang người đàn ông cho shutdown
và halt
cho biết thêm.
Cuối cùng, điểm khác biệt giữa halt
và poweroff
trạng thái là halt
làm mọi thứ thực sự tắt nguồn máy (trên một số loại phần cứng, điều này có nghĩa là nó rơi vào bộ tải khởi động ROM hoặc tương tự. Trên hầu hết phần cứng PC, nó chỉ dừng lại), trong khi poweroff
hoàn thành bước cuối cùng và tắt. reboot
, tất nhiên, được chuyển sang trạng thái dừng và sau đó khởi động lại máy tính.
BTW, mặc định thường là poweroff
hoặc reboot
, nhưng bạn có thể sử dụng -H
làm đối số shutdown
để làm cho nó dừng lại thay thế. Điều này không hữu ích trên các hộp linux dựa trên PC (nhưng hữu ích trên các máy, như hộp sparc, có màn hình khởi động phần sụn. Có thể nó có thể trở nên hữu ích trên các máy mới hơn với dòng lệnh EFI).
shutdown
các lệnh đều có khái niệm về mức độ chạy. shutdown
chủ yếu không gọi halt
/ reboot
/ poweroff
; trớ trêu thay, đó là trên một vài hệ thống không phải là Linux mà sự khôn ngoan nhận được này vẫn còn đúng cho đến ngày nay. Và nơi mà các điểm liên kết tượng trưng là không nhất thiết halt
; không chỉ vậy, trong một số bộ công cụ chúng không phải là liên kết tượng trưng nào cả. Xem unix.stackexchange.com/a/196471/5132 để biết thêm chi tiết.