প্রসেস গ্রুপ আইডি পাওয়া / প্রোক থেকে পাওয়া সম্ভব?


16

" Https://stackoverflow.com/questions/13038143/how-to-get-pids-in-one-process-group-in-linux-os " এ আমি সমস্ত উত্তর উল্লেখ করেছি psএবং কিছুই উল্লেখ নেই /proc

"পিএস" খুব পোর্টেবল নয় বলে মনে হচ্ছে (অ্যান্ড্রয়েড এবং ব্যস্তবক্স সংস্করণগুলি বিভিন্ন যুক্তি প্রত্যাশা করে), এবং আমি পিজিডগুলির সাথে সহজ এবং বহনযোগ্য সরঞ্জামগুলির সাথে তালিকা তৈরি করতে সক্ষম হতে চাই।

/ প্রোকে /... / স্ট্যাটাসে আমি Tgid:(থ্রেড গ্রুপ আইডি) দেখতে পাই , Gid:(সুরক্ষার জন্য গ্রুপ আইডি, একসাথে গোষ্ঠীকরণ প্রক্রিয়াগুলির জন্য নয়), তবে PGid:...

psপিড থেকে পিজিড পাওয়ার অন্যান্য (ব্যবহার না করা ) উপায়গুলি কী কী ?

উত্তর:


24

আপনি আউটপুট 5 ম ক্ষেত্র তাকান করতে পারেন /proc/[pid]/stat

$ ps -ejH | grep firefox
 3043  2683  2683 ?        00:00:21   firefox

$ < /proc/3043/stat sed -n '$s/.*) [^ ]* [^ ]* \([^ ]*\).*/\1/p'
2683

থেকে man proc:

/proc/[pid]/stat
              Status information about the process.  This is used by ps(1).  It is defined in /usr/src/linux/fs/proc/array.c.

              The fields, in order, with their proper scanf(3) format specifiers, are:

              pid %d      The process ID.

              comm %s     The filename of the executable, in parentheses.  This is visible whether or not the executable is swapped out.

              state %c    One character from the string "RSDZTW" where R is running, S is sleeping in an interruptible wait, D is waiting in
                          uninterruptible disk sleep, Z is zombie, T is traced or stopped (on a signal), and W is paging.

              ppid %d     The PID of the parent.

              pgrp %d     The process group ID of the process.

              session %d  The session ID of the process.

নোট করুন যে আপনি ব্যবহার করতে পারবেন না:

awk '{print $5}'

কারণ সেই ফাইলটি ফাঁকা পৃথক তালিকা নয়। দ্বিতীয় ক্ষেত্র (প্রক্রিয়া নাম ফাঁকা বা এমনকি নতুন লাইন অক্ষর থাকতে পারে)। উদাহরণস্বরূপ, বেশিরভাগ থ্রেডের firefoxসাধারণত তাদের নামে স্পেস অক্ষর থাকে।

সুতরাং )সেখানে কোনও চরিত্রের শেষ ঘটনাটির পরে আপনাকে তৃতীয় ক্ষেত্রটি মুদ্রণ করতে হবে।


মনে রাখবেন যে awk '{print $5}'প্রক্রিয়া নাম (দ্বিতীয় ক্ষেত্র) এ স্থান বা নিউলাইন অক্ষর থাকতে পারে বলে আপনাকে সঠিক উত্তর দেওয়ার নিশ্চয়তা নেই।
স্টাফেন চেজেলাস 27:58

কীভাবে নির্ভরযোগ্যভাবে পার্স / প্রপোকা..... / স্ট্যাট?
vi।

3
@ ভি, এই উত্তরটি দেখুন perl -l -0777 -ne '@f = /\(.*\)|\S+/g; print $f[4]' "/proc/$pid/stat" বাp=$(cat "/proc/$pid/stat") && set ${p##*')'} && echo "$3"
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস: ধন্যবাদ, আমি আমার উত্তর আপডেট করেছি!
cuonglm

ফাইলের নামের চেয়ে এটি প্রক্রিয়া নাম বেশি। সমস্যাটি সাধারণত এমন প্রক্রিয়াগুলির সাথে দেখা দেয় যা তাদের নাম পরিবর্তন করে (যেটি তারা কার্যকর করেছে তাদের শেষ ফাইলটির নাম থেকে)।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.