Xorg не появляется в PS Aux?

Дела ps aux на tty1 не перечисляет Xorg как процесс, но такие команды как killall Xorg отлично работает Почему ps не перечисляет Xorg?

1 ответ

Решение

Командная строка процесса на самом деле показывает Xне 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

Что интересно, pgrep Xorg возвращает тот же процесс:

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

И еще интереснее, расширяясь pgrepкритерий поиска не работает:

$ pgrep Xorg -fa
$

Это потому что X (/usr/bin/X ) это обертка, которая вызываетXorg, Я верю (но не уверен) это на самом делеexecс, и так из командной строки, что к чему ps показывает, остается неизменным и программа теперь другая. Это можно проверить, изучив процесс /proc каталог:

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

Вот почему pgrep Xorg а также killall Xorg работать, но pgrep -f Xorg не удалось. pgrep -f ищет командные строки, которые все еще показывают Xне Xorg, Таким образом, действие, которое обычно должно давать лучшие результаты, на самом деле имеет худшие результаты.


Действительно, похоже X делает exec, Используя этот SO ответ:

$ nm -D /usr/bin/X  | grep exec
                 U execv
Другие вопросы по тегам