为什么我在后台执行时看不到“wget”作业?

flo*_*oyd 10 command-line job-control wget background-process

wget像这样在后台使用命令

wget -bq
Run Code Online (Sandbox Code Playgroud)

它打印

在后台继续,pid 31754。

但是当我输入命令时jobs,我没有看到我的工作(虽然下载没有完成)。

Kus*_*nda 19

当使用wgetwith -bor 时,--background它通过与当前 shell 分离(通过分叉子进程并终止父进程)将自己置于后台。由于不是 shell 将其作为异步作业置于后台,因此当您使用.jobs

wget在 shell 中作为异步(后台)作业运行,请使用

wget ... URL &
Run Code Online (Sandbox Code Playgroud)

如果这样做,您可能还想将输出重定向到某个文件(wget使用 自动执行-b),或者通过重定向到/dev/null、 或使用-q或来丢弃它--quiet


ctr*_*lor 6

因为它把它自己放在了后台。使用&告诉bash把它放到后台,并把它变成工作bash的列表。

后台和作业控制列表不一样。Bash 将其所有后台进程放入其作业控制列表(默认情况下),但进程可以在后台运行而不放入列表中。只有 bash 可以将作业放入其列表中。

-bg选项可能有优势(我不知道是什么)。例如ssh的后台选项,在要求输入密码后将其置于后台。

  • 它是`-bq`,即`-b` 和`-q`,而不是`-bg`。 (3认同)