Un processus caché, qu'est-ce que c'est?

11
[root@datacenteronline ~]# ssh [email protected]
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

Est-ce que quelqu'un peut me dire ce que c'est?

truease.com
la source
est lsun alias pour quelque chose? ne /bin/ls -1 | grep 2266se comportent de la même façon?
Frederik Deweerdt

Réponses:

12

Il s'agit probablement d'un fil. Sous Linux, les threads ont un ID de processus différent des autres threads du processus. Lorsque vous regardez la colonne PID dans ps, vous regardez en fait l'ID de groupe de threads (TGID), qui est commun à tous les threads d'un processus. C'est pour des raisons historiques en raison de l'évolution des threads sous Linux.

Par exemple, sur mon système, le chrome a un certain nombre de threads dans un processus (plusieurs processus également):

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

La deuxième colonne est le TGID (bien qu'elle soit étiquetée comme PID) et la quatrième colonne est LWP (processus léger).

$ 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

Vous pouvez voir que le processus 10929 n'apparaît pas /proc, mais vous pouvez le cdfaire. Si vous regardez dans le statusfichier, vous verrez qu'il fait partie du "processus" (groupe de threads) 10927, et à partir de la sortie ci-dessus, ce processus apparaît dans /proc.

camh
la source
1
BTW: votre ps … | grep …ligne n'imprimera pas réellement l'en-tête ... J'aimerais que grep ait la possibilité d'imprimer toujours la première ligne! Je pense que je vais poser une question à ce sujet.
derobert
... en fait, on lui a déjà demandé: unix.stackexchange.com/questions/47918/…
derobert
@derobert: Je sais. Je l'ai ajouté plus tard car je pensais que c'était utile. Je me demandais combien de temps il faudrait avant que quelqu'un me le signale. Vous avez été rapide :)
camh
En effet, assez utile. Je suggère d'utiliser cette commande sed finale de la question que j'ai postée à la place. Cela imprime en fait la ligne d'en-tête ... Et c'est une bonne solution!
derobert
Je vais utiliser des conventions éditoriales et mettre la sortie non littérale entre crochets, afin de ne pas confondre le point.
camh
3

C'est un fil Apache.

Vous pouvez en déduire:

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

La documentation du noyau Linux pour le système de fichiers proc n'explique apparemment pas pourquoi l'ID de thread est un répertoire mais caché ls.

Cependant, les fils sont visibles dans /proc/<pid>/task/<threadid>.

bahamat
la source