J'ai écrit deux scripts shell a.sh
et b.sh
. In a.sh
et b.sh
j'ai une boucle for infinie et ils impriment une sortie sur le terminal. Je veux écrire un autre script qui appelle à la fois a.sh
et b.sh
mais je veux que l'utilisateur reprenne immédiatement le contrôle du terminal, au lieu que le script s'exécute à l'infini et je veux masquer la sortie dans le terminal.
linux
scripting
sh
background-process
Behnam Safari
la source
la source
nohup /path/to/your/script.sh parameter1 > & 1 &
Si quelqu'un connaît un meilleur moyen./dev/null 2>&1
si vous l'utiliseznohup
car il ajoute automatiquement tous les flux STDOUT et STDERR au fichier nohup.out. Utilisez juste:nohup /path/to/your/command &
-bash: syntax error near unexpected token '&'
Redirigez la sortie vers un fichier comme celui-ci:
Cela redirigera à la fois stdout et stderr vers le même fichier. Si vous souhaitez rediriger stdout et stderr vers deux fichiers différents, utilisez ceci:
Vous pouvez utiliser
/dev/null
comme un ou les deux fichiers si vous ne vous souciez pas de stdout et / ou stderr.Voir la page de manuel bash pour plus de détails sur les redirections.
la source
Désolé, c'est un peu tard mais j'ai trouvé la solution idéale pour les commandes somple où vous ne voulez pas de sortie standard ou d'erreur (crédit là où c'est dû: http://felixmilea.com/2014/12/running-bash-commands-background -correctement / )
Cela redirige la sortie vers null et garde l'écran clair:
la source
S'ils sont dans le même répertoire que votre script qui contient:
La
&
fin est ce qui fait que votre script s'exécute en arrière-plan.La
> /dev/null 2>&1
partie n'est pas nécessaire - elle redirige les flux stdout et stderr pour que vous n'ayez pas à les voir sur le terminal, ce que vous voudrez peut-être faire pour les scripts bruyants avec beaucoup de sortie.la source
Exécutez dans un sous-shell pour supprimer les notifications et fermer STDOUT et STDERR:
la source
[1] + 54765 done <emacs>
remerciementSi vous souhaitez exécuter le script dans un kickstart Linux, vous devez exécuter comme ci-dessous.
la source
la source
-x
quoi?Ces exemples fonctionnent bien:
nohup sh prog.sh proglog.log 2> & 1 &
Pour la boucle, vous pouvez utiliser comme ceci:
pour i dans {1..10}; do sh prog.sh; dormir 1; terminé prog.log 2> & 1 &
Il fonctionne en arrière-plan et n'affiche aucune sortie.
la source