Xorg не отображается в ps aux?

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. Я верю (но не уверен), что это на самом делеexecs, и поэтому командная строка, которая и 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. Использованиеэтот ТАК ответ:

$ nm -D /usr/bin/X  | grep exec
                 U execv

Связанный контент