cómo encontrar un registro particular de un servidor para un momento determinado y registros zip solo para ese momento

cómo encontrar un registro particular de un servidor para un momento determinado y registros zip solo para ese momento

Tengo un comando para la pregunta anterior. ¿Alguien podría explicarme el siguiente comando?

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

Respuesta1

El guión al que te refieres no está nada bien escrito y es posible que no funcione como esperabas.

Aquí está el desglose de lo que está haciendo:

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

Almacene la fecha actual en FECHA en un formato como "10192016-171249". Consulte "fecha del hombre" para obtener más detalles. Esta, por cierto, no es la mejor manera de almacenar una fecha/hora. Se prefiere usar el formato AAAAMMDD para la parte de la fecha por motivos de referencia/clasificación rápida.

ls -lt *.log*

Esto obtiene una lista de directorios de todos los archivos que coinciden con el patrón "*.log*" en el directorio actual. Por ejemplo, podría 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 octubre"

Luego "extrae" sólo las líneas donde está presente "11 de octubre", lo que daría:

-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:

Luego extrae nuevamente sólo aquellos donde está presente "12:" o "13:" o "14": (nuevamente muy mal hecho ya que esto se aplica al campo de horas, pero también a los campos de minutos y 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 '{imprimir $9}'

De esas líneas restantes, extrae el noveno elemento (el nombre del archivo):

fontconfig.log

registros zip_ hostname_${FECHA}.zip $i

Usando un bucle "for" alrededor del comando anterior, cada uno de esos archivos se agrega a un archivo zip cuyo nombre es:

logs_`hostname`_${DATE}.zip

donde hostnameestá el nombre de su host y "${DATE}" es la FECHA almacenada anteriormente. Entonces, si su nombre de host es BLUERAY y usa la FECHA anterior, obtendrá un archivo llamado:

logs_BLUERAY_10192016-171249.zip

Nuevamente, este guión está muy mal escrito y ciertamente no deberías usarlo (ni ningún otro escrito por el mismo autor) para aprender a escribir guiones...

información relacionada