найти то, что работает на экранной сессии

У меня есть этот процесс экрана, который открывает мой последовательный порт:

$ sudo lsof | grep /dev/ttyS0
    screen    23520        root    6u      CHR               4,64         0t0       1421 /dev/ttyS0
$ cd /proc/23520
$ head -n 5 status
    Name:   screen
    State:  S (sleeping)
    Tgid:   23520
    Pid:    23520
$ screen -ls
    There is a screen on:
        21200.pts-1.porkypig    (07/10/2013 12:25:42 PM)    (Detached)
$ screen -r 21200.pts-1.porkypig

Когда я снова подключился к сеансу экрана, чтобы точно увидеть, что он делает. Я вижу этот длинный журнал информации. Это похоже на результат "tail -f", то есть вывод непрерывного журнала.

/proc/23520 $ cd cwd
 pwd
/proc/23520/cwd
ls -l
-rw-r--r--  1 root        root        2147 2013-10-07 17:55 minicom.log

Когда я переключаюсь в каталог (cwd), из которого был запущен этот процесс, я замечаю minicom.log, что заставляет меня подозревать, что пользователь запустил что-то вроде «tail -f minicom.log». 114]

Я знаю, что в Linux мы можем использовать историю для отслеживания команд, которые были запущены. Но как я могу подтвердить, что команда была запущена, чтобы отобразить то, что я сейчас вижу в моем сеансе экрана?

0
задан 10 October 2013 в 00:08

2 ответа

В вашем случае PID экрана равен 21200 (согласно команде screen -ls). Так pstree 21200 будет делать. Точно так же htop в режиме дерева (нажмите [F5]) также увидит дерево процессов.

0
ответ дан 10 October 2013 в 00:08

Лучшим способом было бы strace PID.

Например; сеансы экрана находятся в /var/run/screen/<screen session>. Если вы ls в этом каталоге, вы увидите PID сеанса.

Затем вы можете strace -p <pid> использовать этот PID. Это не будет красиво, но это будет ближе всего.

0
ответ дан 10 October 2013 в 00:08

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

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