क्या आप मुझे पीआईडी के उपयोगकर्ता नाम को खोजने में मदद कर सकते हैं, कुछ समय में मेरे सर्वर को उच्च भार मिला। जब मैं टॉप -c करता हूं, तो मुझे पीआईडी का उपयोगकर्ता नाम भी नहीं मिल सकता है, जो सर्वर पर लोड कर रहा है।
क्या आप मुझे पीआईडी के उपयोगकर्ता नाम को खोजने में मदद कर सकते हैं, कुछ समय में मेरे सर्वर को उच्च भार मिला। जब मैं टॉप -c करता हूं, तो मुझे पीआईडी का उपयोगकर्ता नाम भी नहीं मिल सकता है, जो सर्वर पर लोड कर रहा है।
जवाबों:
मुझे आश्चर्य है कि किसी ने भी इसे अभी तक नहीं लगाया है:
कमांड के -p
विकल्प का प्रयास करें ps
।
उदाहरण के लिए, यदि आपके पास पीआईडी है 1234
, तो दौड़ें:
ps -u -p 1234
( -u
आउटपुट में उपयोगकर्ता नाम शामिल करने के लिए जोड़ा गया था)
आप अपनी इच्छित जानकारी निकालने के लिए उपयोग grep
या awk
आदि कर सकते हैं।
ps u 1234
(डेबियन) या सिर्फ ps 1234
(बिजीबॉक्स वाला एंड्रॉइड) भी काम करता है।
/proc/processID/status
उपयोगकर्ता की आईडी के बारे में जानकारी होगी जिसका उपयोग आप उपयोगकर्ता नाम खोजने के लिए कर सकते हैं।
यह वही करता है:
uid=$(awk '/^Uid:/{print $2}' /proc/YOUR_PROCESS_ID/status)
getent passwd "$uid" | awk -F: '{print $1}'
अपनी प्रक्रिया आईडी नंबर के साथ Your_PROCESS_ID बदलें।
PID से केवल उपयोगकर्ता नाम प्राप्त करें:
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 )
आप सही में क्या चाहते हैं? अपने सिस्टम पर, अगर मैं 'टॉप -c' चलाता हूं तो मुझे यह मिलता है:
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]
तो पीआईडी (प्रोसेसस / टास्क आइडेंटिफ़ायर) पहला कॉलम है, और उपयोगकर्ता खाता है जो प्रक्रिया के तहत चलता है, वह दूसरा कॉलम है
मुझे लगता है कि सबसे छोटा तरीका है:
id -nu </proc/<pid>/loginuid
/proc/<pid>/loginuid
फ़ाइल प्रक्रिया करने वाले उपयोगकर्ता की यूआईडी नंबर है; id -nu
स्टड से uid पढ़ता है और एक उपयोगकर्ता नाम लौटाता है।