ls
以下は、bashを入力して実行した後に何が起こるかを示す図です。
ls
最初の部分は、実行前の状況を示しています。吹く端末エミュレータのサブプロセスです。xtermそしてそれらを取り巻くオーラと環境も同じだ。これダブルXマークは両方Xtermそして吹くこれは、親プロセスと子プロセスの環境変数のセットが同じであるためです。
2番目の部分は、新しいプロセス(lsなど)を開始した後に何が起こるかを示しています。
- Bashは独自の正確なコピーである子プロセスを作成するので、名前を付けました。bash_c(Bash_copyの略語)
- 次に、bash_cls プロセスに置き換えられます。
私はこの図が簡単で説明が不要で直感的で曖昧ではないと思います。
しかし、ダイアグラムがどのように見えるかわからないので、まだダイアグラムを描いておらず、(ls)
それがどのように見えるかを理解するためのいくつかの異なるシナリオがありますが、始めるべき質問の一部は次のとおりです。図はどのように見えますか(ls)
?絵を描いてコメントしてください。
答え1
forのプロセス階層はforと(ls)
同じですが、コマンドリストを角かっこ内に入れると、bashはサブシェルを起動し、そのサブシェルでコマンドを実行します。結果のプロセス階層は次のとおりです(2つのlsプロセスが順次実行されます)。ls
→ bash → ls
(ls; ls)
→ bash → bash → ls
(cat; cat)
ls:代わりに引数なしでcatを使用すると、それを視覚化できます。最初のcatプロセスは入力を待ち、他の端末pstree
またはtop
他の端末を使用して何が起こっているかを確認する機会を提供します。