Tại sao chúng ta cần chức năng khởi động lại trong các nhị phân khác nhau?


12

Tại sao chúng ta cần chức năng khởi động lại trong các nhị phân khác nhau?

shutdown -r

reboot

Hay họ khác nhau ở một cái gì đó?


1
Xem unix.stackexchange.com/questions/8690/ Khăn để phân biệt - các lệnh có thể hoạt động khác nhau tùy thuộc vào hệ điều hành (nhưng thường làm điều tương tự trong Linux).
Xin vui lòng và

Như đã lưu ý dưới đây và được giải thích chi tiết tại unix.stackexchange.com/a/196014/5132 , tiền đề của câu hỏi này là sai trên các hệ điều hành Linux hệ thống. Đây không phải là nhị phân khác nhau trên các hệ thống như vậy.
JdeBP

Câu trả lời:


15

Chúng tôi không nhất thiết cần cả hai, nhưng chúng tôi có cả hai vì lịch sử của Unix và tính đa dạng của các phiên bản.

Từ trang người đàn ông tương ứng của họ:

  • Tiện ích tắt máy xuất hiện trong 4.0BSD.
  • Một tiện ích khởi động lại xuất hiện trong Phiên bản 6 AT & T UNIX.

Tắt máy có mục đích chung hơn và mạnh mẽ hơn, trong khi khởi động lại thân thiện và dễ nhớ hơn.

tắt máy cho phép bạn chỉ định một đối số tạm thời (ví dụ để khởi động lại sau 5 phút) và cho phép bạn thực hiện nhiều việc ngoài việc khởi động lại, bao gồm:

  • bạn chỉ có thể đuổi người dùng và không thực sự tắt máy
  • bạn có thể đặt hệ thống ngủ thay vì tắt
  • bạn chỉ có thể tắt máy mà không cần khởi động lại (như lệnh tạm dừng)
  • bạn có thể bao gồm một thông báo cảnh báo tùy chỉnh cho người dùng trên hệ thống

Tuy nhiên, nếu bạn chỉ muốn khởi động lại hệ thống ngay bây giờ, việc nhập sẽ dễ dàng reboothơn shutdown -r now.


1
Thực tế thú vị: Một số phiên bản shutdownsử dụng bây giờ là mặc định. Đừng cố gắng nhận trợ giúp để tắt máy shutdown -hbao giờ, đặc biệt là không phải trên máy chủ ở đâu đó trong trung tâm dữ liệu.
Residuum

6

Hai lệnh làm một cái gì đó khác nhau, tuy nhiên cuối cùng chúng có thể gọi nhau, đó là lý do tại sao chúng dường như làm điều tương tự!

rebootsẽ gọi kernel để thực sự kích hoạt khởi động lại phần cứng. Tuy nhiên, nó sẽ chỉ làm điều này nếu hệ thống đã sẵn sàng để tắt - tất cả các trình tiện ích và quy trình người dùng nên được dừng lại, hệ thống tệp không được kết nối, v.v. Vì vậy, nó sẽ kiểm tra runlevel của hệ thống và nếu không phải là 0 hoặc 6, thì nó sẽ thực sự gọi các shutdownlệnh cho bạn.

shutdownlàm cho hệ thống runlevel bị thay đổi. Sự thay đổi runlevel (thành 0 khi tạm dừng hoặc 6 để khởi động lại) chạy rất nhiều tập lệnh trong /etc/rc0.d hoặc rc6.d để tắt trình tiện ích, ngắt kết nối hệ thống tập tin, v.v. Cuối cùng, các tập lệnh này gọi halthoặc reboot- lần này hệ thống đang ở trong runlevel chính xác và họ hướng dẫn kernel khởi động lại (hoặc tạm dừng).


6

Ngoài những gì iconoclast đã viết, có một sự khác biệt quan trọng giữa hai chương trình: shutdownlà trong /sbin, trong khi rebootlà trong /usr/bin.

Tại sao điều này lại quan trọng, bạn hỏi? Tôi sẽ nói cho bạn.

Những thứ bên dưới /usrlà những thứ không phải có sẵn cho đến khi hệ thống được khởi động đủ xa để hệ thống hoạt động tối thiểu. Thư mục cấp cao nhất được truyền thống không bao giờ được gắn trên hệ thống tập tin riêng biệt - /bin, /etc, /sbin, vv - được kỳ vọng sẽ có sẵn khi hệ thống đang đạt trạng thái này ít hữu ích. Có nhiều ý nghĩa khác nhau của thiết kế này; chẳng hạn, việc viết mệnh đề "dừng" của tập lệnh init SysV là sử dụng các chương trình /usr/binnếu có một sự thay thế trong /binhoặc /sbin.

shutdownlà tiện ích chính, luôn luôn có sẵn. rebootchỉ là một tiện ích tiện lợi.


1
rebootcó trong /sbinDebian (với SysVinit) và Ubuntu (mới bắt đầu).
Gilles 'SO- ngừng trở nên xấu xa'

Được rồi, câu trả lời meta: biết hệ thống của bạn. :) Tôi sử dụng CentOS thường xuyên nhất.
Warren Young

Tương tự cho Arch (systemd), cả in / sbin
daisy

Thật vậy, trên các hệ điều hành Linux của systemd cũng không phải là tiện ích chính, vì với systemd tất cả các lệnh này là (vì docd của systemd có nó) các lệnh "tương thích". Thật vậy, tiền đề của câu hỏi là sai. Họ không ở trong các nhị phân khác nhau. Để biết chi tiết, xem unix.stackexchange.com/a/196014/5132 .
JdeBP
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.