プロセスがターミナルウィンドウから直接開始されるか、プログラムでサブプロセスとして開始されるかを決定します。

プロセスがターミナルウィンドウから直接開始されるか、プログラムでサブプロセスとして開始されるかを決定します。

ユーザーが端末でプロセスを実行しているかどうかはわかりますか?プログラムでプロセスを開始するのとは異なり、プログラムは端末で開始されます。

ユースケースは、端末で実行されている場合は次のとおりです。

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ですsleepgrep今始めましょう。

$ 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コマンドは端末で実行されます。

おすすめ記事