Os redirecionadores do Linux não registram erros. O Linux tem o equivalente ao Windows 2 e 1?

0

Eu corro o seguinte arquivo com o redirecionador > log.log e ele não captura erros.

#!/bin/bash

echo ************************BEGIN LOG******************************
date +"%m/%d/%Y %H:%M:%S $HOSTNAME"
cp -f /scripts/original/clamscans.log /scripts
find /public/public/clamscans/. -exec grep -n FOUND /dev/null {} \;>>clamscans.log
mail [email protected] < clamscans.log
tar cvf dailyresults.tar /public/public/clamscans/*.txt
gzip -f dailyresults.tar
mv -f /public/public/clamscans/*.txt /scripts/lastnite
echo end log entry

Os seguintes erros aparecem quando eu corro do arquivo da janela do terminal, mas eles não são gravados em log.log :

tar: /public/public/clamscans/*.txt: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
mv: cannot stat '/public/public/clamscans/*.txt': No such file or directory

O que estou fazendo de errado? Eu sei que com o Windows você pode adicionar o 2>&1 para capturar dados de erro. Existe tal coisa para o Linux?

    
por Flotsam N. Jetsam 24.09.2010 / 19:05

2 respostas

3

O descritor de arquivo 1 é stdout, 2 é stderr. Isso se aplica ao Linux e ao Windows. Com "> logfile", você está redirecionando o stdout para o arquivo "logfile", mas o que você realmente quer é redirecionar o stderr. Isso pode ser feito com "2 > nome_do_arquivo" ou "2 > & 1" (em combinação com "> logfile") no Windows e no Linux, mas observe que o pedido pode ser significativo, por isso deve ser "comando & gt ; logfile 2 > & 1 "e não o contrário.

    
por 24.09.2010 / 19:12
1

Você pode redirecionar o erro padrão para um arquivo como este:

mycommand 2> error.log

e você pode usar a seguinte sintaxe para redirecionar a saída padrão e o erro padrão para um arquivo:

mycommand &> file

ou

mycommand > file-name 2>&1
    
por 24.09.2010 / 19:10