wget
このようにバックグラウンドでコマンドを使用します
wget -bq
そしてそれは印刷します
バックグラウンドで継続中、pid 31754。
しかし、コマンドを入力するとjobs
、ジョブが表示されません(ダウンロードは完了していません)。
Jjobs
(this)シェルジョブコントロール(つまり、&
注釈、ctrl-zまたはbg
commamd)に対してのみ機能します。一般的なプロセスのリスト(ps -a
表示されます)
wget
このようにバックグラウンドでコマンドを使用します
wget -bq
そしてそれは印刷します
バックグラウンドで継続中、pid 31754。
しかし、コマンドを入力するとjobs
、ジョブが表示されません(ダウンロードは完了していません)。
Jjobs
(this)シェルジョブコントロール(つまり、&
注釈、ctrl-zまたはbg
commamd)に対してのみ機能します。一般的なプロセスのリスト(ps -a
表示されます)
回答:
使用する場合wget
と-b
、または--background
それが入れ自体を現在のシェルから解離することにより背景に(子プロセスをオフフォークと親を終了します)。非同期ジョブとしてバックグラウンドに配置するのはシェルではないため、を使用してもジョブとして表示されませんjobs
。
wget
シェルで非同期(バックグラウンド)ジョブとして実行するには、次を使用します。
wget ... URL &
これを行う場合は、出力をいくつかのファイルにリダイレクトするか(これwget
はで自動的に行われます-b
)、またはにリダイレクトして破棄/dev/null
する-q
か、またはを使用します--quiet
。
自分を背景に置いているからです。&
バックグラウンドに配置するようにbashに指示し、bashのジョブリストに配置するために使用します。
背景とジョブ制御リストは同じではありません。Bashはすべてのバックグラウンドプロセスをジョブコントロールリストに配置します(デフォルト)が、プロセスをリストに入れずにバックグラウンドで実行できます。リストにジョブを入れることができるのはbashだけです。
-bg
オプションには利点があるかもしれません(私にはわかりません)。たとえばssh
のbackgroundオプションは、パスワードを要求した後、それをバックグラウンドに置きます。
-bq
、つまり-b
、そして-q
ではありません-bg
。
ps -p 31754