答え1
表示されたグラフィックはjobs
コマンドの出力です(フォントは実際の端末から出ることができないため、印刷用に記録されています)。
forever
(無限ループが必要で、sleep 10
100%CPU使用率を避けるために挿入が必要です)というスクリプトがあるとします。
次に、すべてシェルで実行される6つのタスクを開始しますforever
。その他シェルウィンドウ。一度に1つのフォアグラウンドコマンドしか持てないため、タスク2を開始する前にタスク1を一時停止する必要がある式です。
すべての作業状態は、kill
プロセス番号に送信(使用)するさまざまなSIGコードに関連付けられています。ジョブ番号は最初のシェルにのみ関連し、2番目のシェルからシグナルを送信する必要があるため、プロセス番号を取得する必要があります。定期的に使用すると役に立ちpstree $PPID
ます。
タスク3はバックグラウンドにあり、残りの5つのタスクは外部に表示されないため、フォアグラウンドタスクはなく、シェルプロンプトが再表示されます。ここでコマンドを実行しjobs
て出力を取得できます。
表示タスク&
3がバックグラウンドで開始される。これは、-
.
+
シェルから出力されるジョブ状態情報です。
編集:Bashではこれを行うことはできません。私はこれがBashがプロセスの終了状態を要求する前に積極的に収集する方法に関連していると思います。後で別のシェルを試してみましょう。