Disons que je démarre un processus dans le terminal et qu'il envoie la sortie à l'erreur standard pendant qu'il s'exécute. Je veux déplacer le processus en arrière-plan et le faire taire en même temps.
Existe-t-il un moyen de le faire sans arrêter le processus et le redémarrer à l'aide de &
et > /dev/null 2>&1
? Je me demande s'il existe une commande qui exécute bg
et peut également modifier les descripteurs de sortie du processus cible.
la source
SIGSTOP
dans un processus (ou comme vous le dites en faisant CTRL + Z ) ne fait pas taire un processus. Ça arrête un processus!Le processus exécuté à partir d'un terminal a ses stdin, stdout et stderr liés au terminal et vous ne pouvez rien y faire sans reprendre le contrôle de ce terminal ... Normalement. Mais il existe des outils délicats qui vous permettent de le faire. Jetez un œil à cet exemple . Et d'autres programmes comme
retty
mentionné ici.la source
Je ne suis pas d'accord avec andcoz qu'il est trop tard pour faire taire la sortie.
En supposant que le processus s'exécute au premier plan, utilisez
Ctrl-Z
pour suspendre le processus. Cela signalera le numéro de tâche et l'ID de processus. Vous pouvez continuer et déplacer le processus en arrière-plan à l'aide debg %1
(pour le travail n ° 1). Bien que cela déplace le processus en arrière-plan, cela ne coupe pas le son de la sortie. Pour désactiver la sortie, vous pouvez utilisergdb
pour rediriger toutes les sorties vers/dev/null
.Cela a été très bien décrit précédemment sur /programming/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764 .
la source
Pourtant, un autre outil de ligne de commande est
detach
. La dernière version prend en charge l'écriture de fichiers pid, l'utilisation de fichiers pour stdin, stdout et stderr et l'exécution au premier plan. (Le site Web dedetach
traite également d'outils similaires.)http://inglorion.net/software/detach/
la source