Câu trả lời:
Các -S
và -p
chuyển đổi cho sudo
không có tầm quan trọng trong trường hợp này. Đây là những gì họ làm, tương ứng.
Việc
-S
chuyển đổi gây rasudo
đọc mật khẩu từ STDIN. Điều này cho phép, ví dụ, mật khẩu được chuyểnsudo
quaecho
hoặccat
.Công
-p
tắc cho phép bạn ghi đè lời nhắc mật khẩu mặc định và sử dụng một tùy chỉnh hoặc không có gì cả.
Sự khác biệt quan trọng là trong hai lệnh được ban hành bởi sudo
.
Các
halt
lệnh, nếu gọi mà không có sự-p
chuyển đổi, chỉ cần ngừng hệ điều hành và dừng tất cả các CPU. Khi hệ thống tạm dừng hoàn toàn, người dùng có thể nhấn nút Nguồn trên máy tính của mình một cách an toàn.Tất cả
poweroff
,shutdown -h now
vàhalt -p
các lệnh đều thực hiện tương tự nhưhalt
một mình, đồng thời gửi lệnh ACPI để báo hiệu cho đơn vị cung cấp điện để ngắt kết nối nguồn chính. Điều này giúp bạn không phải ấn nút Power trên máy tính.
halt
không phải shutdown
, chúng là các lệnh khác nhau. Cái trước không tắt nguồn, trừ khi -p
tùy chọn được sử dụng
Từ hướng dẫn ( man halt
): "-p, --poweroff: Hướng dẫn lệnh dừng để thay vào đó hoạt động như poweroff."
Và, trong trường hợp của bạn, -p
đã không được sử dụng trong halt
lệnh, do đó máy tính của bạn đã không tắt nguồn.
Đừng nhầm lẫn điều này -p với một từ sudo
, đó là một tham số khác cho một lệnh khác. Từ man sudo
:
-S
Tùy chọn -S (stdin) khiến sudo đọc mật khẩu từ đầu vào tiêu chuẩn thay vì thiết bị đầu cuối. Mật khẩu phải được theo sau bởi một ký tự dòng mới.-p prompt
Tùy chọn -p (prompt) cho phép bạn ghi đè dấu nhắc mật khẩu mặc định và sử dụng tùy chỉnh.Trong trường hợp của bạn, prompt
trống (không có thông báo nào được hiển thị cho sudo khi hỏi mật khẩu) và -S làm cho sudo chấp nhận mật khẩu gốc vi stdin (vì vậy mật khẩu có thể được cung cấp bằng cách sử dụng đường ống và chuyển hướng từ các lệnh khác thay vì được nhập)
Có một câu trả lời hay tại trang web Unix SE về vấn đề shutdown
vs halt
: sự khác biệt giữa các lệnh Halt và Shutdown là gì?
Về sudo -S -p ''
phần này, phần này sẽ xóa thông báo về việc hỏi mật khẩu trong thiết bị đầu cuối (Mặc dù vậy bạn vẫn phải nhập mật khẩu của mình)
Ví dụ: chạy sudo <some_command>
sẽ cho đầu ra này trước khi chạy lệnh này:
[sudo] mật khẩu cho:
Nhưng chạy sudo -S -p '' <some_command>
sẽ ẩn tin nhắn đó.
Trong thực tế, tin nhắn mà bạn đặt trong dấu ngoặc kép, đang thay thế tin nhắn trước đó.
Hãy tiếp tục và thử những điều sau đây, và xem sự khác biệt:
sudo -S -p 'Hey, I am a custom message.' ls
Không có sự khác biệt giữa lệnh tạm dừng và tắt máy về ý định của người dùng. Sự khác biệt nhỏ là tạm dừng bạn phải thuận tiện ấn nút nguồn để tắt hệ thống trong khi trong lệnh tắt máy, nó sẽ tự động ra lệnh cho Giao diện cấu hình nâng cao (ACPI) gửi tín hiệu đến bộ phận nguồn để tắt hệ thống.
shutdown -h now
cũng không nhất thiết phải tắt nguồn. Theoman shutdown
, nó phụ thuộc vào hệ thống.shutdown -H now
(chú ý các nắp trênH
) là cái được đảm bảo tương đương vớihalt