Crear Trabajos de Cron Más Avanzados
Ahora que comprendes los conceptos básicos, creemos un trabajo de cron más avanzado que registre información del sistema.
Vamos a crear un trabajo de cron que registre información sobre el uso de memoria del sistema cada hora. Este tipo de monitoreo puede ser útil para seguir el rendimiento del sistema a lo largo del tiempo.
Primero, creemos un script de shell que recopile la información de memoria:
nano ~/project/memory_check.sh
En el editor nano, agrega el siguiente contenido:
#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt
Este script hará lo siguiente:
- Agregar una marca de tiempo al registro.
- Ejecutar el comando
free -m para mostrar el uso de memoria en megabytes.
- Agregar una línea separadora para facilitar la lectura.
Guarda y cierra el editor (presiona Ctrl+O, Enter, luego Ctrl+X).
Ahora, haz el script ejecutable:
chmod +x ~/project/memory_check.sh
Puedes probar el script para asegurarte de que funcione correctamente:
~/project/memory_check.sh
Verifica el archivo de salida:
cat ~/project/memory_log.txt
Deberías ver una salida que incluya la marca de tiempo, la información de uso de memoria y una línea separadora.
Ahora, programemos este script para que se ejecute cada hora utilizando crontab:
crontab -e
Agrega la siguiente línea (manteniendo tu trabajo de cron existente):
0 * * * * ~/project/memory_check.sh
Esto hará que se ejecute el script de comprobación de memoria al comienzo de cada hora. Guarda y cierra el editor.
Para verificar que se ha agregado el nuevo trabajo de cron:
crontab -l
Deberías ver ambos trabajos de cron:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
Usar Cadenas de Tiempo Especiales
Cron también admite algunas cadenas de tiempo especiales para patrones de programación comunes:
@hourly - Lo mismo que 0 * * * *
@daily - Lo mismo que 0 0 * * *
@weekly - Lo mismo que 0 0 * * 0
@monthly - Lo mismo que 0 0 1 * *
@reboot - Ejecutar al inicio del sistema
Vamos a agregar un trabajo que se ejecute diariamente utilizando estas cadenas especiales:
crontab -e
Agrega la siguiente línea:
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Guarda y cierra el editor. Esto creará una nueva entrada en el archivo daily_check.txt una vez al día a medianoche.
Para verificar que se ha agregado el nuevo trabajo de cron:
crontab -l
Ahora deberías ver los tres trabajos de cron:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Administrar la Salida de los Trabajos de Cron
Por defecto, cron envía cualquier salida de los trabajos al correo electrónico del usuario. Si quieres descartar completamente la salida, puedes redirigirla a /dev/null:
*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1
Esta es una práctica común para scripts que producen una salida que no necesitas guardar.