Làm thế nào để biết nếu tôi đang sử dụng systemd trên linux của tôi?


Câu trả lời:


12

Kiểm tra quá trình nào đang chạy dưới dạng PID 1. Bạn có thể thực hiện việc này bằng cách chạy ps aux | less và cuộn lên trên cùng. Nếu bạn có một số thứ systemd chạy như PID 1, thì bạn có systemd đang chạy.

Hoặc, chạy systemctl để liệt kê các đơn vị systemd đang chạy.

Bạn cũng có thể muốn kiểm tra / sbin / init là gì; file /sbin/init sẽ cho bạn biết nếu đó là một thực thi thực sự hoặc nếu đó là một liên kết tượng trưng đến một số gói thực thi khác. Trên hộp systemd, ví dụ:

root@boxy / # file /sbin/init
/sbin/init: symbolic link to ../lib/systemd/systemd

Để biết thêm thông tin, hãy kiểm tra điều này: https://en.wikipedia.org/wiki/Linux_startup_ process

EDIT: Như đã lưu ý bởi nhận xét của deltab, thay vì sử dụng ps aux | less, ps 1 là một cách tốt hơn để làm điều này. Cám ơn giải thích rõ ràng!

EDIT2: Một cách khác để xem chính xác những gì bạn có trên hệ thống của mình là gõ man init và xem trang người đàn ông của chương trình mà bạn kết thúc.


2
Một cách dễ dàng hơn để xem những gì đang chạy với pid 1 là ps 1 (số 1).
deltab

@deltab Cảm ơn bạn đã xóa nó! Tôi sẽ chỉnh sửa nó thành câu trả lời.
ecube

Những người tuyệt vời (@ deltab, @ dma1324) !!! Của tôi ps 1 trình diễn /sbin/initvà của tôi file /sbin/init hiển thị nhị phân, vì vậy tôi nghĩ rằng nó không phải là systemd. Sau đó, tôi đã cố gắng để chạy systemctl lệnh và nhận được lỗi "lệnh không tìm thấy", vì vậy bây giờ tôi chắc chắn rằng tôi chưa có systemd trên linux của mình.
Lucho

5

Tôi biết đây là một câu hỏi cũ, nhưng vì tôi chỉ tự hỏi chính mình câu hỏi tương tự - đây là 2ct của tôi.

Giải pháp tốt nhất tôi nghĩ ra

ps --no-headers -o comm 1

Điều này trả về một trong hai systemd hoặc là init và xuất hiện đáng tin cậy trên các bản phân phối và phát hành Linux.

file /sbin/init sẽ làm việc, với sự giúp đỡ của khớp mẫu. Đầu ra của ps 1 không có vẻ hữu ích vì trên một số bản phân phối Linux, nó sẽ in 'init' (symlink) mặc dù systemd đang được sử dụng.

Debian 8

$ ps 1
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:02 /sbin/init
$ file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd

VÒI 7

$ ps 1
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     7:46 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
$ file /sbin/init
/sbin/init: symbolic link to `../lib/systemd/systemd'

SLES 12

$ ps 1
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
$ file /sbin/init
/sbin/init: symbolic link to `../usr/lib/systemd/systemd'

mởSUSE 13.1

$ ps 1
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:33 /sbin/init showopts
$ /sbin/init: symbolic link to `../usr/lib/systemd/systemd'
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.