wgetこのようにバックグラウンドでコマンドを使用します
wget -bq
そしてそれは印刷します
バックグラウンドで継続中、pid 31754。
しかし、コマンドを入力するとjobs、ジョブが表示されません(ダウンロードは完了していません)。
Jjobs(this)シェルジョブコントロール(つまり、&注釈、ctrl-zまたはbgcommamd)に対してのみ機能します。一般的なプロセスのリスト(ps -a表示されます)
wgetこのようにバックグラウンドでコマンドを使用します
wget -bq
そしてそれは印刷します
バックグラウンドで継続中、pid 31754。
しかし、コマンドを入力するとjobs、ジョブが表示されません(ダウンロードは完了していません)。
Jjobs(this)シェルジョブコントロール(つまり、&注釈、ctrl-zまたはbgcommamd)に対してのみ機能します。一般的なプロセスのリスト(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