Почему я не вижу работу «wget», когда выполняю ее в фоновом режиме?

8

Я использую wgetкоманду в фоновом режиме, как это

wget -bq

и это печатает

Продолжая в фоновом режиме, pid 31754.

Но когда я набираю команду jobs, я не вижу свою работу (хотя загрузка еще не завершена).

флойд
источник
2
Вы можете увидеть это сps -p 31754
pLumo
Jjobsработает только для (этого) элемента управления заданием оболочки (а именно, для &аннотаций, ctrl-z или bgcommamd). Общий процесс листинга ( ps -aпокажет)
eckes

Ответы:

19

При использовании wgetс -bили --backgroundон ставит себя в фоновом режиме, отсоединяясь от текущей оболочки ( отщепляя дочерний процесс и завершая родительский ). Поскольку это не оболочка, которая помещает его в фоновый режим как асинхронное задание, оно не будет отображаться как задание при использовании jobs.

Чтобы запустить wgetв оболочке асинхронное (фоновое) задание, используйте

wget ... URL &

Если вы сделаете это, вы можете дополнительно перенаправить вывод в какой-либо файл (что wgetпроисходит автоматически с -b), или отменить его, перенаправив /dev/nullили используя -qили --quiet.

Кусалананда
источник
1
это разветвляет ребенка, и родительский выход
user2497
@ user2497 Да, смотрите обновленный ответ.
Кусалананда
6

Потому что это само по себе на заднем плане. Используйте, &чтобы сказать bash, чтобы поместить его в фоновый режим, и поместить его в список заданий bash.

Фон и список управления заданиями не совпадают. Bash помещает все свои фоновые процессы в свой контрольный список заданий (по умолчанию), но процессы могут быть задокументированы без внесения в список. Только Bash может поставить работу в своем списке.

Там могут быть преимущества для -bgварианта (я не знаю, что). Например ssh, опция background, переводит ее в фоновый режим после запроса пароля.

Ctrl-Alt-Делор
источник
3
Это -bq, то есть, -bи -qнет -bg.
Кусалананда
2

Процесс с pid 31754 существует; если вы печатаете, ps -e |grep 31754 но поскольку это не задание, которое можно снова переместить на передний план, оно не отображается командой заданий. wget -bqавтоматически отправлять вывод на фон без опций, чтобы снова переместить его на передний план.

Dasel
источник
psимеет -pопцию, которую можно использовать для запроса определенного PID, или можно использовать pgrep wget.
Кусалананда
0

Я обычно использую, tail wget-logчтобы увидеть последние несколько строк журнала, что дает мне представление о статусе загрузки.

cooljay
источник