Một quá trình ẩn, nó là gì?


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

Có ai nói cho tôi biết đó là gì không?


lsmột bí danh cho một cái gì đó? không /bin/ls -1 | grep 2266cư xử theo cùng một cách?
Frederik Deweerdt

Câu trả lời:


12

Đây có thể là một chủ đề. Trong Linux, các luồng có ID tiến trình khác với các luồng khác trong quy trình. Khi bạn nhìn vào cột PID ps, bạn thực sự đang xem ID nhóm luồng (TGID), phổ biến trong số tất cả các luồng trong một quy trình. Điều này là vì lý do lịch sử do cách các luồng phát triển trong Linux.

Ví dụ: trên hệ thống của tôi, crom có ​​một số luồng trong một quy trình (nhiều quá trình cũng vậy):

$ 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 ...

Cột thứ hai là TGID (mặc dù nó được dán nhãn là PID) và cột thứ tư là LWP (quy trình trọng lượng nhẹ).

$ 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

Bạn có thể thấy quá trình 10929 không xuất hiện /proc, nhưng bạn có thể cdthực hiện nó. Nếu bạn nhìn vào statustệp, bạn sẽ thấy rằng đó là một phần của "quy trình" (nhóm luồng) 10927 và từ đầu ra ở trên, quy trình đó sẽ xuất hiện /proc.


1
BTW: ps … | grep …dòng của bạn sẽ không thực sự in ra tiêu đề ... Tôi ước grep có một tùy chọn để luôn in dòng đầu tiên! Tôi nghĩ rằng tôi sẽ hỏi một câu hỏi về điều đó.
derobert

... thực ra, nó đã được hỏi: unix.stackexchange.com/questions/47918/iêu
derobert

@derobert: Tôi biết. Tôi đã thêm nó sau khi tôi cảm thấy nó hữu ích. Tôi tự hỏi sẽ mất bao lâu trước khi ai đó chỉ ra điều đó. Bạn đã nhanh chóng :)
camh

Thật vậy, khá hữu ích. Tôi đề nghị sử dụng lệnh sed cuối cùng từ câu hỏi tôi đã đăng thay thế. Điều đó thực sự in dòng tiêu đề ... Và là một giải pháp tốt đẹp!
derobert

Tôi sẽ sử dụng các quy ước biên tập và đặt đầu ra không theo nghĩa đen trong ngoặc đơn để không nhầm lẫn điểm này.
camh

3

Đó là một chủ đề apache.

Bạn có thể nói từ đây:

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

Tài liệu nhân Linux cho hệ thống tập tin Proc dường như không giải thích được tại sao ID luồng là một thư mục nhưng bị ẩn khỏi ls.

Tuy nhiên, các chủ đề được nhìn thấy trong /proc/<pid>/task/<threadid>.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.