লিনাক্সে পিআইডি-র ব্যবহারকারীর নাম কীভাবে পাওয়া যায়


17

আপনি কি পিআইডি-র ব্যবহারকারীর নাম খুঁজে পেতে আমাকে সহায়তা করতে পারেন, কিছু সময় আমার সার্ভারে উচ্চ লোড পেয়েছে। যখন আমি শীর্ষ-সি করি, আমি পিআইডি-র ব্যবহারকারীর নামটিও সন্ধান করতে পারি না যে / যেটি সার্ভারে লোড সৃষ্টি করে।


আমরা বাল্ক পিএইচপি প্রক্রিয়াটির কারণে সার্ভার লোড সমস্যার মুখোমুখি হয়েছিলাম, যাতে আমার এই প্রশ্নটি হয়েছিল, আমরা তখন তাদেরকে 'lsof -p xxxx' ব্যবহার করে খুঁজে পেতে পারি।
রঞ্জিতকুমার টি

উত্তর:


31

আমি অবাক হয়েছি এখনও কেউ এটিকে রাখেনি:

কমান্ডের -pবিকল্পটি চেষ্টা করুন ps

উদাহরণস্বরূপ, আপনার যদি পিআইডি থাকে তবে 1234চালান:

ps -u -p 1234

( -uআউটপুটটিতে ব্যবহারকারীর নাম অন্তর্ভুক্ত করার জন্য যুক্ত করা হয়েছিল)

আপনি ব্যবহার করতে পারেন grepবা awkইত্যাদি তথ্য আপনি চান বের করে আনতে।


1
আপনি আমার চেয়ে দ্রুত টিক ছিলেন। তুমি আগে জাগো? লিনাক্সের বিভ্রান্তির উপর নির্ভর করে, ps u 1234(ডেবিয়ান) বা জাস্ট ps 1234(অ্যান্ড্রয়েড উইন্ডো ব্যাসবক্স ) এছাড়াও কাজ করে।
অট--

5

/proc/processID/status ব্যবহারকারীর আইডি সম্পর্কিত তথ্য থাকবে যা আপনি ব্যবহারকারীর নাম খুঁজে পেতে ব্যবহার করতে পারেন।

এটি একই কাজ করে:

uid=$(awk '/^Uid:/{print $2}' /proc/YOUR_PROCESS_ID/status)
getent passwd "$uid" | awk -F: '{print $1}'

আপনার প্রক্রিয়া আইডি নম্বর দিয়ে YOUR_PROCESS_ID প্রতিস্থাপন করুন।


3

একটি পিআইডি থেকে কেবল ব্যবহারকারী নাম পান:

PID=136323
USERNAME="$( ps -o uname= -p "${PID}" )"

আপনি এটি একটি সঙ্গে একত্রিত করতে পারেন pgrep। এই উদাহরণে আমরা সমস্ত .phpফাইল ব্যবহার করে কিছু ফাইল কার্যকর করি :

pgrep -f '\.php' | xargs -r ps -o uname= -p | sort -u

একটি নির্দিষ্ট অনন্য প্রক্রিয়া চালিত শুধুমাত্র একটি ব্যবহারকারী নাম পান:

USERNAME="$( pgrep -nf 'script\.php' | xargs -r ps -o uname= -p )

1

আপনি ঠিক কি চান? আমার সিস্টেমে, আমি যদি 'টপ-সি' চালাই তবে আমি তা পেতে পারি:

  PID USER      PR  NI  VIRT  RES  SHR S   %CPU %MEM    TIME+  COMMAND                                                                                                                        
  2873 matt      20   0 3022m 1.6g 1.6g S     22 21.6   2245:42 /usr/lib/virtualbox/VirtualBox --comment ESX5-1 --startvm 4fd78ee9-739a-4d53-a0ce-4f9819ab9411 --no-startvm-errormsgbox        
  29764matt      20   0 2779m 1.4g 1.3g S      5 18.4 210:33.51 /usr/lib/virtualbox/VirtualBox --comment win2008-2 --startvm 202ec2b7-ae12-40e9-af76-2be429e553d7 --no-startvm-errormsgbox     
  17281root      20   0     0    0    0 S      2  0.0   0:05.90 [kworker/u:2]                                                                                                              

সুতরাং পিআইডি (প্রসেস / টাস্ক শনাক্তকারী) প্রথম কলাম, এবং প্রসেসাসের অধীনে থাকা ব্যবহারকারী অ্যাকাউন্টটি দ্বিতীয় কলাম


1

আমি মনে করি সবচেয়ে সংক্ষিপ্ততম উপায়:

id -nu </proc/<pid>/loginuid

এই /proc/<pid>/loginuidফাইলটিতে ইউড সংখ্যাটি ব্যবহার করে প্রক্রিয়াটি চালাচ্ছে; id -nuস্টিডিন থেকে uid পড়ে এবং একটি ব্যবহারকারীর নাম দেয়।


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