O Xorg não aparece em ps aux?

3

Fazer ps aux em tty1 não lista o Xorg como um processo, mas comandos como killall Xorg funcionam bem. Por que o ps não lista o Xorg?

    
por user10607 24.06.2015 / 08:28

1 resposta

5

A linha de comando do processo realmente mostra X , não Xorg :

$ ps aux | grep -w X
muru     14702  0.0  0.0  15940   956 pts/6    S+   12:33   0:00 grep -w X
root     30664  1.9  1.6 690024 136632 tty7    Ssl+ Jun16 215:33 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
$ pgrep X -a
30664 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

Curiosamente, pgrep Xorg retorna o mesmo processo:

$ pgrep Xorg -a
30664 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

E ainda mais interessante, os expandindo pgrep dos critérios de pesquisa não funcionam:

$ pgrep Xorg -fa
$

Isso ocorre porque X ( /usr/bin/X ) é um wrapper que chama Xorg . Eu acredito (mas não tenho certeza) que realmente exec s, e então a linha de comando, que é o queps % mostra, permanece inalterado e o programa agora é diferente. Isso pode ser verificado ao examinar o processo ' /proc directory:

$ sudo ls -l /proc/30664/exe 
lrwxrwxrwx 1 root root 0 Jun 24 08:09 /proc/30664/exe -> /usr/bin/Xorg

É por isso que pgrep Xorg e killall Xorg funcionam, mas pgrep -f Xorg falhou. pgrep -f pesquisa as linhas de comando, que ainda mostram X , não Xorg . Portanto, uma ação que geralmente deve retornar melhores resultados, na verdade, tem resultados piores.

De fato, parece que X faz exec . Usando essa resposta do SO :

$ nm -D /usr/bin/X  | grep exec
                 U execv
    
por muru 24.06.2015 / 09:16

Tags