ユーザーが端末でプロセスを実行しているかどうかはわかりますか?プログラムでプロセスを開始するのとは異なり、プログラムは端末で開始されます。
ユースケースは、端末で実行されている場合は次のとおりです。
suman:
suman:
suman:
しかし、他のプログラムxによって実行され、xがstdout / stderrの前に何かを追加すると、次のようになります。
x: suman:
x: suman:
しかし、私はこれを検出して次のようになりたいと思います。
x:
x:
x:
ベストアンサー1
問題のあるプロセスの親プロセスID(PPID)を表示し、PPIDを使用して、そのプロセスがシェルで実行されているのか、他のプログラムで実行されているのかを確認できます。
たとえば、プロセスが実行されている内容を確認するには、sleep
そのPPIDを照会します。
$ ps -ef | grep "sleep"
user 2470 1996 0 06:30 pts/1 00:00:00 sleep 60
PID 1996はプロセスのPPIDですsleep
。grep
今始めましょう。
$ ps -ef | grep 1996
user 1996 1995 0 05:57 pts/1 00:00:00 bash
PID 1996はプロセスbash
をよく表すシェルです。sleep
可能端末で実行してください。さらに一歩進むには、grep
プロセスのPPIDを取得できますbash
。
$ ps -ef | grep 1995
user 1995 448 0 05:57 tty1 00:00:00 /usr/bin/urxvt
プロセスのPPIDは仮想端末bash
です。urxvt
したがって、sleep
コマンドは端末で実行されます。