端末でまだ実行中のプロセスを見つける方法は?


12

Gnomeターミナルでタブを閉じようとすると、次のように表示されます。

このターミナルを閉じますか?この端末ではまだプロセスが実行されています。ターミナルを閉じると強制終了します。

まだ何が実行されているかを知るにはどうすればよいですか?の出力には何もないことに注意してくださいjobs。ありがとう。


1
このメッセージが表示されているときにシェルプロンプトが表示されている場合、おそらくこれはネストされたシェルです(ターミナルエミュレーターによって直接開始されたシェルではありません)。たぶん、あなたは始めましたscreentmuxscriptsshmcおよびパネルをオフにし、あるいは単に別例えば次のように入力して、シェルbash、またはこれらの線に沿って何か。Ctrl + Dを押すか、タイプexitしてシェルを終了すると、最終的な場所が表示されます。
egmont

ありがとう。以降exit、gnomeターミナルのタブが閉じません。
Tim

1
1秒でexitおそらく閉じます。@egmont、これを回答に移動できますか。
Videonauth 2016年

回答:


12
ps T

端末に関連付けられているすべてのプロセスを選択します。


良いですが、少しだまされるかもしれません。nohupコマンドを介して生成されたプロセスはターミナルから切断されるため、その終了をブロックしないでください。しかし、それらはまだこのコマンドでリストされています。
Sergiy Kolodyazhnyy

またはそのことについてはちょうどps
user10089632

1

シェルのPIDを親としてリストするプロセスでピークを取ることができます。ご存じかもしれませんが、ps形式を指定できます

SHELLPID=$$ ; ps -e  -o cmd,pid,ppid | awk -v shell=$SHELLPID  '$NF~shell'   

ここでは、特殊変数からシェルのPIDを取得する$$SHELLPID、パイプのサブシェルにはawkで使用することができ、。基本的には、プロセスをNAME、PID、Parent PIDの形式で一覧表示し、最後の列に適切なPIDがあるプロセスのみを除外します。


1

ターミナル(geditなど)でいくつかのプロセスを開始した場合、この2つのプロセスのプロセスID(PID)(bashの)と親プロセスID(PPID)(geditの)は同じになります。これはの出力で見ることができます

ps -ef

コマンド。読みやすくするために、まず出力を「パイプ」して、grep現在実行中のすべての「bash」プロセスのPIDを見つけてから、もう一度「パイプ」してみましょうawkawk選択のみPIDとプロセス名フィールド(フィールド2及び8)と画面に出力します。

ps -ef | grep bash | awk '{print $2 ": " $8}'

出力の番号はPIDです。これを使用して、そのPIDを持つ端末で開始されたプロセスを見つけます。複数の端末を開いている場合は、複数の出力行が存在する可能性があることに注意してください。次に、そのターミナルセッションの「子」プロセス(存在する場合)を見つけるために、次のコマンドを使用できます。

ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'

最後のコマンドでEnterPIDの代わりにPID番号を入力する必要があります。「bash」のPIDが複数ある場合は、それらすべてを試す必要があります。

最後のコマンドps -efは、PID(前のコマンドで見つけたもの)とPPIDがどのプロセスでも同じであるかどうかの出力を調べて検索するだけです。

より詳しい情報:

男ps

男awk


-1

使用できますhtop。Ubuntu 16.04以降では、と入力するだけでインストールできますsudo apt-get install htop

も使用できますtop


そして、現在のターミナルでプロセスをどのように特定しますhtopか?
muru、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.