GNU/Linux >> Tutoriales Linux >  >> Linux

Redirigir la salida del comando en la ventana acoplable

Solo un complemento, al usar docker-compose , también puedes probar:

command: bash -c "script_or_command > /path/to/log/command.log 2>&1"


Cuando especifica una lista JSON como CMD en un Dockerfile , no se ejecutará en un shell, por lo que las funciones habituales del shell, como la redirección stdout y stderr, no funcionarán.

De la documentación:

El formulario exec se analiza como una matriz JSON, lo que significa que debe usar comillas dobles (" ) alrededor de palabras sin comillas simples (' ).

A diferencia del formulario de shell, el formulario exec no invoca un shell de comandos. Esto significa que el procesamiento de shell normal no ocurre. Por ejemplo, CMD [ "echo", "$HOME" ] no hará sustitución de variables en $HOME . Si desea un procesamiento de shell, utilice el formulario de shell o ejecute un shell directamente, por ejemplo:CMD [ "sh", "-c", "echo", "$HOME" ] .

Lo que tu comando realmente hace es ejecutar tu index.py script y pasando las cadenas "1>server.log" y "2>server.log" como argumentos de la línea de comandos en ese script de Python .

Utilice uno de los siguientes en su lugar (ambos deberían funcionar):

  1. CMD "python index.py > server.log 2>&1"
  2. CMD ["/bin/sh", "-c", "python index.py > server.log 2>&1"]

Para usar docker run en una canalización de shell o bajo redirección de shell, haciendo run acepta stdin y salida a stdout y stderr apropiadamente, usa este conjuro:

docker run -i --log-driver=none -a stdin -a stdout -a stderr ...

p.ej. para ejecutar el alpine imagen y ejecute el comando UNIX cat en el entorno contenido:

echo "This was piped into docker" |
  docker run -i --log-driver=none -a stdin -a stdout -a stderr \
    alpine cat - |
  xargs echo This is coming out of docker: 

emite:

This is coming out of docker: This was piped into docker

Linux
  1. ¿Cómo eliminar las primeras/últimas líneas 'n' de la salida del comando en Shell?

  2. ¿Cuál es la diferencia de obtener salida de comando usando `command` y $(command) en Shell?

  3. ¿Cómo saber si la salida de un comando o script de Shell es Stdout o Stderr?

  4. Visualización de la salida completa del comando PS

  5. Convertir una salida a cadena

Comando fuente en Linux

Cómo ejecutar comandos de Shell a través del servidor HTTP

Ccat – Colorear la salida del comando Cat

Cómo redirigir la salida del comando de shell

Construcción de comandos

Explicación del comando fuente en Linux