Rediriger la sortie standard & stderr de processus d'arrière-plan
J'ai un script qui s'appelle toto qui exécute le programme a.exe et envoie le calendrier des statistiques dans un fichier, le temps.journal
#!/bin/bash
date 1>> time.log
(time ./a.exe) 2>> time.log
Cela fonctionne si je lance le script dans le fond de mon terminal et de garder ma coquille ouverte jusqu'a.exe finitions, mais si je lance le script en tâche de fond et à la sortie de mon terminal (a.exe prend du temps pour s'exécuter)
foo &
exit
quand je reviens, a.exe a exécuté, mais les statistiques de temps n'apparaissent pas dans mon fichier de log. Personne ne sait pourquoi il en est? Est-il un moyen pour obtenir le calendrier des statistiques après j'ai fermé la mère de shell?
grâce
OriginalL'auteur frankscup | 2010-11-28
Vous devez vous connecter pour publier un commentaire.
Lorsque vous sortez de votre coquille, il envoie un signal SIGHUP à tous les processus enfants, qui, par défaut, les tue. Si vous souhaitez un processus à poursuivre l'exécution, même lorsque le parent shell existe, alors vous devez l'avoir ignorer le signal SIGHUP.
OriginalL'auteur John Kugelman
Puisque la question est étiqueté comme
bash
ainsi, je citeman bash
C'est pratique quand vous avez commencé un travail, mais j'ai oublié de le préfixer avec
nohup
. Il suffit de neOriginalL'auteur dennycrane
N'oubliez pas de supprimer toutes les références à l'ats/pts, 0</dev/null supprime le stdin de référence.
OriginalL'auteur Rahly
Votre a.exe obtient lorsque vous fermez le parent shell.
Vous pourriez type d'écran, exécutez la commande comme d'habitude et quitter l'écran. Cela permet de maintenir le processus de tués lorsque le parent shell est quitte. Cette méthode est un peu fastidieux, mais peut être utile dans d'autres situations.
John a donné une bien meilleure réponse à usage nohup.
screen
outmux
. Ces programmes vous donner beaucoup plus de souplesse dans la gestion des travaux et de gestion de la fenêtre.OriginalL'auteur harithski
Essayer:
OriginalL'auteur khachik