como encontrar um log específico de um servidor por um tempo específico e zip logs somente nesse período

-1

Eu tenho um comando para a pergunta acima. Alguém poderia me explicar o comando abaixo?

DATE=`date +%m%d%Y-%H%M%S` ; for i in `ls -lt *.log* | grep "Oct 11" | grep -E '12:|13:|14:' | awk '{print $9}'`; do zip logs_`hostname`_${DATE}.zip $i; done
Smitha
fonte

Respostas:

0

O script ao qual você está se referindo não está bem escrito e pode não funcionar como o esperado.

Aqui está o detalhamento do que está fazendo:

DATE =date +%m%d%Y-%H%M%S

Armazene a data atual em DATE em um formato como "10192016-171249". Consulte a "data do homem" para obter detalhes. A propósito, essa não é a melhor maneira de armazenar uma data / hora. O uso do formato AAAAMMDD para a parte da data é muito preferido por razões de referência / classificação rápidas.

ls -lt * .log *

Isso obtém uma lista de diretórios de todos os arquivos que correspondem ao padrão "* .log *" no diretório atual. Por exemplo, poderia ser algo como:

-rw-r--r-- 1 root root  174106 Sep 30 17:28 dpkg.log.1
-rw-r--r-- 1 root root    1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm   272254 Oct 11 11:28 kern.log.4.gz
-rw-r----- 1 root adm   272254 Oct 11 17:14 kernXX.log.1.gz
-rw-r----- 1 root adm      414 Sep 29 18:09 user.log.4.gz
-rw-r--r-- 1 root root     209 Sep 26 14:18 chipsee_clone.log
-rw-r--r-- 1 root root    1333 Apr  9  2015 pm-powersave.log.1

grep "11 de outubro"

Em seguida, "extrai" apenas as linhas em que "11 de outubro" está presente, o que daria:

-rw-r--r-- 1 root root    1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm   272254 Oct 11 11:28 kern.log.4.gz
-rw-r----- 1 root adm   272254 Oct 11 17:14 kernXX.log.1.gz

grep -E '12: | 13: | 14:

Em seguida, extrai novamente apenas aqueles em que "12:" ou "13:" ou "14" estão presentes: (novamente, muito mal feito, pois isso aplica o campo de horas, mas também aos campos de minutos e segundos)

-rw-r--r-- 1 root root    1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm   272254 Oct 11 17:14 kernXX.log.1.gz

awk '{print $ 9}'

A partir dessas linhas restantes, ele extrai o 9º elemento (o nome do arquivo):

fontconfig.log

zip logs_ hostname_ $ {DATE} .zip $ i

Usando um loop "for" em torno do comando acima, cada um desses arquivos é adicionado a um arquivo zip cujo nome é:

logs_`hostname`_${DATE}.zip

onde hostnameé o nome do seu host e "$ {DATE}" é o DATE armazenado anteriormente. Portanto, se o seu nome de host for BLUERAY e usando a DATA acima, você obterá um arquivo chamado:

logs_BLUERAY_10192016-171249.zip

Novamente, esse script é muito mal escrito e você certamente não deve usá-lo (ou qualquer outro escrito pelo mesmo autor) para aprender a escrever scripts ...

user277209
fonte