Процесс открывает tty, но "ps t tty" не видит его

474
pynexj

Смотрите следующий пример:

[STEP 101] # tty /dev/pts/3 [STEP 102] # ssh -f -n -N -D :7070 127.0.0.1 [STEP 103] # pgrep -lf 7070 33109 ssh [STEP 104] # ls -l /proc/33109/fd/ total 0 lrwx------ 1 root root 64 2016-11-08 10:45 0 -> /dev/pts/3 lrwx------ 1 root root 64 2016-11-08 10:45 1 -> /dev/pts/3 lrwx------ 1 root root 64 2016-11-08 10:45 2 -> /dev/pts/3 lrwx------ 1 root root 64 2016-11-08 10:45 3 -> socket:[3328390] lrwx------ 1 root root 64 2016-11-08 10:45 4 -> socket:[3328441] [STEP 105] # ps t pts/3 PID TTY STAT TIME COMMAND 33115 pts/3 R+ 0:00 ps t pts/3 66586 pts/3 Ss 0:08 /root/bin/bash [STEP 106] # 

На этапе 104 показано, что sshпроцесс открывается, pts/3но почему ps t pts/3команда на этапе 105 не может его увидеть?

1

1 ответ на вопрос

0
pynexj

Согласно psинструкции:

t ttylist Select by tty. Nearly identical to -t and --tty, but can also be used with an empty ttylist to indicate the terminal associated with ps. Using the T option is considered cleaner than using t with an empty ttylist. 

Здесь « выбор по tty » означает « выбор по управлению tty ». И ssh -fбудет работать в фоновом режиме как демон, который не имеет контрольного tty . Смотрите вывод шага 111 в следующем примере:

[STEP 107] # tty /dev/pts/28 [STEP 108] # ssh -D :7070 -f -n -N 127.0.0.1 [STEP 109] # pgrep -lf 7070 72531 ssh [STEP 110] # ls -l /proc/72531/fd total 0 lrwx------ 1 root root 64 2016-11-16 17:47 0 -> /dev/pts/28 lrwx------ 1 root root 64 2016-11-16 17:47 1 -> /dev/pts/28 lrwx------ 1 root root 64 2016-11-16 17:47 2 -> /dev/pts/28 lrwx------ 1 root root 64 2016-11-16 17:47 3 -> socket:[3572721] lrwx------ 1 root root 64 2016-11-16 17:47 4 -> socket:[3572770] [STEP 111] # ps p 72531 j PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 1 72531 72531 72531 ? -1 Ss 0 0:00 ssh -D :7070 -f -n -N 127.0.0.1 [STEP 112] # 

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