it-swarm-vi.com

Sự khác biệt giữa các lệnh Halt và Shutdown là gì?

Sự khác biệt giữa các lệnh haltshutdown là gì?

100
wassimans

Nói chung, người ta sử dụng lệnh shutdown . Nó cho phép trì hoãn thời gian và thông báo cảnh báo trước khi tắt hoặc khởi động lại, điều này rất quan trọng đối với việc quản trị hệ thống của các máy chủ Shell nhiều người dùng; nó có thể cung cấp cho người dùng thông báo trước về thời gian chết.

Do đó, lệnh tắt máy phải được sử dụng như thế này để tạm dừng/tắt máy tính ngay lập tức (ít nhất là trên Linux và FreeBSD):

shutdown -h now

Hoặc để khởi động lại với cảnh báo trước 30 phút tùy chỉnh:

shutdown -r +30 "Planned software upgrades"

Sau khi trì hoãn, shutdown nói init để thay đổi thành runlevel 0 (tạm dừng) hoặc 6 (khởi động lại). (Lưu ý rằng bỏ qua -h hoặc là -r sẽ khiến hệ thống chuyển sang chế độ một người dùng (runlevel 1), giết chết hầu hết các quy trình hệ thống nhưng không thực sự dừng hệ thống; nó vẫn cho phép người quản trị vẫn đăng nhập với quyền root.)

Khi các quy trình hệ thống đã bị hủy và các hệ thống tập tin đã bị ngắt kết nối, hệ thống sẽ dừng/tắt nguồn hoặc tự động khởi động lại. Điều này được thực hiện bằng cách sử dụng lệnh halt hoặc reboot , đồng bộ hóa các thay đổi với các đĩa và sau đó thực hiện tạm dừng/tắt nguồn hoặc khởi động lại thực tế.

Trên Linux, nếu halt hoặc reboot được chạy khi hệ thống chưa bắt đầu quá trình tắt máy, nó sẽ tự động gọi lệnh shutdown thay vì trực tiếp thực hiện hành động dự định của nó. Tuy nhiên, trên các hệ thống như FreeBSD , các lệnh này trước tiên đăng nhập hành động trong wtmp và sau đó sẽ ngay lập tức tự thực hiện tạm dừng/khởi động lại, mà không cần hủy quá trình đầu tiên hoặc ngắt kết nối hệ thống tập tin.

80
PleaseStand

Quá khứ

Vào những năm 1980, các BSD có halt, rebootshutdown. Hệ thống 5 UNIX có bộ công cụ tương thích BSD. Nhưng thực chất nó có lệnh shutdown riêng; và hoàn toàn không có halt hoặc reboot. (Một số biến thể của Hệ thống 5 có những thứ như SCO XENIX's haltsys.)

Các lệnh BSD haltreboot ở mức độ thấp, quyết liệt và ngay lập tức. Cách ân cần để tắt hệ thống BSD là lệnh shutdown, đã thực hiện tất cả những điều mà người ta mong đợi xảy ra: wall tin nhắn cho người dùng, dịch vụ bị giết một cách duyên dáng, các mục nhật ký được viết, đăng nhập bị vô hiệu hóa, v.v.

Trong khi các BSD chủ yếu là nơi trí tuệ nhận được bắt nguồn từ "shutdown execs halt/reboot", và cái sau được sử dụng cẩn thận; đó là thế giới Hệ thống 5 nơi mọi người học được thói quen trái ngược rằng halt/reboot chỉ là những tốc ký tiện dụng và không có gì khác: /usr/ucb/halt, từ "Gói tương thích BSD", là không có hiệu lực khác với shutdown -h. Cả hai cuối cùng đã làm init 0.

Đọc thêm

Hôm nay

Ngày nay, chúng ta có một loạt các bộ công cụ quản lý hệ thống có thể. Các BSD vẫn có bộ công cụ của họ, mặc dù đã thanh trừng bất kỳ AT & Tism nào có thể trong những năm 1990. Miquel van Smoorenburg năm 1992 (lại) đã viết một Linux init + rc, và các công cụ liên quan của họ, mà bây giờ mọi người gọi là "System 5 init", mặc dù nó không thực sự phần mềm từ UNIX System 5 (và không chỉ là init). Ngoài ra còn có systemd , khởi độngnosh , mỗi người trong số họ có việc triển khai của riêng họ của halt, reboot, fasthalt, fastboot, v.v.

Các bộ công cụ cũng đã phát triển và thay đổi. Hiện tại đã có lệnh poweroff, không có trong các hệ điều hành những năm 1980 bởi vì Bộ xử lý trung tâm trên hầu hết các máy hiện đại không có cách nào kiểm soát nguồn cung cấp năng lượng của chúng. Các bộ công cụ Linux nói riêng đã thu hút các lệnh BSD; nhưng giống như các công cụ tương thích BSD trên Hệ thống UNIX 5, chúng không phải là công việc chính xác và mọi thứ hầu như đã bị san phẳng.

Sự làm phẳng này đã đưa chúng ta đến điểm mà haltshutdown chủ yếu giống nhau. Nhưng các chi tiết chính xác khác nhau từ bộ công cụ đến bộ công cụ và cơ chế của mỗi bộ công cụ đều hơi khác nhau.

Nó cũng đã đưa chúng ta đến vị trí hơi xấu hổ khi bộ lệnh này trở nên quá phức tạp với các tùy chọn tương thích mà giờ đây nó cho phép mọi người đưa ra các hướng dẫn tự mâu thuẫn như reboot --haltpoweroff --reboot, Như tôi lưu ý trong trang hướng dẫn sử dụng các lệnh nosh halt, fasthalt, reboot, fastbootpoweroff. ☺

Bộ công cụ systemd

halt, reboot, poweroff, telinitshutdown tất cả một chương trình . Đó thực sự là chương trình systemctl của systemd. Nó có một số trình phân tích cú pháp dòng lệnh cho các cú pháp dòng lệnh khác nhau của các lệnh đó, cũng như của chính nó, nhưng sau đó phần lớn chuyển vào một đường dẫn mã bên trong. Không có sự khác biệt giữa việc sử dụng halt và các tùy chọn lệnh của nó để kích hoạt một hành động và sử dụng shutdown và các tùy chọn lệnh của nó để kích hoạt cùng một hành động.

systemd không xem xét chế độ cứu (đó là những gì người systemd đã đổi tên chế độ người dùng đơn ) là trạng thái hệ thống tắt và không thể truy cập được với bất kỳ lệnh nào trong số này. Tùy chọn ít hơn shutdown now Giống như poweroff.

Đọc thêm:

BSD

Các BSD phần lớn giữ lại ngữ nghĩa của thập niên 1980. haltshutdown vì thế rất nhiều không tương đương trong bộ công cụ của họ. haltreboot là một chương trình duy nhất; và vẫn còn ở mức độ thấp, ngay lập tức và quyết liệt. Trong khi đó shutdownpoweroff, cũng là một chương trình duy nhất, thực hiện tất cả những việc quan tâm như tắt máy theo lịch trình, viết wall tin nhắn, hành động đăng nhập, vô hiệu hóa đăng nhập, v.v.

Trong các bộ công cụ BSD, shutdown/poweroff theo truyền thống đã kết thúc việc gọi halt/reboot để ban hành thay đổi trạng thái hệ thống cuối cùng. (Hiện tại thường không chính xác) đã nhận được sự khôn ngoan rằng "shutdown execs halt/reboot" trên thực tế vẫn giữ trên NetBSD và OpenBSD. Nhưng trên FreeBSD/TrueOS/DragonFlyBSD, chỉ có trường hợp nếu tùy chọn -o Được sử dụng. Trên các BSD này, cả của các chương trình này thông thường ban hành trạng thái hệ thống cuối cùng thay đổi bằng cách gửi các tín hiệu khác nhau (INT, USR1USR2) để xử lý # 1. init does tất cả quản lý trạng thái hệ thống trên các hệ thống này.

Trên tất cả chúng, tùy chọn ít hơn shutdown now Không tương đương với bất kỳ halt, reboot hoặc poweroff. Nó chuyển sang chế độ người dùng đơn BSD , từ đó người ta có thể chuyển đổi trở lại đến chế độ nhiều người dùng .

Đọc thêm:

  • shutdown . Hướng dẫn quản lý hệ thống . Trang hướng dẫn NetBSD. 2011-11-04.
  • reboot, halt . Trang hướng dẫn OpenBSD. 2016-09-03.
  • shutdown . Trang hướng dẫn FreeBSD. 2016-09-21.
  • reboot, halt, fastboot, fasthalt . Trang hướng dẫn FreeBSD. 2017/03-19.
  • shutdown . Hướng dẫn quản lý hệ thống . Các trang hướng dẫn DragonFlyBSD. 2016-09-29.
  • reboot, halt, fastboot, fasthalt . Hướng dẫn quản lý hệ thống . Các trang hướng dẫn DragonFlyBSD. 2016-09-29.

Bộ công cụ nosh

Trong bộ công cụ quản lý hệ thống nosh, halt, fasthalt, poweroff, fastpoweroff, rebootfastboot là tất cả một chương trình. Đó là một shim tương thích ngược mà thường đơn giản là chuỗi thành shutdown, ngược lại của trí tuệ nhận được. Thay vào đó, tùy chọn --force Làm cho chuỗi thành system-control.

Vì vậy, không có sự khác biệt (vắng mặt --force) Giữa lệnh halt và lệnh shutdown (với tùy chọn tương đương) trong bộ công cụ này, như bộ "BSD/Hệ thống 5" này các lệnh tương thích "chỉ đơn giản là một lớp shim mỏng trên đỉnh của shutdown.

Đọc thêm:

Bộ công cụ mới nhất

Giống như với nosh, trong bộ công cụ quản lý hệ thống mới nhất, ngược lại với sự khôn ngoan của BSD được áp dụng. halt, rebootpoweroff đều là một chương trình, thường chuỗi thành shutdown; trừ khi tùy chọn --force được sử dụng, điều này làm cho nó tự gọi hệ thống reboot().

Vì vậy, một lần nữa, không có sự khác biệt (vắng mặt --force) Giữa lệnh haltshutdown (với tùy chọn tương đương) trong bộ công cụ này. Ngoài ra, một lần nữa, tùy chọn ít hơn shutdown now (Không ai trong số halt, reboot hoặc poweroff có thể kết thúc bằng cách gọi tất cả các tùy chọn đã đặt) mang đến hệ thống vào chế độ người dùng đơn thay vì tắt nó.

Đọc thêm:

Hệ thống Linux 5 init + rc bộ công cụ

Một lần nữa, trong bộ công cụ này, ngược lại với trí tuệ BSD nhận được áp dụng và haltreboot chỉ đơn giản là chuỗi thành shutdown - trừ khi hệ thống đã ở chế độ cấp nguồn hoặc tạm dừng "mức chạy" ", Trong trường hợp các lệnh này thực sự ban hành thay đổi trạng thái hệ thống cuối cùng. shutdown trong chuỗi lần lượt của nó thành init.

Vì vậy, một lần nữa, không có sự khác biệt (trừ khi hệ thống đã đã tắt phần lớn bị tắt) giữa haltshutdown bởi vì cái trước chỉ gọi cái sau. Và có, một lần nữa, tùy chọn ít hơn shutdown now (Mà không ai trong số halt, reboot, hoặc poweroff có thể kết thúc bằng cách gọi tất cả các tùy chọn đã đặt) hệ thống vào chế độ người dùng đơn thay vì tắt nó.

52
JdeBP

Tôi nghi ngờ điều này phần nào phụ thuộc vào phiên bản UNIX/Linux mà bạn đang sử dụng. Trên Centos (và tôi triển khai các Linux hiện đại khác) tạm dừng cuộc gọi (với điều kiện bạn không ở runlevel 0 hoặc 6) để hệ thống của bạn sẽ được tắt sạch. Trên Solaris 10 tạm dừng tàn bạo hơn, nó chỉ xóa bộ nhớ cache và tắt nguồn hệ thống - không có nỗ lực nào để chạy bất kỳ tập lệnh hoặc tắt máy smf cơ sở.

11
user591

Đối với những người sử dụng AWS EC2: trên AWS shutdowndừng một trường hợp, khi haltchấm dứt nó.

3
dveim

Trong linux, "tạm dừng" và "khởi động lại" là bí danh của lệnh tắt máy - shutdown -hshutdown -r tương ứng. Bareword tắt máy thường giả định -h.

0
Shadur