Crontab Redirecionamento Triplo

1

Eu tenho um entendimento muito básico de redirecionamentos, mas eu me deparei com um cronjob com redirecionamentos que eu não entendo.

00 19 * * 1-5 /apps/app/scripts/doit.sh a np cron > /apps/app/scripts/doit.log > /dev/null 2>&1

Eu vejo três redirecionamentos. Eu ia escrever meu melhor palpite aqui, mas não posso formar uma imagem completa. Eu agradeceria se alguém me ajudasse a entender nos termos STDOUT e STDERR.

Meu shell é ksh:

:> ps -p $$
  PID TTY          TIME CMD
23947 pts/0    00:00:00 ksh
    
por Rip Leeb 26.12.2013 / 20:42

1 resposta

5

Existem 2 redirecionamentos lá. O último bit, 2>&1 está realmente mesclando STDERR com STDOUT. Isso me parece que alguém configurou isso para registrar a saída para o arquivo doit.log , mas depois desejou desativá-lo.

Encadear redirecionamentos dessa maneira, basicamente nega os anteriores, de modo que somente a saída, se houver alguma, será direcionada para o último arquivo redirecionado.

Exemplo

$ echo "string" > 1.txt > 2.txt 2>&1

Resultando nestes arquivos:

$ ls -l 1.txt 2.txt
-rw-rw-r--. 1 saml saml 0 Dec 26 15:12 1.txt
-rw-rw-r--. 1 saml saml 7 Dec 26 15:12 2.txt

$ more 1.txt 2.txt 
::::::::::::::
1.txt
::::::::::::::
::::::::::::::
2.txt
::::::::::::::
string

Então, como você pode ver o arquivo 1.txt está vazio, e toda a saída foi direcionada para o último arquivo, 2.txt .

Então, por que isso acontece?

Como mencionei, meu palpite seria um syadmin ou qualquer um que mantivesse isso, começou a coletar a saída para doit.log inicialmente, mas depois que as coisas estavam estabilizadas, ou o doit.log era extra que elas não precisavam mais; eles adicionaram um > /dev/null para acalmar a saída do cron.

    
por 26.12.2013 / 21:16