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