সম্পূর্ণ প্রক্রিয়া সম্পর্কিত তথ্য প্রদর্শন করার জন্য কীভাবে পিগ্রিপ পাবেন


26

pgrepপ্রতিটি প্রক্রিয়া সম্পর্কে আমাকে সমস্ত তথ্য দেওয়ার কোনও উপায় আছে কি ps? আমি জানি আমি নল করতে পারেন psমাধ্যমে grepকিন্তু যে টাইপিং অনেক এবং এটি আমাকে দেয় grepপ্রক্রিয়া নিজেই না যা আমি চাই।

উত্তর:


22

pgrepএর আউটপুট বিকল্পগুলি বেশ সীমিত। psগুরুত্বপূর্ণ তথ্যটি বের করার জন্য আপনাকে অবশ্যই অবশ্যই এটি পুনরায় পাঠাতে হবে । আপনি এটিতে একটি ব্যাশ ফাংশন ব্যবহার করে এটি স্বয়ংক্রিয় করতে পারেন ~/.bashrc

function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }

তারপরে কমান্ডটি কল করুন।

ppgrep <pattern>

2
ধন্যবাদ! আমি এটিকে এটিকে সংশোধন করেছি: function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; } অন্যথায়, যদি আপনার অনুসন্ধানের সাথে কোনও প্রক্রিয়া মেলে না, এটি পুরো psব্যবহারের মেগিলা ফেলে দেয়।
জোয়েলফ্যান

ওএস এক্স-তে, psপতাকাগুলির জন্য হাইফেনের প্রয়োজন:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
এরিক নমিচ

1
আপনি যদি পিএস ব্যবহারের পৃষ্ঠাটি এড়াতে চান তবে জিএনইউ xargs এর একটি বিকল্প রয়েছে, -rএটি কমান্ডটি কার্যকর করবে যদি এটি কোনও তালিকা পেয়ে থাকে ute
ডগ

1
আরও সংক্ষিপ্ত উপায়ps fp $(pgrep -d, "$@")
ইগর Mikushkin

14

ব্যবহারের pgrepসাথে একত্রিত !psxargs

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

উদাহরণস্বরূপ চেষ্টা করুন

pgrep -u user | xargs ps -f -p

একটি সম্পূর্ণ প্রক্রিয়া তালিকা পেতে user

এটি দুর্দান্ত যে আপনি কলামের নামগুলির সাথে প্রথম লাইনটি রেখেছেন। grepসর্বদা কলামের নাম ড্রপ করে।


চমৎকার! এটি xfvb এর জন্য আরকিস সার্ভার স্টার্টআপ স্ক্রিপ্টের সাথে একটি অদ্ভুত সমস্যা সমাধান করে
প্রসওয়ান

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ এটি ইউনিক্স পাইপগুলিকে যথাযথ উপায়ে ব্যবহার করে, একটি সরঞ্জাম থেকে পিআইডিগুলির একটি তালিকা নিয়ে অন্যটিতে ফিরিয়ে দেয় (যদি এটি হ্যাকারির মতো মনে হয় তবে এটি নয় - এই কৌশলটি ইউনিক্স সরঞ্জামের প্রচুর অংশে ব্যবহার করা যেতে পারে ইমেলের গ্রেপ সরঞ্জামগুলির মতো। বাশ ফাংশন পিপিগ্রিপ () একটি অপ্রয়োজনীয় নির্ভরতা, এবং এখানে উপস্থাপন শেখার সুযোগের মুখোমুখি হওয়া এড়ানো হয়))
স্কট প্রাইভ

10

নিম্নলিখিতটি কেবল আপনাকে পিআইডি + সম্পূর্ণ কমান্ড-লাইন দেয়। "সমস্ত তথ্য psদেয়" এর জন্য, অন্যান্য উত্তরগুলি দেখুন ...

বেশিরভাগ লিনাক্স প্রোপস -এনজি ব্যবহার করে । ৩.৩.৪ (২০১২ সালে প্রকাশিত) থেকে pgrep -a( --list-full) সম্পূর্ণ কমান্ড লাইনটি দেখায়।
দ্রষ্টব্য: ডিফল্টরূপে pgrep কেবলমাত্র সম্পাদনযোগ্য নামের বিরুদ্ধে আপনি যে প্যাটার্নটি দিয়েছিলেন তার সাথে মেলে। আপনি যদি পূর্ণ কমান্ড লাইনের (যেমন গ্রেপিং পিএএস হিসাবে) এর সাথে মিল রাখতে চান তবে -f( --full) বিকল্পটি যুক্ত করুন।

পুরানো সংস্করণগুলিতে (মূল প্রকোপস প্রকল্প সহ ) -lবিকল্পগুলি তথ্য দেখিয়েছে তবে এর আচরণটি বিভিন্ন রকম:

  • pgrep -fl সম্পূর্ণ কমান্ড লাইনের বিপরীতে প্যাটার্নটি মেলে এবং সম্পূর্ণ কমান্ড লাইনটি দেখায়।
  • pgrep -lএকা কেবলমাত্র সম্পাদনযোগ্য নামের সাথে মিলে এবং কেবলমাত্র কার্যকর কার্যকর নাম দেখায়।
    আপনি যদি পুরো ম্যাচটি না চান, আপনি পুরো কমান্ড লাইনটি দেখতে পেলেন না :-( [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]

কী কোড * বিএসডি ব্যবহার করছে তা নিশ্চিত নয় তবে তাদের ম্যান পেজটি পুরানো -flআচরণের দলিল দেয় ।

দুর্ভাগ্যক্রমে আপনি এমনকি -flবহনযোগ্যভাবে ব্যবহার করতে পারবেন না - সাম্প্রতিক প্রোপস-এনজি তে, -f( --list-name) সর্বদা কেবলমাত্র কার্যকর সম্পাদকের নাম মুদ্রণ করে।


4

লিনাক্স

এর গনুহ সংস্করণের জন্য (কেস-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

Man পৃষ্ঠা :

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

1

গ্রেপ করতে -v বিকল্পটি ব্যবহার করুন - এটি অনুরোধকৃত প্যাটার্নটিতে সমস্ত কিছু দেয়।

ps -ef | grep <process> | grep -v grep

এটি আমার পক্ষে সেরা উত্তর ছিল। এটি যেমনটি ঘটে তেমনি pgrep -u user | xargs ps -f -p
কাটছাঁট

0

আমি মনে করি না যে আছে, সর্বাধিক তথ্য আপনি পেতে পারেন নাম এবং প্রক্রিয়া আইডি pgrep -l বিকল্প ব্যবহার করে।

PS সমস্ত ধরণের ফর্ম্যাটিং বিকল্পগুলিকে সমর্থন করে, তাই আপনি কী টাইপিং সংরক্ষণ করতে চান তার জন্য আমি কেবল একটি উপনাম তৈরি করব। গ্রেপ প্রক্রিয়া আউটপুট থেকে বাদ দেওয়ার একটি সহজ উপায় আমাদের যে grep -v grepকোনও গ্রেপ প্রক্রিয়া বাদ দিতে অতিরিক্ত পাইপ অন্তর্ভুক্ত করতে হবে।


0

grepপ্রক্রিয়াটি দূর করতে , আপনি আপনার প্যাটার্নের অংশ হিসাবে বন্ধনী ব্যবহার করতে পারেন:

ps -ef | grep '[t]ty'

আপনি এটি দিয়ে psএবং এটি করতে পারেন pgrep:

ps -fp $(pgrep -d, tty)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.