Est-il possible d'arrêter la sortie d'une commande après bg?

8

Supposons que cette situation

wget http://file 

wget commence à télécharger le fichier.

Je l'ai mis en arrière-plan.

^Z
bg

La commande passe en arrière-plan.

Mais sa sortie est toujours sur la console également - si la console est toujours ouverte.

Est-il possible d'arrêter la sortie de la commande?

Wget n'est qu'un exemple; pensez à une commande qui écrit beaucoup de sortie.

À la console, je sais qu'il est possible de faire bgpuis de fermer le terminal et d'en ouvrir un autre, mais que faire si je n'ai qu'un seul terminal disponible et aucun pseudo-terminal?

elbarna
la source
2
Découvrez comment modifier la redirection de sortie d'un processus en cours d'exécution . Vous pouvez essayer reptyr.
Mark Plotnick

Réponses:

2

Voici une solution qui redirige réellement la sortie d'une commande pendant son exécution: /superuser/732503/redirect-stdout-stderr-of-a-background-job-from-console-to-a- fichier journal

Pour une solution plus utilisable dans un scénario de tous les jours d'utilisation d'un terminal, vous pouvez wget -o log http://file & exécuter wgeten arrière-plan et écrire sa sortie à la logplace de votre terminal. Bien sûr, vous ne verrez aucune sortie dans ce cas (même si vous avez exécuté wgeten premier plan), mais vous pouvez tail -f logregarder la sortie à mesure qu'elle grandit.

PawkyPenguin
la source
2

Voulez-vous dire que vous souhaitez que wget (ou un autre cmd) fonctionne en arrière-plan sans générer de messages sur la console? Si telle est la question, vous pouvez essayerredirection

$ wget http://file > /dev/null

le cmd ci-dessus redirigera le stdoutvers /dev/nullet vous ne verrez pas les messages sauf les messages d'erreur. Si vous ne voulez pas non plus voir de messages d'erreur, essayez ceci

$ wget http://file 1>/dev/null 2>&1

Vous pouvez google redirectionpour des informations plus détaillées.

Charles
la source