
私はRedhat Linux 7を学んでいますが、トピックはLinuxプロセスの監視と管理であり、Processessとそのコマンドについて知っています。しかし、私は「制御タスク」とバックグラウンドでのタスクの実行、実際の背景とフォアグラウンドプロセスを理解していません。この用語を私たちに説明できますか?
答え1
対話型シェルで実行されるほとんどのコマンドは、次から実行されます。展望。これは、デフォルトでは、他のタスクを実行する前に実行中のコマンド(またはプロセス)が停止するのを待つ必要があることを意味します。長いまたは複雑なプログラムまたはスクリプトの場合、他のアプローチは次のように使用することです。背景。これは、長いプログラムの実行中に作業を続行できることを意味します。
&
コマンドの最後にあるアンパサンドはこれを行います。 Ctrl-Zを使用してフォアグラウンドコマンドを一時停止し、そのコマンドと共に背景に配置することもできますbg
。その後、これらのバックグラウンドタスク(jobs
コマンド)を管理および終了するなどのタスクを実行できます。
バックグラウンドコマンドは次のとおりです。いいえttyから切り離された:場合によっては、バックグラウンドコマンドはユーザー入力を待つことができます(ジョブをfg
フォアグラウンドに戻すコマンドを参照)。ターミナルセッションを終了すると(ターミナルを閉じる、ログアウト、シャットダウンするなど)、バックグラウンドジョブも終了することがあります(nohup
詳細については、参考資料を参照)。
答え2
簡単に言えば、
開始するすべてのプロセスはフォアグラウンドで実行されます。キーボードから入力を受け取り、画面に出力を送信します。
$ls ch*.doc
現在のディレクトリのすべてのファイルを一覧表示します。
キーボードに接続されず、バックグラウンドプロセスが実行されます。バックグラウンドプロセスにキーボード入力が必要な場合は待ちます。バックグラウンドでプロセスを実行すると、他のコマンドを実行できるという利点があります。他のコマンドを開始する前にプロセスが完了するのを待つ必要はありません。
バックグラウンドプロセスを開始する最も簡単な方法は、コマンドの最後にアンパサンド(&)を追加することです。
$ls ch*.doc &
以下は役に立ついくつかのリンクです。
https://stackoverflow.com/questions/8938058/Background-process-vs-foreground-process
http://linux.about.com/cs/linux101/a/multitasking.htm
https://stackoverflow.com/questions/6573249/difference-Between-foreground-job-and-Background-job
答え3
&
最後に、WindowsまたはMacで最小化されたアプリケーションを実行するのと同じように、バックグラウンドでプログラムを実行します。そのfg
コマンドを使用することは、デスクトップに戻すのと同じです。
ctrl+z
逆に、プログラム実行中に押すと実行が一時停止します。つまり、実行中のジョブの完了を停止してバックグラウンドに送信します。
また、これらのプログラムは現在セッションに関連付けられているため、端末を終了すると、バックグラウンドで実行中または一時停止したすべてのプログラムも終了します。