Comment exécuter un processus en arrière-plan avec une sortie dans le fichier après certaines actions d'entrée / sortie de premier plan sur linux?

0

Je lance un processus et interagis avec celui-ci (quelques actions d'entrée) au premier plan, puis il fonctionne longtemps, aussi je le mets en bg et je me déconnecte. Je veux rediriger les messages d'erreur dans un fichier texte, tout en traitant en arrière-plan et je ne suis pas connecté à la machine. Comment puis-je implémenter cela?

UPD : J'ai besoin de rediriger la sortie alors que le processus est déjà en cours d'exécution, car initialement, j'ai besoin d'une sortie de console.

infm
la source
cmd 2>&1 > /path/to/file.log & cela redirigera stderr vers stdout et les deux vers un fichier. alors cela devient un processus en arrière-plan. avec fg vous pouvez ramener le processus au premier plan.
wkaha
@ user163258 mais au début, j'ai besoin de stdout pour console, et seulement après une interaction, je veux le rediriger avec stderror vers un fichier. Est-ce faisable? Ou puis-je diviser stdout et stderror et rediriger stderror vers un fichier?
infm
cmd 2> /path/to/file > /dev/null & devrait marcher
wkaha
@ user163258, ainsi que cmd 2 & gt; file.log ne fonctionnent pas pour moi, stdout est ajouté dans file.log également :(
infm

Réponses:

1

Vous pouvez démarrer le processus de manière interactive tout en redirigeant les messages d'erreur via

  my_program 2> output.txt

et vous pouvez maintenant attendre sa sortie, interagir avec elle, puis la mettre en arrière-plan, tout en conservant la redirection d'erreur standard.

MariusMatutiae
la source
mais que se passe-t-il si mon processus utilise la sortie de console standard avant que j'en ai besoin pour passer en arrière-plan?
infm
1
@infimum il n'y a pas de problème, vous redirigez uniquement l'erreur standard, pas la sortie standard.
MariusMatutiae
1

SSH dans, démarrez un processus, puis oubliez-le? Cela ressemble à un travail pour tmux ou écran . Vous pouvez laisser le processus en cours d'exécution, vous détacher de tmux et vous déconnecter sans le quitter.

Vous pouvez toujours rediriger l'erreur standard vers un fichier texte à l'aide de 2> log.txt lorsque vous exécutez votre commande, et même tail -f le fichier dans une autre fenêtre tmux.

SlightlyCuban
la source
0

Vous voulez commencer avec des messages d'erreur allant (non mis en mémoire tampon) dans le fichier texte, puis vous pouvez les regarder comme vous voulez (voir "tail -f"). En supposant un shell avec contrôle de travail, vous pouvez suspendre le travail en cours avec Ctrl-Z, puis "bg" pour le mettre en arrière-plan.

mpez0
la source