Xorg не обнаруживается в PS aux?

Выполнение ps aux на tty1 не перечисляет Xorg как процесс, но управляет как killall Xorg хорошо работать. Почему PS не перечисляет Xorg?

3
задан 24 June 2015 в 09:28

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
5
ответ дан 1 December 2019 в 15:37

Другие вопросы по тегам:

Похожие вопросы: