Je suis un nouvel utilisateur d'ubuntu ...
Mettre & et à la fin, c'est mettre l’application en arrière-plan, mais pas vraiment, cela me donne quand même le résultat du script Perl dans ma ligne de commande même s’il s’exécute en arrière-plan. Cela devient donc inutile, car je dois attendre que le script complet soit terminé.
Comme :
output of Perl..
..
..
Done.
Il me reste donc encore à attendre que le script Perl soit exécuté. Existe-t-il un moyen d'exécuter ce type de scripts en arrière-plan pour que je n'ai pas à attendre?
J'ai déjà essayé de suivre:
command > test.txt //This generated emptyfile test.txt and all the output is still on command line instead of test.txt
command > /dev/null
command < /dev/null
Aucun d'entre eux n'a réussi.
Ne suggérez pas d'ouvrir la nouvelle console de ligne de commande en faisant CTRL + SHIFT + T ou CTRL + ALT + T parce que je ne veux pas le faire, je veux exécuter le script Perl en arrière-plan tout en effectuant un travail.
Pour les autres scripts Perl, cela fonctionne bien, mais pour celui-ci, n’est-il pas possible?
edit: Vous avez la solution grâce à John1024 et à Volker Siegel.
commande 2>/dev/null &
Les commandes peuvent produire une sortie sur stdout ou stderr. Les commandes que vous avez essayées redirigent uniquement stdout. Sous bash
, vous pouvez rediriger la sortie des deux flux simultanément en utilisant:
command &>test.txt &
Ou
command &>/dev/null &
Si vous utilisez un shell POSIX, vous devez effectuer la redirection par étapes:
command >test.txt 2>&1 &
>test.txt
redirige stdout vers le fichier test.txt
. Étant donné que stderr est le descripteur de fichier 2
, l'effet de 2>&1
consiste à rediriger stderr vers l'emplacement où stdout, noté &1
, est en cours.
On dirait que la sortie est dirigée vers le flux d’erreurs, stderr - alors redirigez-le plutôt que stdout:
command 2> errors.txt
Ou redirigez les deux ensemble vers le même fichier:
command > errors.txt 2>&1
Si vous voulez tout savoir - "sautez dans le trou du lapin" - voir tutoriel de redirection illustré
Voir aussi Nohup
- utile si vous souhaitez conserver la commande en cours après la fermeture du terminal:
Nohup command
(man Nohup
pour plus de détails)