एक छिपी हुई प्रक्रिया, यह क्या है?


11
[root@datacenteronline ~]# ssh root@192.168.1.172
Last login: Wed Apr 17 09:55:45 2013 from 192.168.1.187
[root@localhost ~]# ls /proc/ | grep 2266
[root@localhost ~]# cd /proc/2266
[root@localhost 2266]# ls
attr             cpuset   limits      net            root       statm
autogroup        cwd      loginuid    numa_maps      sched      status
auxv             environ  maps        oom_adj        schedstat  syscall
cgroup           exe      mem         oom_score      sessionid  task
clear_refs       fd       mountinfo   oom_score_adj  smaps      wchan
cmdline          fdinfo   mounts      pagemap        stack
coredump_filter  io       mountstats  personality    stat
[root@localhost 2266]# ls -al /proc/2266
total 0
dr-xr-xr-x   7 apache apache 0 Apr 17 09:45 .
dr-xr-xr-x 266 root   root   0 Apr 17 09:11 ..
dr-xr-xr-x   2 apache apache 0 Apr 17 09:45 attr
-rw-r--r--   1 root   root   0 Apr 17 09:45 autogroup
-r--------   1 root   root   0 Apr 17 09:45 auxv
-r--r--r--   1 root   root   0 Apr 17 09:45 cgroup
--w-------   1 root   root   0 Apr 17 09:45 clear_refs
-r--r--r--   1 root   root   0 Apr 17 09:45 cmdline
-rw-r--r--   1 root   root   0 Apr 17 09:45 coredump_filter
-r--r--r--   1 root   root   0 Apr 17 09:45 cpuset
lrwxrwxrwx   1 root   root   0 Apr 17 09:45 cwd -> /
-r--------   1 root   root   0 Apr 17 09:45 environ
lrwxrwxrwx   1 root   root   0 Apr 17 09:45 exe -> /usr/local/apache2/bin/httpd
dr-x------   2 root   root   0 Apr 17 09:45 fd
dr-x------   2 root   root   0 Apr 17 09:45 fdinfo
-r--------   1 root   root   0 Apr 17 09:45 io
-rw-------   1 root   root   0 Apr 17 09:45 limits
-rw-r--r--   1 root   root   0 Apr 17 09:45 loginuid
-r--r--r--   1 root   root   0 Apr 17 09:45 maps
-rw-------   1 root   root   0 Apr 17 09:45 mem
-r--r--r--   1 root   root   0 Apr 17 09:45 mountinfo
-r--r--r--   1 root   root   0 Apr 17 09:45 mounts
-r--------   1 root   root   0 Apr 17 09:45 mountstats
dr-xr-xr-x   6 apache apache 0 Apr 17 09:45 net
-r--r--r--   1 root   root   0 Apr 17 09:45 numa_maps
-rw-r--r--   1 root   root   0 Apr 17 09:45 oom_adj
-r--r--r--   1 root   root   0 Apr 17 09:45 oom_score
-rw-r--r--   1 root   root   0 Apr 17 09:45 oom_score_adj
-r--r--r--   1 root   root   0 Apr 17 09:45 pagemap
-r--r--r--   1 root   root   0 Apr 17 09:45 personality
lrwxrwxrwx   1 root   root   0 Apr 17 09:45 root -> /
-rw-r--r--   1 root   root   0 Apr 17 09:45 sched
-r--r--r--   1 root   root   0 Apr 17 09:45 schedstat
-r--r--r--   1 root   root   0 Apr 17 09:45 sessionid
-r--r--r--   1 root   root   0 Apr 17 09:45 smaps
-r--r--r--   1 root   root   0 Apr 17 09:45 stack
-r--r--r--   1 root   root   0 Apr 17 09:45 stat
-r--r--r--   1 root   root   0 Apr 17 09:45 statm
-r--r--r--   1 root   root   0 Apr 17 09:45 status
-r--r--r--   1 root   root   0 Apr 17 09:45 syscall
dr-xr-xr-x  29 apache apache 0 Apr 17 09:45 task
-r--r--r--   1 root   root   0 Apr 17 09:45 wchan

किसी ने मुझे बताया कि यह क्या है?


है lsकुछ के लिए एक उपनाम? /bin/ls -1 | grep 2266उसी तरह व्यवहार करता है ?
फ्रेडरिक डेविर्ड टीटी

जवाबों:


12

यह एक धागा होने की संभावना है। लिनक्स में, थ्रेड्स प्रक्रिया में अन्य थ्रेड्स के लिए एक अलग प्रक्रिया आईडी है। जब आप पीआईडी ​​कॉलम को देखते हैं ps, तो आप वास्तव में थ्रेड ग्रुप आईडी (टीजीआईडी) देख रहे हैं, जो एक प्रक्रिया में सभी थ्रेड्स के बीच आम है। यह ऐतिहासिक कारणों से है जिस तरह से लिनक्स में धागे विकसित हुए हैं।

उदाहरण के लिए, मेरे सिस्टम पर, क्रोमियम में एक प्रक्रिया में कई थ्रेड होते हैं (कई प्रक्रियाएं भी):

$ ps -efL | grep chromium
[UID       PID  PPID   LWP  C NLWP STIME TTY          TIME CMD]
[...]
camh     10927  5182 10927  0    4 11:07 ?        00:00:00 /usr/lib/chromium/chromium ...
camh     10927  5182 10929  0    4 11:07 ?        00:00:00 /usr/lib/chromium/chromium ...
camh     10927  5182 10930  0    4 11:07 ?        00:00:00 /usr/lib/chromium/chromium ...
camh     10927  5182 10933  0    4 11:07 ?        00:00:00 /usr/lib/chromium/chromium ...

दूसरा कॉलम TGID है (हालाँकि इसे PID के रूप में लेबल किया गया है) और अगला कॉलम LWP (लाइट-वेट प्रोसेस) है।

$ ls /proc | grep 10927
10927
$ ls /proc | grep 10929
$ cd /proc/10929
$ head -n 5 status
Name:   Chrome_ChildIOT
State:  S (sleeping)
Tgid:   10927
Pid:    10929
PPid:   5182

आप देख सकते हैं कि यह प्रक्रिया 10929 में दिखाई नहीं देती है /proc, लेकिन आप cdइसे कर सकते हैं। यदि आप statusफ़ाइल में देखते हैं, तो आप देखेंगे कि यह "प्रक्रिया" (थ्रेड समूह) 10927 का हिस्सा है, और ऊपर दिए गए आउटपुट से, यह प्रक्रिया दिखाई नहीं देती है /proc


1
BTW: आपकी ps … | grep …लाइन वास्तव में हेडर को प्रिंट नहीं करेगी ... काश grep के पास हमेशा पहली लाइन प्रिंट करने का विकल्प होता! मुझे लगता है कि मैं इस बारे में एक सवाल पूछूंगा।
derobert

... वास्तव में, यह पहले से ही कहा है की गई: unix.stackexchange.com/questions/47918/...
derobert

@derobert: मुझे पता है। मैंने इसे बाद में जोड़ा क्योंकि मुझे लगा कि यह उपयोगी है। मैंने सोचा कि इससे पहले कि कोई इसे इंगित करता है कि यह कितना लंबा होगा। आप जल्दी थे :)
camh

वास्तव में, काफी उपयोगी है। मैं उस प्रश्न से उस अंतिम sed कमांड का उपयोग करने का सुझाव देता हूं, जिसके बजाय मैंने पोस्ट किया था। यह वास्तव में हेडर लाइन को प्रिंट करता है ... और एक अच्छा समाधान है!
derobert

मैं संपादकीय सम्मेलनों का उपयोग करूँगा और गैर-शाब्दिक आउटपुट कोष्ठक में रखूँगा, ताकि बिंदु को भ्रमित न किया जा सके।
camh

3

यह एक अपाचे धागा है।

आप इससे बता सकते हैं:

lrwxrwxrwx   1 root   root   0 Apr 17 09:45 exe -> /usr/local/apache2/bin/httpd

खरीद फ़ाइल सिस्टम के लिए लिनक्स कर्नेल प्रलेखन स्पष्ट रूप से यह नहीं समझाता है कि थ्रेड आईडी एक निर्देशिका क्यों है, लेकिन इससे छिपा हुआ है ls

हालांकि, धागे में देखा जाता है /proc/<pid>/task/<threadid>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.