systemd hoạt động nội bộ theo hàng đợi "công việc". Mỗi công việc (đơn giản hóa một chút) là một hành động cần thực hiện: dừng, kiểm tra, bắt đầu hoặc khởi động lại một đơn vị cụ thể .
Khi (ví dụ) bạn hướng dẫn systemd khởi động một đơn vị dịch vụ , nó sẽ lập danh sách các công việc dừng và bắt đầu cho bất kỳ đơn vị nào (đơn vị dịch vụ, đơn vị gắn kết, đơn vị thiết bị, v.v.) là cần thiết để đạt được mục tiêu đó, theo yêu cầu đơn vị và phụ thuộc, đặt hàng chúng, theo mối quan hệ đặt hàng đơn vị, giải quyết và (nếu có thể) khắc phục mọi mâu thuẫn bản thân và (nếu bước cuối cùng đó thành công) sẽ đặt chúng vào hàng đợi.
Sau đó, nó cố gắng thực hiện các "công việc" mê hoặc.
Một lệnh dừng đang chạy cho Phiên 1 của người dùng xy
Tên hiển thị đơn vị ở đây là Session 1 of user xy
. Đây sẽ là (từ tên hiển thị) một đơn vị phiên , không phải đơn vị dịch vụ . Đây là bản tóm tắt phiên đăng nhập không gian người dùng được duy trì bởi logind
chương trình của systemd và các plugin PAM của nó. Đó là (về bản chất và lý thuyết) là một nhóm tất cả các quy trình mà người dùng đang chạy dưới dạng "phiên đăng nhập" ở đâu đó.
Công việc đã được chinh phục chống lại nó là stop
. Và có lẽ phải mất một thời gian dài bởi vì những người làm hệ thống đã nhầm lẫn giữa phiên bị treo máy với việc tắt phiên . Họ phá vỡ cái trước để làm cho cái sau hoạt động, và đáp lại một số người thay đổi systemd để phá vỡ cái sau để làm cho cái trước hoạt động. Những người hệ thống thực sự nên nhận ra rằng họ là hai thứ khác nhau.
Trong phiên đăng nhập của bạn, bạn có một cái gì đó bỏ qua SIGTERM
hoặc phải mất một thời gian dài để chấm dứt một khi nó đã thấy SIGTERM
. Trớ trêu thay, trước đây là hành vi lâu đời của một số vỏ kiểm soát công việc. Cách chính xác để chấm dứt các nhà lãnh đạo phiên đăng nhập khi họ là những trình điều khiển công việc cụ thể này là nói với họ rằng phiên này đã bị treo , sau đó họ chấm dứt tất cả các công việc của họ (một loại công việc khác với công việc hệ thống nội bộ) và sau đó tự chấm dứt.
Điều thực sự xảy ra là systemd đang chờ thời gian chờ của đơn vị cho đến khi nó dừng lạiSIGKILL
. Thời gian chờ này là cấu hình trên mỗi đơn vị, tất nhiên, và có thể được đặt thành không bao giờ hết thời gian. Do đó tại sao người ta có thể thấy các hành vi khác nhau.
đọc thêm