Digamos que comienzo un proceso en la terminal y envía la salida al error estándar mientras se ejecuta. Quiero mover el proceso a un segundo plano y también silenciarlo al mismo tiempo.
¿Hay alguna manera de hacer esto sin detener el proceso e iniciarlo nuevamente usando &
y > /dev/null 2>&1
? Me pregunto si hay algún comando que se ejecute bg
y también pueda cambiar los descriptores de salida del proceso de destino.
fuente
SIGSTOP
a un proceso (o como se dice haciendo CTRL + Z ) no silenciar un proceso. Se detiene un proceso!El proceso que se ejecuta desde una terminal tiene sus stdin, stdout y stderr vinculados a la terminal y no puede hacer nada al respecto sin recuperar el control sobre esa terminal ... Normalmente. Pero hay algunas herramientas difíciles que realmente te permiten hacerlo. Echa un vistazo a este ejemplo . Y otros programas como los
retty
mencionados allí.fuente
No estoy de acuerdo con andcoz en que es demasiado tarde para silenciar la salida.
Suponiendo que el proceso se esté ejecutando en primer plano, úselo
Ctrl-Z
para suspender el proceso. Al hacerlo, se informará el número de trabajo y la ID del proceso. Puede continuar y mover el proceso a segundo plano utilizandobg %1
(para el trabajo n. ° 1). Aunque esto mueve el proceso a un segundo plano, no silencia la salida. Para silenciar la salida, puede usargdb
para redirigir toda la salida/dev/null
.Esto se ha descrito muy bien anteriormente en /programming/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764 .
fuente
Sin embargo, otra herramienta de línea de comandos es
detach
. La última versión admite escribir archivos pid, usar archivos para stdin, stdout y stderr, y ejecutarse en primer plano. (El sitio web dedetach
también analiza herramientas similares).http://inglorion.net/software/detach/
fuente