Sự khác biệt giữa tắt máy 18:00 và lúc 18:00 tắt máy là gì?


30

at 18:00 shutdown nowshutdown 18:00, họ đang bắt đầu cùng một dịch vụ? Họ làm việc theo cùng một cách?

Câu trả lời:


48

at 18:00 shutdown nowtạo một công việc "tại", được thực hiện tại thời điểm được chỉ định bởi attrình nền hoặc có thể là crontrình nền, tùy thuộc vào hệ thống của bạn.

shutdown 18:00bắt đầu một quá trình trong shell của bạn chờ đến thời gian quy định và sau đó thực hiện tắt máy. Lệnh này có thể được chấm dứt nếu ví dụ: phiên shell của bạn bị chấm dứt.

Kết quả cuối cùng trong hầu hết các trường hợp sẽ giống nhau: hệ thống ngừng hoạt động lúc 18:00.

Một điểm khác biệt là nếu bạn sử dụng at, công việc sẽ được lưu trữ và nếu hệ thống bị tắt bởi một số phương tiện khác trước 18:00, khi khởi động lại, công việc vẫn sẽ chờ để được chạy; nếu thời gian đã trôi qua, việc tắt máy sẽ được thực hiện ngay lập tức, điều này có thể khá bất ngờ.

Một sự khác biệt nữa là shutdown 18:00sẽ tạo một /run/nologintệp 5 phút trước thời gian dự kiến ​​để ngăn mọi người đăng nhập sau thời điểm đó. Ngoài ra tin nhắn quảng bá sẽ được gửi để cảnh báo người dùng đã đăng nhập rằng hệ thống sắp bị tắt.

Bạn cần tính đến những khác biệt này để quyết định sử dụng.


1
" shutdown 18:00Bắt đầu một quá trình trong vỏ của bạn chờ". Nếu bạn đăng xuất trước đó thì sao?
RonJohn

1
@RonJohn: Sau đó, nó phụ thuộc nếu bạn sử dụng nohuphoặc disownhoặc bất cứ điều gì, nếu đăng xuất thường giết chết chạy quá trình nền. Các hệ thống khác nhau có thể có mặc định khác nhau cho điều đó. (Tôi giả định rằng có thực sự là một sudo shutdownquá trình vẫn chạy, chứ không phải nó chỉ phát tín hiệu initđể bắt đầu một giờ tắt máy Sức mạnh sau thực sự là những gì xảy ra, nhưng tôi đã không kiểm tra gần đây Oh, nhưng @JdeBP có;.. Xem câu trả lời rằng )
Peter Cordes

Có thực sự có thể thiết lập atđể nó hoạt động thông qua cronthay vì atd?
terdon

3
Có một người điều hành kim cương chưa đọc Làm thế nào để hỏi . (-: Bạn sẽ thấy rằng câu hỏi này đã được hỏi bốn năm trước tại unix.stackexchange.com/questions/147643 .
JdeBP

"Các tin nhắn quảng bá cũng sẽ được gửi để cảnh báo người dùng đã đăng nhập rằng hệ thống sắp bị tắt." Tôi muốn nói rằng đây là sự khác biệt quan trọng nhất trong các máy chủ có nhiều người dùng, tôi sẽ nhấn mạnh nó nhiều hơn trong câu trả lời này.
JiK

23

Và bây giờ, câu trả lời systemd.

Nếu bạn có CentOS 7, bạn có một hệ điều hành systemd và câu trả lời là khác nhau.

at 18:00 shutdown nowvẫn lên lịch thông qua athệ thống con, nhưng shutdownlệnh đó , cũng như lệnh mà bạn gọi trực tiếp shutdown 18:00, thì khác. Đó thực sự là systemctlchương trình của systemd . systemctllàm những điều khác nhau.

Trước hết, systemctlgửi yêu cầu tắt máy theo lịch trình để được xử lý bởi một dæmon, khá giống như trong attrường hợp. Tuy nhiên, đây là một hệ thống, cụ thể logind( systemd-shutdownddmon đã bị xóa khỏi systemd vào tháng 5 năm 2015, sự thay đổi đã được chuyển qua các phiên bản nhỏ hơn của CentOS 7), không phải là athệ thống con. systemctlnói một giao thức nội bộ với một nhà môi giới Desktop Bus (toàn hệ thống) mà lần lượt giao tiếp với logind.

Vì vậy, giống như trong attrường hợp, không có shutdownquá trình ngồi đó đếm ngược và sinh ra các walltin nhắn. Vì vậy, người ta có thể đăng xuất và điều này sẽ không ảnh hưởng đến lịch trình và việc hủy bỏ không đơn giản chỉ đơn giản là làm gián đoạn / giết chết quá trình tiền cảnh của phiên đăng nhập. Cũng giống như với at.

Vẫn tin nhắn, không giống như trong attrường hợp, nhưng chúng được phát hành bởi logind. Cũng không giống như attrường hợp, công việc được lên lịch không tiếp tục khởi động lại trên toàn hệ thống, do đó, việc tắt máy thực tế sẽ hủy công việc theo lịch trình. Có một tập tin trong hệ thống tập tin, nhưng nó là dưới /run/systemd/shutdownđó là lưu trữ không liên tục.

Sự khác biệt nữa là chỉ có thể có một lần tắt theo lịch trình tại một thời điểm, trong khi một người có thể gửi nhiều atcông việc và Bộ công cụ chính sách sẽ áp dụng các quy tắc để shutdownchạy trong ngữ cảnh không đăng nhập như một atcông việc khác với quy tắc được áp dụng để shutdownchạy trong bối cảnh đăng nhập phiên. Cái sau có thể được cho phép nhiều hơn, cho phép (giả sử) một người dùng không có quyền được đăng nhập vào phiên đăng nhập hoạt động để tắt hệ thống.

đọc thêm

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.