2016-07-08 2 views
0

最近、私はshellという名前のプロセスの一覧(または単一のプロセスの場合はpidを使用)を知る必要がある状況に悩まされました。私たちはそれを見つける方法がありますか(好ましくはpsgrepコマンドを使用してください)。linuxでプロセスを実行するために使用されたシェルを調べますか?

+4

です。問題のプロセスのPPIDが何であるかを確認し、プロセスを探してPPIDを取得し、シェルを見つけるまで続行する必要があります。 'pstree'も助けることができます – GMichael

+0

@GMichaelコードベースの再帰呼び出しではなく、他の解決策がありますか?私は、他の処理が必要であるため私に提供できるコマンドがあるので、できるだけ簡潔にしたいと思っています。 –

+0

@GautamSingh No. – 123

答えて

1

プロセスがシェルから起動されていることがわかっているので、プロセスIDがps、eを使用して取得できる親プロセスのコマンド名を見つけなければなりません。 g。 OUTPUT FORMAT CONTROLオプションoppidを使用してください。

for pid in ${list[*]}; do echo -n $pid:; ps p`ps p$pid hoppid` hocomm; done 
詳細
for pid in ${list[*]}; do …; done 

が順番に各要素(プロセスID)に可変pidセットとlistの各要素に対して一度だけ実行されるコマンド。 Looping Constructsを参照してください。

構造体${list[*]}は、listのすべての要素に展開されます。 listが(例えば、list="1234 5678"によって設定される)空白で区切られた要素を有する単純変数である場合、listは配列変数(例えばlist=(1234 5678)によって設定される)の場合に動作する。 Shell Parameter ExpansionおよびArraysを参照してください。

echo -n $pid: 

出力e。 g。 1234:改行がないため、次の出力は:のすぐ後に表示されます。 Bash Builtin Commandsを参照してください。

ps p$pid hoppid 

処理選択オプションp情報が、この場合$pidに、図示されるようにされている方法(群)を選択します。
出力修飾子hは、列見出しの印刷を抑止します。 g。 PPID
出力フォーマット制御オプションoは、psによって提供される情報を選択するために使用されます。この場合、親プロセスIDはppidです。私たちは、上記の1と非常に類似psコマンド、選択、選択した親とそのコマンド名で、この時間を得るように、(親プロセスIDです)

ps p`…` hocomm 

前のコマンドの出力は、バッククォートのコマンドを置き換えますcommによって出力されます。

Command Substitutionおよびps - report process statusを参照してください。

+0

あなたが提供したコマンドについて詳しく教えてもらえますか? PS:スクリプト作成はあまりよくありません。ありがとう! –

+0

@Gautam Singh:詳細を追加しました。 – Armali

関連する問題