GNU/Linux >> Tutoriales Linux >  >> Linux

Gestión eficaz de las zonas horarias de Linux (tutorial paso a paso)

El cronometraje en las computadoras es esencial por muchas razones, y deletrear cada una puede tomar un día. Pero bromas aparte, si está buscando una administración eficaz de las zonas horarias de Linux, ha venido al lugar correcto.

En este tutorial, explorará y aprenderá cómo puede trabajar con fechas, horas y marcas de tiempo en Linux. Algunos están imprimiendo la fecha y hora actual, calculando fechas pasadas y futuras, trabajando con zonas horarias y más.

¡Sigue leyendo y domina el cronometraje como un profesional!

Requisitos

Este tutorial comprende demostraciones prácticas. Para seguir, necesitará lo siguiente:

  • Una máquina Linux:este tutorial usa Ubuntu 20.04, pero cualquier distribución moderna de Linux funcionará.
  • Un editor de texto:si no tiene un editor de texto preferido, puede usar nano, que está instalado de forma predeterminada en la mayoría de las distribuciones de Linux.

Imprimiendo la Fecha y Hora Actual con el date Comando

La lista de razones para el cronometraje continúa, según las necesidades de su proyecto. Pero las razones más comunes están a continuación:

  • Los registros del sistema usan marcas de tiempo para catalogar cuándo ocurrieron los eventos.
  • Los lanzamientos de software a menudo están vinculados a fechas específicas.
  • Las herramientas de seguridad de la red utilizan análisis basados ​​en el tiempo para detectar anomalías.
  • Los usuarios confían en la hora precisa para programar citas y reuniones.

Por cualquiera de estas razones, lo primero que puede querer hacer es imprimir la fecha y hora actual. Y en Linux, puede realizar esta tarea con los comandos date y awk. Pero para empezar, primero ejecutará el comando de fecha.

Ejecute el date Comando a continuación sin parámetros para imprimir la fecha y hora actuales.

date

Como puede ver a continuación, la salida del comando, de forma predeterminada, incluye lo siguiente:

  • El día de la semana (viernes )
  • El día numérico del mes (10 )
  • El nombre del mes en formato largo (viernes ), y el año.
  • La fecha va seguida del tiempo completo actual en formato de 24 horas y la zona horaria.

Ahora, ejecute el siguiente comando para ver todas las opciones disponibles que puede usar junto con el date comando.

date --help

Impresión de la fecha actual en diferentes formatos

Ha visto que el comando de fecha por sí solo imprime la fecha y la hora actuales en formato completo. Pero, por lo general, tendrá que cambiar el formato según sus necesidades.

La buena noticia es que el comando de fecha te permite imprimir la fecha y la hora del sistema en diferentes formatos; esta función te permite obtener mejores imágenes de la fecha y la hora actuales.

1. Ejecute el siguiente comando para imprimir la fecha actual solo en formato numérico (%D).

date "+DATE: %D”

Quizás prefiera ver la zona horaria junto con la fecha. En ese caso, agregue la opción %Z, como en el siguiente comando:fecha “+FECHA:%D %Z”

2. A continuación, ejecute el siguiente comando para imprimir la fecha actual en el formato MMM AAAA. La opción %b imprime el mes abreviado (noviembre, diciembre, enero...), mientras que la opción %Y imprime el año actual.

date "+DATE: %b %Y"

3. Ahora, ejecute el siguiente comando para imprimir la fecha como mes largo (noviembre, diciembre...) (%B), DD (%d), AAAA (%Y).

También puede encadenar varias opciones para formatear la salida exactamente como lo desea.

date "+DATE: %B %d,%Y"

4. Por último, ejecute el mismo comando en el paso tres. Pero esta vez, agregue las opciones %I:%M %p para imprimir la hora actual.

date "+DATE: %B %d,%Y %I:%M %p"

Cálculo e impresión de fechas futuras y pasadas

En la vida real, es posible que desee calcular una fecha que está en el futuro. ¿Por qué? Tal vez esté escribiendo un script para realizar tareas automáticamente en una fecha específica. Si es así, calcular fechas futuras usando el --date La opción será útil.

1. Ejecute el siguiente comando para calcular la fecha 40 días a partir de la fecha actual. Puede cambiar los días a semanas, meses, años, etc., como desee.

date --date='40 days'

A continuación, puede ver la fecha y la hora completas calculadas 40 días después de la fecha actual.

2. A continuación, ejecute el mismo comando que hizo en el paso uno. Pero esta vez, agregue opciones ("+%B %d,%Y %I:%M %p") para cambiar el formato de salida.

date --date='40 days' "+%B %d,%Y %I:%M %p"

3. Ahora, ejecute el siguiente comando, especificando un número negativo para calcular fechas en el pasado. El siguiente comando calcula la fecha de hace un año a partir de la fecha actual.

date --date='-1 year’

El siguiente resultado muestra la fecha de un año en el pasado en formato predeterminado completo. Pero si desea cambiar el formato, puede aplicar el mismo formato que hizo en el paso dos.

4. Ahora, ejecute el siguiente comando, usando una combinación de unidades (semanas y días) con la opción de fecha. El siguiente comando calcula la fecha de hace dos semanas y cuatro días a partir de la fecha actual.

date --date='-2 weeks -4 days’

5. Por último, ejecute el siguiente comando para calcular la fecha del próximo martes.

También puede usar otros formatos de fecha además del formato numérico para el --date opción. Por ejemplo, puede usar nombres de meses completos, como Tuesday , o formatos de tiempo relativo como tomorrow , next , last ., etc.

date --date='next Tuesday'

Impresión de fechas incrementales con un script Bash

La impresión de fechas actuales, pasadas y futuras funciona bien con el comando de fecha. Pero, ¿sabía que también puede escribir un script Bash para trabajar con zonas horarias, fechas y horas? Por ejemplo, incrementando la fecha por día, semana o mes.

Incrementar las fechas es útil cuando se trabaja con trabajos cron que deben ejecutarse diariamente, semanalmente o mensualmente.

1. Cree un script Bash llamado date2022.sh con tu editor preferido.

2. Agregue el siguiente código al archivo date2022.sh, s guarde el archivo y cierre el editor.

El siguiente código imprime la fecha de cada día de la semana, comenzando con la fecha de hoy y terminando con la fecha del lunes siguiente.

DATE=2022-05-30

for i in {0..6}
do
   NEXT_DATE=$(date +%m-%d-%Y -d "$DATE + $i day")
   echo "$NEXT_DATE"
done

3. Finalmente, ejecute el siguiente comando bash para ejecutar el script date2022.sh

bash date2022.sh

Impresión de la fecha y la hora actuales con la herramienta GNU Awk CLI

Hasta ahora, has visto cómo imprimir fechas y horas en diferentes formatos con el date comando, que es lo suficientemente bueno. Pero tener más formas de manipular la fecha y la hora, ya sea en el sistema real o en un archivo, siempre es mejor.

¿Cuál es la otra manera? La herramienta GNU Awk CLI. Awk es una poderosa herramienta de procesamiento de texto que se puede utilizar para una amplia gama de tareas. Estas tareas pueden ser, entre otras, extraer datos de archivos de registro y manipular y analizar datos de texto.

Pero antes de que pueda usar la herramienta GNU Awk CLI, primero deberá instalarla en su máquina:

1. Ejecute el siguiente comando de actualización apt para actualizar el índice de paquetes de su sistema.

apt update -y

2. A continuación, ejecute el siguiente comando apt install para instalar la herramienta GNU Awk CLI.

apt install gawk -y

3. Una vez instalado, ejecute el gawk comando a print el día de la semana (%A ), mes (%B ), fecha actual numérica (%d ), y año (%Y ) donde las siguientes funciones:

  • El strftime La función formatea la fecha y la hora.
  • La función systime devuelve la hora actual del sistema en segundos desde la Época.
gawk 'BEGIN { print strftime("Today is %A, %B %d, %Y.", systime()) }'

Observe cómo awk le permite formatear la salida de una manera legible por humanos.

4. Por último, ejecute el siguiente comando para calcular e imprimir la fecha de hace un mes. El siguiente comando usa el comando de fecha con un número negativo (-1) para obtener el primer día del mes anterior.

awk -v previous_month="$(date -d "`date +%Y%m01` -1 month" +%Y-%m-%d)" '{print previous_month}'

Convertir formato de fecha en un archivo

Quizás tenga un archivo que contenga fechas en un formato incompatible con su configuración regional actual. O las fechas en el archivo no son lo suficientemente claras para ser leídas por humanos. Si es así, considere usar la herramienta GNU Awk CLI.

Cree un archivo con su editor de texto preferido e ingrese las siguientes líneas en el archivo donde el formato de fecha no está claro. Proporcione al archivo el nombre que desee, pero el archivo CSV se llama test.csv en este ejemplo.

1,ABC,SSS,20-OCT-16,4,1,0,5,0,0,0,0
2,DEF,AAA,20-JUL-16,4,1,0,5,0,0,0,0

Ahora, ejecute el siguiente comando awk para extraer y convertir el formato de fecha a un formato más legible por humanos de YY-MM-DD. La opción -F establece el separador de campo como una coma o un guión, y el comando imprime (printf) la fecha en el formato deseado.

awk -F'[,-]' '{ printf "%s|20%02d-%02d-%02d,%s\\n", $3, $6, (match("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",$5)+2)/3, $4, $10 }' test.csv

Como puede ver a continuación, el formato de fecha ahora es mucho más claro.

Ha visto que awk es una herramienta poderosa que puede realizar una amplia gama de tareas, como comparar la fecha, agregar un campo de fecha a un archivo, clasificar las fechas, etc. Pero eso va más allá del alcance de este artículo.

Comprobación de la zona horaria mediante el grep Comando

Verificar la zona horaria actual no debería ser un impuesto complejo, y el comando grep garantiza que esta afirmación se mantenga cierta. El comando grep es otra poderosa herramienta de procesamiento de texto que puede usar para una amplia variedad de tareas.

Algunas tareas que admite el comando grep son la extracción de datos de archivos de registro y la manipulación y el análisis de datos de texto. Con estas funciones, también puede verificar su zona horaria actual con el comando grep.

Ejecute el siguiente comando timedatectl solo para imprimir la fecha actual, la hora, la zona horaria y el estado del servicio NTP en su máquina.

timedatectl

Como puede ver a continuación, la salida muestra un puñado de información sobre la fecha, la hora y la zona horaria actuales. Esta información le permite verificar que la zona horaria correcta esté configurada en su máquina, lo que también ayuda a garantizar que no tenga problemas con la sincronización horaria en su red.

Tal vez desee consultar la lista de zonas horarias antes de explorar más sobre el comando grep. Si es así, ejecute el siguiente comando:timedatectl list-timezones

Ahora, ejecute el siguiente comando conectado al comando grep si planea verificar la zona horaria actual de su máquina para realizar lo siguiente:

  • Obtener la información de fecha, hora y zona horaria del archivo del kernel de Linux (timedatectl ).
  • Buscar e imprimir líneas de texto que coincidan con el Time zone patrón de texto.
timedatectl | grep “Time zone”

Como puede ver a continuación, la salida solo muestra la zona horaria actual configurada en su máquina.

Conclusión

Este tutorial lo guió a través de muchos ejemplos prácticos de consulta de fecha, hora y zonas horarias de Linux. Has aprendido a manipular el formato de fecha y hora, calcular fechas pasadas y futuras con el date dominio. También ejecutó timedatectl y grep Comandos para verificar la zona horaria de su sistema.

Ahora, ¿por qué no escribir más scripts para automatizar tareas como calcular fechas pasadas y futuras o convertir formatos de fecha? ¿O tal vez crear trabajos cron para programar la ejecución de sus scripts?


Linux
  1. 8 comandos de Linux para una gestión de procesos eficaz

  2. Tutorial de Kali Linux Burp Suite

  3. Cómo verificar la zona horaria en Linux

  4. 8 ejemplos de comandos de fecha rápida en Linux

  5. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

Comando Cal en Linux

Gestión de particiones de Linux

7 ejemplos de comando de fecha en Linux

Comandos de gestión de grupos en Linux

Tutorial paso a paso de secuencias de comandos de Shell

Ejemplos de comandos de fecha de Linux