Je télécharge un fichier avec wget et je veux éteindre mon ordinateur une fois le téléchargement terminé, mais je dois aller quelque part maintenant :) Est-il possible d'exécuter la commande dans bash exactement lorsque le processus sera terminé?
Je sais que cela fonctionne:
wget http://example.com/file.rar; arrêter maintenant
Mais si je tape seulement:
wget http://example.com/file.rar
Réponses:
Vous pouvez faire quelque chose comme ça:
wait attendra tous les programmes exécutés en arrière-plan à partir du shell actuel - c'est-à-dire ce wget.
Une fois l'attente terminée, l'arrêt se poursuit.
la source
Dans un autre shell, utilisez
pour trouver le PID de la commande que vous souhaitez attendre, puis
afin que l'arrêt ne s'exécute pas tant que le processus n'est pas terminé. Voir aussi la réponse de depesz .
la source
wait
ne fonctionnera que pour les commandes démarrées à partir du même shellMes solutions sont les suivantes: suspendez votre tâche de longue durée avec Control + Z, puis tapez quelque chose comme:
Si vous souhaitez exécuter réagir différemment en fonction du succès ou de l'échec de votre commande, utilisez && et || en tant qu'opérateurs de court-circuit.
EDIT: Cela ne fonctionnera pas avec sudo, car il vous demandera votre mot de passe. J'ai donc supprimé les exemples en utilisant sudo. Si vous avez besoin de sudo pour la deuxième tâche, utilisez une autre des méthodes publiées ici.
D'un autre côté, je pense que GNOME et KDE offrent tous deux des moyens de déclencher un arrêt / redémarrage sans utiliser sudo, en envoyant un signal D-Bus approprié ou quelque chose du genre.
la source
fg
..., maissudo
pourrait être un problème s'il vous demande un mot de passeOui, tapez simplement votre deuxième commande et appuyez sur Entrée. Si votre programme actuel fait défiler du texte, vous ne pouvez pas voir ce que vous tapez correctement, alors surveillez vos touches afin de bien le faire.
Une manière plus intelligente consiste à passer à un autre TTY (CTRL + ALT + F1 à F6) et à exécuter la commande simultanément, ou si vous utilisez un programme en ligne de commande comme l'écran, vous pouvez créer une nouvelle fenêtre.
la source
Si vous voulez vous faire plaisir, vérifiez l'état de retour du wget et arrêtez-le uniquement s'il a réussi.
la source
wget
exécutions, vous ne recevez pas d'invite pour créer le test.