У меня есть этот процесс экрана, который открывает мой последовательный порт:
$ 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 мы можем использовать историю для отслеживания команд, которые были запущены. Но как я могу подтвердить, что команда была запущена, чтобы отобразить то, что я сейчас вижу в моем сеансе экрана?
В вашем случае PID экрана равен 21200 (согласно команде screen -ls
). Так pstree 21200
будет делать. Точно так же htop
в режиме дерева (нажмите [F5]) также увидит дерево процессов.
Лучшим способом было бы strace
PID.
Например; сеансы экрана находятся в /var/run/screen/<screen session>
. Если вы ls
в этом каталоге, вы увидите PID сеанса.
Затем вы можете strace -p <pid>
использовать этот PID. Это не будет красиво, но это будет ближе всего.