সিস্টেমড ইউনিট একটি চলমান ডিমন প্রক্রিয়াটির 'মালিকানা' সন্ধান করছে


25

জ্যাক / পলসৌদিও ইস্যুটি ডিবাগ করার জন্য, আমি বুঝতে চাই যে কখন এবং কেন পালসিউডিও ডিমন সিস্টেমড দ্বারা (ফেডোরায়) শুরু করা হয়েছিল।

ব্যবহার:

$ ps -o'pid,ppid,args' `pgrep pulse`

আমি দেখতে পাচ্ছি যে পালসোডিও ডিমন সিস্টেমড দ্বারা শুরু করা হচ্ছে (পিড = 1)

 PID  PPID COMMAND
2738     1 /usr/bin/pulseaudio --start

যাইহোক, আমি আমার সিস্টেমে কোনও ইউনিট-ফাইল সন্ধান করতে পারিনি pulseaudioবা কেবল জাস্টযুক্ত pulse।

আমার নির্দিষ্ট প্রশ্নগুলি হ'ল:

ক) সিস্টেমড ইউনিট নির্দিষ্ট করার জন্য কোনও উপায় আছে যা নির্দিষ্ট প্রক্রিয়া তৈরি করেছিল (আমার উদাহরণস্বরূপ আউটপুট, প্রক্রিয়া 2738, পিএ ডেমন)?

খ) কোন ইউনিট-নির্ভরতা শৃঙ্খলা বা সিস্টেমডের অন্যান্য সেটিংসের অনুরোধের ফলস্বরূপ এটির বিকল্প বিকল্প রয়েছে /usr/bin/pulseaudio --start?

উত্তর:


24

ক) সিস্টেমড ইউনিট নির্দিষ্ট করার জন্য কোনও উপায় আছে যা নির্দিষ্ট প্রক্রিয়া তৈরি করেছিল (আমার উদাহরণস্বরূপ আউটপুট, প্রক্রিয়া 2738, পিএ ডেমন)?

অবশ্যই। আপনি চালাতে পারেন systemctl status <pid>এবং সিস্টেমেড আপনাকে এমন একক খুঁজে পাবে যাতে সেই পিআইডি থাকে। উদাহরণস্বরূপ, আমার সিস্টেমে আমি একটি dnsmasqপ্রক্রিয়া খুঁজে পাই :

# ps -fe | grep dnsmasq
nobody   18834  1193  0 Aug25 ?        00:00:10 /usr/sbin/dnsmasq ...

কে শুরু করলেন?

# 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 --...

আমার একটি pulseaudioপ্রক্রিয়াও রয়েছে:

# ps -fe | grep pulseaudio
lars      2948     1  0 Aug25 ?        00:06:20 /usr/bin/pulseaudio --start

দৌড় systemctl status 2948, আমি দেখছি:

● 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

এটি আমাকে বলেছে যে এটি pulseaudioআমার ডেস্কটপ লগইন সেশন থেকে শুরু হয়েছে সিস্টেম্টের মাধ্যমে স্পষ্টভাবে নয়।


1
আমি এটির স্ক্রিপ্টের জন্য একটি উপায় খুঁজতে চাই। কোন ইউনিট বৈশিষ্ট্যগুলি প্রদর্শন করতে হবে তা নির্বাচন করার জন্য systemctlএকটি --propertyবিকল্প রয়েছে , তবে দুর্ভাগ্যক্রমে এটি কেবল showনা দিয়েই কাজ করে status, এবং showপিআইডি সহ কাজ করে না। আমি যে systemctl status -n0 $PID 2>/dev/null | head -n1 | awk '{print $2}'
— সেরাটির

@ নীলমায়হু লুকের ps -o unitউত্তর দেখুন áš ধরে নিই যে আপনি একটি আধুনিক সিস্টেমে আছেন এবং এটি কাজ করে, এটি একটি সুন্দর জিনিস।
— আরএসও

6

উপায় দ্বারা আপনি পিএসকে অনুরূপ সিস্টেমড ইউনিট দেখাতে চাইতে পারেন।

[lnykryn@notas]$ ps -o'pid,ppid,args,unit' `pgrep pulse`
  PID  PPID COMMAND                     UNIT
 1345     1 /usr/bin/pulseaudio --start session-1.scope

এটি আমার পক্ষে কাজ করে না এবং আমি লক্ষ্য করেছি যে man ps"যদি সিস্টেমড সমর্থন অন্তর্ভুক্ত করা হয়" says সুতরাং আমি এটি সিস্টেম-নির্ভর ধরে নিই।
— নীল মেহেহে

অসাধারণ! এবং নিম্নতর ps -C CMDবিকল্পের সাথে আরও ভাল হবে , যেমন ps -o pid,args,unit -C pulseaudio,।
— আরএসও

4

দ্রষ্টব্য, 1 এর প্যারেন্ট পিপিআইডি থাকার প্রক্রিয়াটির অর্থ এই নয় যে এটি সিস্টেমড দ্বারা তৈরি হয়েছিল। যেকোন প্রক্রিয়া যা তার পিতামাতার প্রক্রিয়াটি হারাতে থাকে সেগুলি স্বয়ংক্রিয়ভাবে প্যারেন্ট 1 টি পুনরায় বরাদ্দ করা হয়।

আপনি সিস্টেমযুক্ত প্রক্রিয়াগুলির শ্রেণিবিন্যাস দেখতে পাবেন

systemctl status

যা অন্যান্য জিনিসগুলির মধ্যে আমার জন্য প্রদর্শিত (সম্পাদিত):

CGroup: 
|-1 /usr/lib/systemd/systemd --system --deserialize 17
|-system.slice
`-user.slice
  `-user-1000.slice
    |-session-66.scope
    | |-4108 /bin/dbus-launch --autolaunch ...
    | |-4109 /bin/dbus-daemon --fork ...
    | `-5985 /usr/bin/pulseaudio --start --log-target=syslog

পিপিআইডি == 1 সম্পর্কে আমার অসম্পূর্ণতা নির্দেশ করার জন্য ধন্যবাদ। আসলে আমি জানতাম যে ইতিমধ্যে এবং এই প্রশ্নটি সম্পর্কে ভেবে যখন এটি সম্পর্কে ভুলে গেছি।
— neradis
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.