Pourquoi ne puis-je pas voir le travail «wget» lorsque je l'exécute en arrière-plan?


8

J'utilise la wgetcommande en arrière-plan comme ceci

wget -bq

et il imprime

Continuant en arrière-plan, pid 31754.

Mais lorsque je tape la commande jobs, je ne vois pas mon travail (bien que le téléchargement ne soit pas terminé).


2
Vous pouvez le voir avecps -p 31754
pLumo

Jjobsne fonctionne que pour le contrôle de travail du shell (this) (à savoir &annotation, ctrl-z ou bgcommamd). Liste du processus général ( ps -al'affichera)
eckes

Réponses:


19

Lors de l' utilisation wgetavec -bou --backgroundil met lui-même en arrière - plan en dissociant de la coquille en cours ( par dédoublement off un processus enfant et se terminant le parent ). Comme ce n'est pas le shell qui le met en arrière-plan en tant que travail asynchrone, il n'apparaîtra pas comme un travail lorsque vous utilisez jobs.

Pour exécuter wgetun travail asynchrone (en arrière-plan) dans le shell, utilisez

wget ... URL &

Si vous faites cela, vous pouvez également rediriger la sortie vers un fichier (qui le wgetfait automatiquement avec -b), ou le supprimer en redirigeant vers /dev/null, ou utiliser -qou --quiet.


1
il bifurque un enfant et le parent quitte
user2497

@ user2497 Oui, voir la réponse mise à jour.
Kusalananda

6

Parce qu'il s'est mis en arrière-plan. Utilisez &pour dire à bash de le mettre en arrière-plan et de le mettre dans la liste des tâches de bash.

L'arrière-plan et la liste de contrôle des travaux ne sont pas identiques. Bash place tous ses processus d'arrière-plan dans sa liste de contrôle des travaux (par défaut), mais les processus peuvent être mis en arrière-plan sans être placés dans la liste. Seul bash peut mettre des jobs dans sa liste.

Il peut y avoir des avantages à l' -bgoption (je ne sais pas quoi). Par exemple ssh, l'option d'arrière-plan la place en arrière-plan après avoir demandé un mot de passe.


3
C'est -bq, c'est à dire -bet -qnon -bg.
Kusalananda

2

Le processus avec le pid 31754 existe; si vous tapez ps -e |grep 31754 mais comme ce n'est pas un travail qui peut être déplacé à nouveau au premier plan, il n'est pas affiché par la commande jobs. wget -bqenvoyer automatiquement la sortie à l'arrière-plan sans options pour la déplacer à nouveau au premier plan.


psa une -poption qui peut être utilisée pour interroger un PID spécifique, ou on peut utiliser pgrep wget.
Kusalananda

0

J'utilise habituellement tail wget-logpour voir les dernières lignes du journal me donnant ainsi une idée de l'état du téléchargement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.