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é).

Floyd
la source
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.

Kusalananda
la source
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.

ctrl-alt-delor
la source
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.

Dasel
la source
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.

cooljay
la source