ターミナルセッションを開き、いくつかのプロセスを開始しました&
。ターミナルウィンドウを閉じようとすると、バックグラウンドでまだ実行中のタスクがあることを示す警告メッセージが表示されます。
実行中のプロセスを見ることができますが、ps
このセッションでどのプロセスが開始されたかをどうやって知ることができますか?
答え1
jobs -l
アクティブジョブのプロセスIDのリスト
答え2
bash
現在のセッションで開始されたすべてのバックグラウンドプロセスを見つけるには、jobs
組み込み機能を使用できますbash
。
からhelp jobs
:
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Display status of jobs. Lists the active jobs. JOBSPEC restricts output to that job. Without options, the status of all active jobs is displayed.
一方、bash
このセッションで開始されたすべてのプロセスを見つけるには、この$$
変数を使用bash
して現在のインスタンスのPIDを取得できますbash
。その後、コマンド出力を解析して、ps -ef
親プロセスID(PPID)が次のすべてのプロセスを見つけることができます$$
。
ps -ef | grep -P "^[^ ]+\s+[^ ]+\s+$$\s"
答え3
ps -auxf
バックグラウンドプロセスがどのシェルに属しているかを確認するには、実行してください。