web-dev-qa-db-ja.com

どのプロセスが特定の疑似端末pts / Xを占有していますか?

Linuxの場合:通常、疑似端末は次々に割り当てられます。

今日、ラップトップを再起動した後でも、最初に開いたターミナルウィンドウ(以前は常にpts/0でした)が突然pts/5になったことに気付きました。

これは奇妙で、私は興味をそそられました。どのプロセスがデバイス/dev/pts/0を占有しているかを知りたいのですが、コメントで示唆されているように、wholsof、さらにはpsなどの一般的なツールを使用できませんでした。 :

pf@pfmaster-P170EM:pts/6 /var/log 1115> ps auxww | grep pts/0 
pf        7042  0.0  0.0  17208   964 pts/6    S+   12:32   0:00 grep --color=auto pts/0

私がここで欠けているものは何ですか?ルーキーに感染している可能性がありますか?

7
pefu

fuser がインストールされていて、Sudoを使用する権限がある場合:

for i in $(Sudo fuser /dev/pts/0); do
    ps -o pid= -o command= -p $i
done

例えば:

24622 /usr/bin/python /usr/bin/terminator
24633 ksh93 -o vi
4
jlliagre

私はついに、どのプロセスが疑似端末を占めるかを理解するための非常に醜い方法を見つけましたpts/0

スーパーユーザーとして私はcd /procそして次のbashコマンドを入力しました:

for pid in [0-9]* ; do  \
    RES=`ls -l $pid/fd/* 2>/dev/null| grep pts/0`; \
    if [ -n "$RES" ]; then echo "Process $pid owns: $RES"; fi; \
done

このようにして、私の場合はpts/0はプロセスによって占有されていました/usr/sbin/bumblebeed

1
pefu