web-dev-qa-db-fra.com

Comment exécuter un script Perl en arrière-plan

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 &

1
user1735921

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.

2
John1024

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)

0
Volker Siegel