উত্তর:
pgrep
এর আউটপুট বিকল্পগুলি বেশ সীমিত। ps
গুরুত্বপূর্ণ তথ্যটি বের করার জন্য আপনাকে অবশ্যই অবশ্যই এটি পুনরায় পাঠাতে হবে । আপনি এটিতে একটি ব্যাশ ফাংশন ব্যবহার করে এটি স্বয়ংক্রিয় করতে পারেন ~/.bashrc
।
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
তারপরে কমান্ডটি কল করুন।
ppgrep <pattern>
ps
পতাকাগুলির জন্য হাইফেনের প্রয়োজন:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
এটি কমান্ডটি কার্যকর করবে যদি এটি কোনও তালিকা পেয়ে থাকে ute
ps fp $(pgrep -d, "$@")
ব্যবহারের pgrep
সাথে একত্রিত !ps
xargs
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
উদাহরণস্বরূপ চেষ্টা করুন
pgrep -u user | xargs ps -f -p
একটি সম্পূর্ণ প্রক্রিয়া তালিকা পেতে user
।
এটি দুর্দান্ত যে আপনি কলামের নামগুলির সাথে প্রথম লাইনটি রেখেছেন। grep
সর্বদা কলামের নাম ড্রপ করে।
নিম্নলিখিতটি কেবল আপনাকে পিআইডি + সম্পূর্ণ কমান্ড-লাইন দেয়। "সমস্ত তথ্য ps
দেয়" এর জন্য, অন্যান্য উত্তরগুলি দেখুন ...
বেশিরভাগ লিনাক্স প্রোপস -এনজি ব্যবহার করে । ৩.৩.৪ (২০১২ সালে প্রকাশিত) থেকে pgrep -a
( --list-full
) সম্পূর্ণ কমান্ড লাইনটি দেখায়।
দ্রষ্টব্য: ডিফল্টরূপে pgrep কেবলমাত্র সম্পাদনযোগ্য নামের বিরুদ্ধে আপনি যে প্যাটার্নটি দিয়েছিলেন তার সাথে মেলে। আপনি যদি পূর্ণ কমান্ড লাইনের (যেমন গ্রেপিং পিএএস হিসাবে) এর সাথে মিল রাখতে চান তবে -f
( --full
) বিকল্পটি যুক্ত করুন।
পুরানো সংস্করণগুলিতে (মূল প্রকোপস প্রকল্প সহ ) -l
বিকল্পগুলি তথ্য দেখিয়েছে তবে এর আচরণটি বিভিন্ন রকম:
pgrep -fl
সম্পূর্ণ কমান্ড লাইনের বিপরীতে প্যাটার্নটি মেলে এবং সম্পূর্ণ কমান্ড লাইনটি দেখায়।pgrep -l
একা কেবলমাত্র সম্পাদনযোগ্য নামের সাথে মিলে এবং কেবলমাত্র কার্যকর কার্যকর নাম দেখায়। কী কোড * বিএসডি ব্যবহার করছে তা নিশ্চিত নয় তবে তাদের ম্যান পেজটি পুরানো -fl
আচরণের দলিল দেয় ।
দুর্ভাগ্যক্রমে আপনি এমনকি -fl
বহনযোগ্যভাবে ব্যবহার করতে পারবেন না - সাম্প্রতিক প্রোপস-এনজি তে, -f
( --list-name
) সর্বদা কেবলমাত্র কার্যকর সম্পাদকের নাম মুদ্রণ করে।
এর গনুহ সংস্করণের জন্য (কেস-insensitivity) সমর্থিত নয়, এবং দীর্ঘ + + ঝাপসা আউটপুট অর্জিত হয় ।pgrep
-i
-af
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
-a, --list-full
List the full command line as well as the process ID. (pgrep only.)
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
ওএসএক্সে (এবং বিএসডি-তে অনুক্রমের মাধ্যমে) -l
( দীর্ঘ আউটপুট ) -f
( সম্পূর্ণ যুক্তির তালিকার সাথে মিল রেখে ) সম্পূর্ণ কমান্ড প্রদর্শিত হবে ( -i
কেস-সংবেদনশীলতা যোগ করবে ):
$ pgrep -fil ssh
OUTPUT:
33770 ssh: abc@192.168.0.123-22 [mux] t
-l Long output. For pgrep, print the
process name in addition to the
process ID for each matching
process. If used in conjunction
with -f, print the process ID and
the full argument list for each
matching process. For pkill, dis-
play the kill command used for
each process killed.
আমি মনে করি না যে আছে, সর্বাধিক তথ্য আপনি পেতে পারেন নাম এবং প্রক্রিয়া আইডি pgrep -l বিকল্প ব্যবহার করে।
PS সমস্ত ধরণের ফর্ম্যাটিং বিকল্পগুলিকে সমর্থন করে, তাই আপনি কী টাইপিং সংরক্ষণ করতে চান তার জন্য আমি কেবল একটি উপনাম তৈরি করব। গ্রেপ প্রক্রিয়া আউটপুট থেকে বাদ দেওয়ার একটি সহজ উপায় আমাদের যে grep -v grep
কোনও গ্রেপ প্রক্রিয়া বাদ দিতে অতিরিক্ত পাইপ অন্তর্ভুক্ত করতে হবে।
grep
প্রক্রিয়াটি দূর করতে , আপনি আপনার প্যাটার্নের অংশ হিসাবে বন্ধনী ব্যবহার করতে পারেন:
ps -ef | grep '[t]ty'
আপনি এটি দিয়ে ps
এবং এটি করতে পারেন pgrep
:
ps -fp $(pgrep -d, tty)
এটি আপনাকে অনুমান করতে সহায়তা করবে:
PS auxww
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
অন্যথায়, যদি আপনার অনুসন্ধানের সাথে কোনও প্রক্রিয়া মেলে না, এটি পুরোps
ব্যবহারের মেগিলা ফেলে দেয়।