Определить отображение или сеанс VNC на основе PID

2

Я часто превращаю VNC в сервер, на котором мы запускаем много параллельных вычислительно-интенсивных процессов matlab. Иногда один из моих процессов ведет себя неправильно, что я вижу сверху, но мне трудно понять, на каком сеансе VNC он запущен или, более конкретно, на каком дисплее он работает.

Предположим, я вижу, что PID 8536 выглядит как боров ресурса, и я хочу исследовать. Поскольку это сеанс matlab, я знаю, что где-то может быть открыта IDE, и я хочу проверить, происходит ли что-то важное, прежде чем я его убью.

В прошлом мы несколько неловко решили эту проблему, идентифицировав, с чего был запущен PTY 8536, затем изучив дерево процессов, чтобы выяснить, что запускается в этом контексте, прокрутить вверх и увидеть инициализацию VNC.

Похоже, должен быть лучший способ получить PID - & gt; X Display (или VNC Session).

Daniel Kessler
источник

Ответы:

2

В файловой системе процесса есть файл с именем environment, который должен содержать переменные среды, которые установлены для любого заданного PID, включая переменную VNCDESKTOP, которая должна включать номер экрана того процесса, который обрабатывает родительский сеанс VNC.

Это должно отображать информацию:

awk -v 'RS=\0' -F = '$1=="VNCDESKTOP" {print $2}' /proc/$PID/environ
daenris
источник