我wget
在后台使用命令是这样的
wget -bq
它打印
继续在后台运行,pid 31754。
但是当我输入命令时jobs
,我没有看到我的作业(尽管下载尚未完成)。
答案1
wget
当与-b
or--background
一起使用时本身通过与当前 shell 解除关联进入后台(通过分叉子进程并终止父进程)。由于不是 shell 将其作为异步作业置于后台,因此当您使用 时,它不会显示为作业jobs
。
要wget
在 shell 中作为异步(后台)作业运行,请使用
wget ... URL &
如果这样做,您可能还想将输出重定向到某个文件(使用wget
会自动执行-b
),或者通过重定向到/dev/null
、 或使用-q
或来丢弃它--quiet
。
答案2
因为它把自己放在了后台。用于&
告诉 bash 将其放入后台,并将其放入 bash 的作业列表中。
背景和作业控制列表不一样。 Bash 将其所有后台进程放入其作业控制列表(默认情况下),但进程可以在不放入列表的情况下进行后台处理。只有 bash 可以将作业放入其列表中。
该选项可能有优点-bg
(我不知道是什么)。例如ssh
的后台选项,要求输入密码后将其置于后台。
答案3
pid 31754的进程存在;如果您键入ps -e |grep 31754
但由于它不是可以再次移动到前台的作业,则 jobs 命令不会显示它。wget -bq
自动将输出发送到后台,无需选择再次将其移至前台。
答案4
我通常会tail wget-log
查看日志的最后几行,从而了解下载的状态。