กระบวนการที่ซ่อนอยู่มันคืออะไร?


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

Cound ใครบอกฉันว่ามันคืออะไร?


เป็นlsนามแฝงสำหรับบางสิ่งบางอย่าง? ไม่/bin/ls -1 | grep 2266ทำงานในลักษณะเดียวกันได้หรือไม่
Frederik Deweerdt

คำตอบ:


12

นี่น่าจะเป็นเธรด ใน Linux เธรดมี ID กระบวนการแตกต่างจากเธรดอื่นในกระบวนการ เมื่อคุณดูคอลัมน์ PID psคุณจะเห็น ID กลุ่มเธรด (TGID) ซึ่งเป็นเรื่องปกติในทุกเธรดในกระบวนการ นี่คือเหตุผลทางประวัติศาสตร์เนื่องจากการพัฒนาของเธรดใน Linux

ตัวอย่างเช่นในระบบของฉัน Chromium มีจำนวนเธรดในกระบวนการ (หลายกระบวนการด้วย):

$ 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

เอกสารเคอร์เนลลินุกซ์สำหรับระบบแฟ้ม proc เห็นได้ชัดไม่ได้อธิบายว่าทำไม ID ด้ายเป็นไดเรกทอรี lsแต่ซ่อนจาก

/proc/<pid>/task/<threadid>แต่หัวข้อจะเห็นใน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.