
答え1
デフォルトでは、ps
現在の端末 (tty) に接続されているプロセスのみが表示されます。この場合、シェルとシェルps
自体 (両方ともpts/2
) が表示されます。 を表示するには、この制限を解除する必要がありますsleep
。たとえば、
ps -e
man ps
プロセスをフィルタリングするために使用できる多くのオプションについては、を参照してください。
答え2
問題は、2 番目のターミナルを作成して「ps」と入力すると、
sleep
プロセスが存在しないことです。
いくつかの(すべてではない)対話型シェルでは、sleep
例えば次のようにシェル組み込み関数を呼び出すことができます。睡眠(3)(cd
シェルの組み込み関数が呼び出すのと全く同じですディレクトリ変更(2))。
そうなると、sleep
プロセスなぜなら、何もないからです。睡眠(3)-ingはあなたのUnixシェル; 独自のシェルインタープリタを書くこともできます(サッシ簡単ですが、少しバグのある例です。
多くのLinuxシェルはオープンソースソフトウェア(またはフリーソフトウェア)、ソースコードを調べて、呼び出しているかどうかを確認してください。睡眠(3)または眠る(3)-あるいは適切に世論調査(2)など…- 参照時間(7)そして選択_tut(2)詳細はこちらシステムコール(2)そして、あなたのシェルによって行われたことを考えてください(またはそれらを観察してくださいstrace(1)またはltrace(1)またはデバッガー)。
多くのLinuxディストリビューションにはGNUバッシュ通常の対話型シェルとして。しかし、インストールすることもできます翻訳または魚またはesログインシェルとして(chsh(1))。
私の個人的な好みはzsh
(自動補完Debian の機能は優れています。
読んでみてください教科書についてオペレーティングシステム独自のコーディングUnixシェル練習として、または既存のものを拡張する(たとえば、sleep
組み込みがない場合は追加する)などです。