GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizzamento dell'output del comando nella finestra mobile

Solo un complemento, quando si utilizza docker-compose , potresti anche provare:

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


Quando specifichi un elenco JSON come CMD in un Dockerfile , non verrà eseguito in una shell, quindi le normali funzioni della shell, come il reindirizzamento stdout e stderr, non funzioneranno.

Dalla documentazione:

Il formato exec viene analizzato come un array JSON, il che significa che devi usare le virgolette (" ) attorno a parole non virgolette singole (' ).

A differenza del modulo shell, il modulo exec non richiama una shell di comando. Ciò significa che la normale elaborazione della shell non avviene. Ad esempio, CMD [ "echo", "$HOME" ] non eseguirà la sostituzione delle variabili su $HOME . Se desideri l'elaborazione della shell, usa il modulo shell o esegui direttamente una shell, ad esempio:CMD [ "sh", "-c", "echo", "$HOME" ] .

Ciò che fa effettivamente il tuo comando è eseguire il tuo index.py script e passando le stringhe "1>server.log" e "2>server.log" come argomenti della riga di comando in quello script python .

Usa invece uno dei seguenti (entrambi dovrebbero funzionare):

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

Per utilizzare docker run in una pipeline della shell o sotto il reindirizzamento della shell, creando run accetta stdin e l'output su stdout e stderr in modo appropriato, usa questo incantesimo:

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

per esempio. per eseguire alpine image ed eseguire il comando UNIX cat nell'ambiente contenuto:

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: 

emette:

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

Linux
  1. Qual è la differenza nell'ottenere l'output del comando usando `command`e $(command) in Shell??

  2. Come sapere se l'output di un comando o di uno script di shell è Stdout o Stderr?

  3. Comprensione dell'output del comando "statistiche docker".

  4. Visualizzazione dell'output completo del comando PS

  5. Il reindirizzamento dell'output del comando a una variabile in bash non riesce

Comando sorgente in Linux

Come eseguire i comandi della shell tramite il server HTTP

Ccat:colora l'output del comando Cat

Come reindirizzare l'output del comando della shell

Shell dei comandi

Spiegazione del comando sorgente su Linux