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


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.