একটি নির্দিষ্ট প্রক্রিয়াটির জন্য কীভাবে কেবল ব্যবহারকারী, পিড এবং কমান্ড চালানো যায়? (উবুন্টু ১১.১০)


19

আমি যখন ps -ef|grep pythonনিম্নলিখিতগুলি পাই:

myusername  4492  2994  0 10:32 pts/0    00:00:01 /home/myusername/.virtualenvs/myproject/bin/ipython manage.py runserver
root        6665     1  0 10:42 ?        00:00:00 /usr/bin/python /usr/lib/system-service/system-service-d
myusername 14051 13497  0 11:28 pts/7    00:00:00 grep --color=auto python

প্রক্রিয়াটি চালাচ্ছেন কেবলমাত্র সেই ব্যবহারকারী , পিড এবং কমান্ডটি প্রক্রিয়াটির পরিবর্তে নিম্নলিখিত আউটপুট হিসাবে কীভাবে চালাবেন?

myusername  4492 /home/myusername/.virtualenvs/myproject/bin/ipython manage.py runserver
root        6665 /usr/bin/python /usr/lib/system-service/system-service-d

এটা কি কাজ করে? ps --fields="user pid command"
প্রটন্নাল

চেষ্টা করিনি। এটি নেট খুঁজে পাওয়া গেছে। এখন কোনও উবুন্টু মেশিনের কাছে নেই। দুঃখিত। পরে দেখা হবে এবং আপনাকে জানাতে হবে
pratnala

না, আমি ত্রুটি পেয়েছি: অজানা gnu দীর্ঘ বিকল্প। এটা কি তোমার জন্য কাজ করে?
বেন্টলে 4

উত্তর:


13

আমার ধারণা, আপনি-যুক্তির সন্ধান করছেন:

-ও ফর্ম্যাট:

ব্যবহারকারী সংজ্ঞায়িত ফর্ম্যাট। ফর্ম্যাট হ'ল ফাঁকা-বিচ্ছিন্ন বা কমা-বিচ্ছিন্ন তালিকার আকারে একক যুক্তি, যা পৃথক আউটপুট কলামগুলি নির্দিষ্ট করার উপায় সরবরাহ করে। স্বীকৃত কীওয়ার্ডগুলি নীচে স্ট্যান্ডার্ড ফর্ম্যাট স্পেসিফায়ার বিভাগে বর্ণিত হয়েছে। শিরোনামগুলির পছন্দসই নামকরণ (পিএস-পিড পিড, রুজার = রিয়েল ইউজার-কম কম্যান্ড) করা যেতে পারে। যদি সমস্ত কলামের শিরোনাম খালি থাকে (PS -o pid = -o comm =) তবে শিরোনাম লাইন আউটপুট হবে না। প্রশস্ত শিরোলেখগুলির জন্য প্রয়োজনীয় হিসাবে কলামের প্রস্থ বৃদ্ধি পাবে; এটি ডাব্লুসিএইচএন (পিএস-পিড, উইচান = প্রশস্ত-ডাব্লুচ্যান-কলম্বন-কম) এর মতো কলামগুলি প্রশস্ত করতে ব্যবহৃত হতে পারে। সুস্পষ্ট প্রস্থ নিয়ন্ত্রণ (পিএস ওপিড, ওচেন: 42, সেন্টিমিটার) খুব প্রস্তাবিত। পিএস-ও পিড = এক্স, কম = ওয়াইয়ের আচরণ ব্যক্তিত্বের সাথে পরিবর্তিত হয়; আউটপুট "X, কম = ওয়াই" নামের একটি কলাম বা "এক্স" এবং "ওয়াই" নামে দুটি কলাম থাকতে পারে। সন্দেহ হলে একাধিক-অপশন ব্যবহার করুন। পছন্দসই হিসাবে ডিফল্ট নির্দিষ্ট করতে PS_FORMAT এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন; DefSysV এবং DefBSD ম্যাক্রো যা ডিফল্ট ইউনিক্স বা BSD কলামগুলি চয়ন করতে ব্যবহৃত হতে পারে।

সুতরাং আপনি যে আদেশটি চান তা হবে (উবুন্টু):

ps -o uid,pid,cmd -ef|grep python

ওপেনসোলারিসের অধীনে কমান্ডটি হ'ল:

ps -o ruser,pid,comm -ef|grep python

3
আসলে কি এটি আপনার পক্ষে কাজ করে? যখন আমি সেই কমান্ডটি চালিত করি তখন পেয়েছিWarning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
বেন্টলি 4

হ্যাঁ ওপেনসোলারিসের অধীনে এটি আমার জন্য কাজ করে। আউটপুট হিসাবে আপনি ইচ্ছা ... আপনার সিস্টেমে PS জন্য man পৃষ্ঠা চেক man ps। আপনার সিস্টেমে সিনট্যাক্সটি কিছুটা আলাদা।
সাইমন

1
তবে ওপি বাশ
ksh- এ

1
@ বেন্টলি 4 আপনি যদি কেবল কমান্ডটি চান এবং অতিরিক্ত তথ্যের প্রয়োজন না হলে আপনি -f যুক্তিটি ফেলে দিতে পারেন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:ps -o uid,pid,cmd -e|grep python
সাইমন

1
@ বেন্টলি 4:ps -o user,pid,cmd -e|grep '[p]ython'
সাইমন

3

সবচেয়ে সহজ হতে পারে:

$ ps o uid=,pid=,cmd= -C python
1000 26126 python

এইভাবে আপনি সরাসরি থেকে সবকিছু পান psএবং কোনও কিছুর পার্স করার দরকার নেই।

থেকে psমানুষ পৃষ্ঠা:

-o ফর্ম্যাট

ব্যবহারকারী-সংজ্ঞায়িত ফর্ম্যাট। ফর্ম্যাট হ'ল ফাঁকা-বিচ্ছিন্ন বা কমা-বিচ্ছিন্ন তালিকার আকারে একক যুক্তি, যা পৃথক আউটপুট কলামগুলি নির্দিষ্ট করার উপায় সরবরাহ করে। [...] শিরোনামের নাম পরিবর্তন করা যেতে পারে (পিএস-পি পিড, রুজার = রিয়েল ইউজার-কম কম্যান্ড) কমান্ড হিসাবে। যদি সমস্ত কলামের শিরোনাম খালি থাকে (PS -o pid = -o comm =) তবে শিরোনামের লাইন আউটপুট হবে না।

-C cmdlist
     Select by command name.  This selects the processes whose executable 
     name is given in cmdlist.

-Cবিকল্প যদি আপনি দৌড়াচ্ছে কাজ করবে python, ইন্টারেক্টিভ পদ্ধতিতে যদি না পাইথন একটি স্ক্রিপ্ট চলছে। সেক্ষেত্রে আপনার -C scriptname.pyপরিবর্তে ব্যবহার করা উচিত ।


1

আমার PS এর সংস্করণটি আলাদা, সুতরাং এটির জন্য কিছু টুইট করার প্রয়োজন হতে পারে তবে আপনি কাটা ব্যবহার করতে পারেন (এবং সম্ভবত আপনি কী অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে) - উদাহরণস্বরূপ এমন কিছু

PS ইফ | কাটা -c1-16,50-   

আপনার পিএস স্টেটমেন্টের প্রতিটি লাইন থেকে 1-16 এবং 50 এর পরে অক্ষর সরবরাহ করবে। (আপনার আসল সংখ্যার জন্য সম্ভবত কিছুটা ম্যাসেজের প্রয়োজন হবে)।

এটি করার আরেকটি উপায় (তবে আপনি ফর্ম্যাটিং শিথিল করবেন) হতে পারে

PS ইফ | tr -s "" | কাটা -f1,2,8- -d ""

যা পিএস কমান্ডের সাদা স্থানকে সংকুচিত করবে, তারপরে 1,2 এবং 8 ক্ষেত্রগুলি নিয়ে যাবে এবং তাদের প্রদর্শন করবে।


কেবলমাত্র একটি প্রক্রিয়ার জন্য আমি এই কমান্ডগুলির সাথে একটি পূর্ণ পর্দায় অর্ধেক পৃষ্ঠার তথ্য পাই। এটি বেশ অপঠনযোগ্য, আমি প্যারামিটারগুলিকে 'ম্যাসেজ' করছি তবে এখন পর্যন্ত আমি যা চাই তার থেকে দূরবর্তীভাবে কিছুই পেতে পারি না।
বেন্টলে 4

1
ps -eo user,pid,cmd | grep [p]ython

উদাহরণ:

$ ps -eo user,pid,cmd | grep [p]ython
root      1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
bmaupin  16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py

ব্যাখ্যা:

  • -e সমস্ত প্রক্রিয়া
  • -o ব্যবহারকারী সংজ্ঞায়িত ফর্ম্যাট
  • user,pid,cmd ব্যবহারকারী, প্রসেস আইডি, কমান্ড কলামগুলি দেখান

দ্রষ্টব্য: আপনি যদি অন্যদের পরামর্শ মতো ব্যবহার -fকরেন তবে আপনি -eত্রুটি পেতে পারেন। কারণ এই উভয় পরামিতিই আউটপুট ফর্ম্যাটটিকে নিয়ন্ত্রণ করে এবং এর মধ্যে একটি মাত্র ব্যবহার করা উচিত:

$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined  -f full
-j,j job control   s  signal
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.