CronDrive
Guías

Cómo listar los cron jobs en Linux, de todos los usuarios

Actualizada el 16 de octubre de 2026

Los jobs de un servidor pueden estar en varios lugares: el crontab de cada usuario, el crontab del sistema, /etc/cron.d/, los directorios de /etc/cron.daily/ y, cada vez más, los timers de systemd. Para revisar las tareas programadas con cron y systemd en un servidor, revisa cada uno.

Tu crontab

crontab -l

Si no tienes uno, dice no crontab for y tu usuario. Para editarlo, crontab -e.

El crontab de otro usuario, o de todos

sudo crontab -l -u www-data

Para recorrer los usuarios que conoce el sistema, como root:

sudo sh -c 'for user in $(getent passwd | cut -d: -f1); do
  crontab -l -u "$user" 2>/dev/null | grep -v "^\s*#" | sed "s/^/$user: /"
done'

Cada línea aparece con el nombre de su usuario, y los comentarios quedan fuera. getent passwd lista las cuentas locales y las de las otras fuentes que usa el sistema, aunque algunas, como un directorio LDAP, pueden no listar a todos sus usuarios.

Los crontabs se guardan como un archivo por usuario en /var/spool/cron/crontabs/ en Debian y Ubuntu, y en /var/spool/cron/ en RHEL, Fedora y Rocky. Para cambiarlos, usa crontab -e -u <usuario>, no esos archivos.

El crontab del sistema y /etc/cron.d

cat /etc/crontab
ls /etc/cron.d/
cat /etc/cron.d/*

Sus líneas tienen un campo más, con el usuario que ejecuta el comando, después del horario. Los paquetes suelen instalar sus jobs en /etc/cron.d/.

/etc/cron.hourly, daily, weekly y monthly

Los scripts de estos directorios no tienen un horario propio: /etc/crontab, o anacron, los ejecuta todos con run-parts.

ls /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
run-parts --test /etc/cron.daily     # Debian, Ubuntu: los que ejecutaría

run-parts --test deja fuera los archivos que ignoraría, como los que tienen un punto en el nombre.

Los timers de systemd

Muchas distribuciones ya programan sus tareas con timers de systemd en vez de cron. Para verlos todos, con su próxima y su última ejecución:

systemctl list-timers --all

Esos son los del sistema. Cada usuario también puede tener los suyos, que este comando muestra para el usuario actual:

systemctl --user list-timers --all

Decide cuáles vigilar

Con la lista en la mano, los jobs que conviene vigilar son los que, si fallan, notarías tarde: respaldos, importaciones, renovaciones, reportes. Un agente de IA con acceso a tu servidor, como Claude Code, puede revisar el crontab y usar el servidor MCP de CronDrive para crear un monitor por cada línea; los pasos están en la documentación.

CronDrive te avisa por email, o en Slack, cuando un job con este horario falla, o no se inicia o no termina a tiempo. Gratis hasta 15 jobs.

Lo que verías con este horario

Un ejemplo con las últimas ejecuciones de este horario y resultados inventados: una falló y otra no se ejecutó.

Horas en UTC.

Hora
jue 15 oct, 03:00 A tiempo Inició 03:00, terminó 03:13, duró 13 min.
mié 14 oct, 03:00 No se ejecutó Alertas enviadas a las 03:05 y 03:30.
mar 13 oct, 03:00 A tiempo Inició 03:00, terminó 03:14, duró 14 min.
lun 12 oct, 03:00 Falló con código 1 Alerta enviada a las 03:04. Inició 03:00, terminó 03:04, duró 4 min.
dom 11 oct, 03:00 A tiempo Inició 03:00, terminó 03:13, duró 13 min.
sáb 10 oct, 03:00 A tiempo Inició 03:00, terminó 03:14, duró 14 min.

La alerta de la ejecución que falló

Email de CronDrive, lun 12 oct, 03:04

Falló (código 1): "Tu job"

El job "Tu job" falló con el código de salida 1.

Si conectas Slack, el mismo mensaje llega a tu canal.

El cambio en tu crontab

0 3 * * * curl -fsS -m 10 https://job.crondrive.com/uG2Exw/start/$$; /path/to/job.sh; curl -fsS -m 10 https://job.crondrive.com/uG2Exw/end/$?/$$

Dos llamadas alrededor de tu comando, en la misma línea. La línea de tu job trae su propio token.

Monitorear este horario