Ejecutar un script de shell a horas específicas
Si quieres programar un script de shell para ejecutarlo a horas específicas, usa launchd
o cron
.
Programar tareas con launchd
Usa
launchd
en lugar decron
para programar tareas. Conlaunchd
, si se omite una tarea porque la computadora se apagó o entró en reposo, la tarea se agrega a la cola cuando la computadora se vuelve a conectar.Para usar
launchd
para programar trabajos basados en un temporizador, usa la opciónStartCalendarInterval
oStartInterval
.Para obtener más información sobre la herramienta
launchd
, consulta la página “man” correspondiente.
Usar cron para programar una tarea
El deamon cron
ejecuta comandos programados definidos en archivos crontab. El daemon cron
explora la carpeta /usr/lib/cron/tabs/ para encontrar archivos crontab llamados igual que las cuentas en /etc/passwd, y carga los archivos en la memoria. El daemon cron
también explora la carpeta /etc/crontab/ para encontrar archivos crontab, los cuales están en un formato diferente. cron
después trabaja en ciclos de un minuto, donde examina los archivos crontab y comprueba cada comando para ver si se debe ejecutar en el minuto actual.
Cuando los comandos se ejecutan, el resultado se envía por correo al dueño del archivo crontab o al usuario indicado en la variable de entorno opcional MAILTO en el archivo crontab.
Puedes usar la herramienta crontab
para instalar, desinstalar, o crear listas de las tablas utilizadas para dirigir el daemon cron
. Los usuarios pueden tener su proprio archivo crontab.
Para configurar tu archivo crontab, usa el comando
crontab -e
. Esto abre un archivo crontab vacío en modo de edición.El siguiente es un ejemplo de un archivo crontab:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
En este ejemplo, la primera entrada repara los permisos de disco del volumen MacHD a las 18:30 todos los días, de lunes a viernes:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
La segunda entrada programa una operación de reparación de volumen a las 23:50 todos los domingos:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD