A) Apakah ada cara untuk menentukan unit systemd yang menyebabkan penciptaan proses tertentu (dalam contoh saya output, proses 2738, daemon PA)?
Yakin. Anda dapat menjalankan systemctl status <pid>
dan systemd akan menemukan Anda unit yang berisi PID itu. Misalnya, pada sistem saya, saya menemukan dnsmasq
proses:
# ps -fe | grep dnsmasq
nobody 18834 1193 0 Aug25 ? 00:00:10 /usr/sbin/dnsmasq ...
Siapa yang memulai?
# systemctl status 18834
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2015-08-25 11:07:40 EDT; 1 day 21h ago
Main PID: 1193 (NetworkManager)
Memory: 1.1M
CGroup: /system.slice/NetworkManager.service
├─ 1193 /usr/sbin/NetworkManager --no-daemon
├─ 1337 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-wlp3s0....
├─18682 /usr/libexec/nm-openvpn-service
├─18792 /usr/sbin/openvpn --remote ovpn-phx2.redhat.com 443 tcp --nobind --dev redhat --de...
└─18834 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --...
Saya juga punya pulseaudio
proses:
# ps -fe | grep pulseaudio
lars 2948 1 0 Aug25 ? 00:06:20 /usr/bin/pulseaudio --start
Berjalan systemctl status 2948
, saya melihat:
● session-3.scope - Session 3 of user lars
Loaded: loaded (/run/systemd/system/session-3.scope; static; vendor preset: disabled)
Drop-In: /run/systemd/system/session-3.scope.d
└─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-SendSIGHUP.conf, 50-Slice.conf
Active: active (running) since Tue 2015-08-25 11:09:23 EDT; 1 day 21h ago
CGroup: /user.slice/user-1000.slice/session-3.scope
Ini memberitahu saya pulseaudio
itu dimulai dari sesi login desktop saya, daripada secara eksplisit melalui systemd.
systemctl
memiliki--property
opsi untuk memilih properti unit mana yang akan ditampilkan, tetapi sayangnya ini hanya berfungsi denganshow
tidakstatus
, danshow
tidak bekerja dengan PID. Yang terbaik yang bisa sayasystemctl status -n0 $PID 2>/dev/null | head -n1 | awk '{print $2}'
ps -o unit
jawaban oleh Lukáš. Dengan asumsi Anda menggunakan sistem modern dan berfungsi, itu adalah hal yang indah.Omong-omong, Anda dapat meminta ps untuk menampilkan unit systemd yang sesuai.
sumber
man ps
mengatakan "jika dukungan systemd telah disertakan." Jadi saya menganggap itu tergantung pada sistem.ps -C CMD
opsi yang kurang digunakan , misalnyaps -o pid,args,unit -C pulseaudio
,.Catatan, proses memiliki PPID induk dari 1 tidak berarti itu dibuat oleh systemd. Setiap proses yang kehilangan proses induknya secara otomatis ditugaskan ulang induknya 1.
Anda dapat melihat hierarki proses systemd dengan
yang menunjukkan kepada saya di antara hal-hal lain (diedit):
sumber