Làm thế nào tôi có thể dự đoán thứ tự tắt máy của systemd?


9

Có cách nào để systemdnói cho tôi biết thứ tự thô mà nó sẽ tắt các dịch vụ khi tôi tắt toàn bộ hệ thống không? Vì systemdsẽ tắt mọi thứ song song, tôi đánh giá cao không có cách nào để biết thứ tự chính xác, nhưng sẽ rất hữu ích khi biết những ràng buộc nào systemdsẽ áp đặt cho trình tự tắt máy, tốt nhất là trong một loại hình ảnh dễ hiểu.

Động lực là để phát triển và gỡ lỗi các tệp dịch vụ, việc lấy danh sách dự đoán này sẽ thuận tiện hơn rất nhiều , thay vì phải tắt máy thật sự và sau đó khởi động lại và kiểm tra nhật ký mỗi khi tôi muốn xác định những gì ảnh hưởng đến một thay đổi đối với tệp đơn vị dịch vụ hoặc một số khía cạnh khác trong cấu hình của systemd sẽ có trong lệnh tắt máy.

Tôi đã hy vọng rằng một cái gì đó như

systemctl list-dependencies --before shutdown.service

sẽ thực hiện công việc, nhưng nó chỉ phát ra:

shutdown.service

Câu trả lời:


2

Những điều sau đây có thể giúp bạn:

systemctl list-dependencies --before shutdown.target

Trân trọng,


3
Vâng, cảm ơn vì đã chỉ ra sai lầm ngu ngốc của tôi mà shutdown.targetkhông phải shutdown.service. Tuy nhiên, điều này vẫn không cung cấp cho tôi danh sách đã yêu cầu mà thay vào đó, đưa cho tôi một danh sách rất ngắn hoặc thậm chí là một danh sách trống trên một số hệ thống.
Adam Spiers

Systemd không rõ ràng về mục đích, không may. Đối với kiểu sysvinit của oldschool, có lẽ người ta có thể thêm ghi nhật ký vào tệp khởi động và đăng ký các quy trình đã bắt đầu trong tệp có dấu thời gian - ít nhất đó là điều tôi nghĩ đến trước tiên.
shevy

1
@AdamSpiers @Mohamed Salhi về cơ bản, "trước" có nghĩa là "bắt đầu trước". Điều này có nghĩa là lệnh bạn muốn là systemctl list-dependencies --after shutdown.target... ít nhất là sẽ tìm thấy mọi thứ mà lệnh đầu tiên không có. Điều này cũng khó hiểu vì shutdown.targetđang bắt đầu , nhưng tất cả các đơn vị khác đang dừng lại và trong trường hợp này, việc bạn có đặt hàng "trước" hay "sau" không thành vấn đề; dừng lại được thực hiện trước khi bắt đầu trong cả hai trường hợp.
sourcejedi

1

Lệnh tắt máy thường là đảo ngược của lệnh khởi động.

Điều đó nói rằng, daemon đều được gửi tín hiệu tắt máy và sẽ mất nhiều thời gian khác nhau để thực sự tắt và thoát.

Rời khỏi hệ thống đơn giản, tôi không nghĩ có thể dự đoán một cách hữu ích những dịch vụ nào sẽ thoát theo trình tự nào. Hơn nữa, sự phụ thuộc sẽ kiểm soát một số trình tự.


1
Phải - tôi đã nhận thức được điều đó, do sự song song. Tuy nhiên tôi không cần thứ tự chính xác - chỉ những thứ tự nào được thi hành và những thứ có khả năng chạy song song. Tôi sẽ cập nhật câu hỏi của tôi để làm rõ điều này. Ngoài ra, bạn có thể đủ điều kiện "thường"? Khi nào nó sẽ không được đảo ngược?
Adam Spiers
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.