Isso responde claramente: link
Aqui, no meu caso, todos os processos filhos exibidos são threads e, portanto, não podem ser vistos em ps -ef
output, mas apenas pstree.
Duas questões:
pf -fU <user>
não mostrando processos específicos do usuário enquanto ps -ef | grep <user>
ou ps aux
pode.
pstree -p <pid>
, onde pid é aquele processo específico que mencionei acima, pode dar saída dos processos filhos, enquanto ps -ef | grep <childpid>
não mostra nenhum.
E esse comportamento estranho é visto apenas para processos relacionados a esse serviço sge específico que foi iniciado usando o comando service e não para qualquer outro processo.
[root@myserver ~]# ps -fU sgeadmin
UID PID PPID C STIME TTY TIME CMD
[root@myserver ~]# ps -ef | grep sgeadmin
sgeadmin 1754 1 0 Jan21 ? 00:16:36 /ge2011.11/bin/linux-x64/sge_execd
root 4097 3982 0 18:52 pts/0 00:00:00 grep sgeadmin
sgeadmin 27248 1 0 16:59 ? 00:00:03 /ge2011.11/bin/linux-x64/sge_qmaster
[root@myserver ~]# pstree -paA 27248
sge_qmaster,27248
|-{sge_qmaster},27255
|-{sge_qmaster},27256
|-{sge_qmaster},27257
|-{sge_qmaster},27258
|-{sge_qmaster},27263
|-{sge_qmaster},27264
|-{sge_qmaster},27265
|-{sge_qmaster},27266
|-{sge_qmaster},27267
|-{sge_qmaster},27268
|-{sge_qmaster},27269
'-{sge_qmaster},27289
[root@myserver ~]# ps -ef | grep -E '27255|27256|27257|27258|27263|27264|27265|27266|27267|27268|27269|27289'
root 4274 3982 0 18:53 pts/0 00:00:00 grep -E 27255|27256|27257|27258|27263|27264|27265|27266|27267|27268|27269|27289
[root@myserver ~]#
Então, tentei iniciar outros processos e está funcionando:
myserver @ /homes/sgeadmin : sleep 1000 &
[1] 4528
myserver @ /homes/sgeadmin : ps -fU sgeadmin
UID PID PPID C STIME TTY TIME CMD
sgeadmin 4482 4481 0 18:57 pts/0 00:00:00 -tcsh
sgeadmin 4528 4482 0 18:57 pts/0 00:00:00 sleep 1000
sgeadmin 4529 4482 0 18:57 pts/0 00:00:00 ps -fU sgeadmin
myserver @ /homes/sgeadmin : exit
logout
[root@myserver ~]# ps -fU sgeadmin
UID PID PPID C STIME TTY TIME CMD
sgeadmin 4528 1 0 18:57 pts/0 00:00:00 sleep 1000
[root@myserver ~]#
Editar 1:
Ok, ps -fu <username>
fornece resultado. Parece que a diferença está em id de usuário real e userid efetivo . Sim, root é o usuário real neste caso.
Mas alguma explicação para o segundo problema? pstree
mostrando os processos filhos enquanto ps -ef
não faz?
Editar 2:
Ok, é algo relacionado ao TGID.
Isso responde claramente: link
Aqui, no meu caso, todos os processos filhos exibidos são threads e, portanto, não podem ser vistos em ps -ef
output, mas apenas pstree.