Mi administrador del sistema ha configurado un montón de trabajos cron en mi máquina. Me gustaría saber exactamente qué está programado para qué hora. ¿Cómo puedo obtener esa lista?
Mi administrador del sistema ha configurado un montón de trabajos cron en mi máquina. Me gustaría saber exactamente qué está programado para qué hora. ¿Cómo puedo obtener esa lista?
Respuestas:
Dependiendo de cómo esté configurado su sistema Linux, puede buscar en:
/var/spool/cron/*
(crontabs de usuario)/etc/crontab
(crontab en todo el sistema)Además, muchas distribuciones tienen:
/etc/cron.d/*
Estas configuraciones tienen la misma sintaxis que /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
,/etc/cron.monthly
Estos son simplemente directorios que contienen ejecutables que se ejecutan cada hora, diariamente, semanalmente o mensualmente, por su nombre de directorio.
Además de eso, puede tener en puestos de trabajo (cheque /var/spool/at/*
), anacron ( /etc/anacrontab
y /var/spool/anacron/*
) y probablemente otros que estoy olvidando.
/etc/cron.daily
. ¿Cómo funciona ese daily
archivo? ¿A qué hora se ejecutarán los trabajos diarios? En mi máquina parecen funcionar alrededor del mediodía, pero me gustaría decirle a mi administrador de sistemas cómo cambiar eso a la medianoche.
/etc/crontab
, por ejemplo, en mi sistema Ubuntu es: lo 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
que significa 6:25 am.
cronie
demonio se encarga de aquellos que usan la configuración /etc/anacrontab
.
/var/cron
.
Con la mayoría de los Crons (por ejemplo, Vixie-Cron - Debian / Ubuntu por defecto, Cronie - Fedora por defecto, Solaris Cron ...) obtienes la lista de trabajos cron programados para el usuario actual a través de:
$ crontab -l
o para otro usuario a través de
# crontab -l -u juser
Para obtener los crontabs para todos los usuarios, puede recorrer todos los usuarios y llamar a este comando.
Alternativamente, puede buscar los archivos de spool. Por lo general, se guardan en /var/spool/cron
, por ejemplo, para vcron siguiendo el directorio
/var/spool/cron/crontabs
contiene todos los crontabs configurados de todos los usuarios, excepto el usuario raíz que también puede configurar trabajos a través del crontab de todo el sistema, que se encuentra en
/etc/crontab
Con cronie (predeterminado en Fedora / CentOS), también hay un .d
directorio de configuración de estilo para trabajos cron del sistema:
/etc/cron.d
(Como siempre, el .d
directorio simplifica el mantenimiento de las entradas de configuración que forman parte de diferentes paquetes).
Por conveniencia, la mayoría de las distribuciones también proporcionan directorios donde los scripts vinculados / almacenados se ejecutan periódicamente, por ejemplo:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
La ejecución oportuna de esos scripts generalmente se gestiona mediante run-parts
entradas en el crontab del sistema o mediante anacron .
Con Systemd (por ejemplo, en Fedora, CentOS 7, ...), la ejecución periódica de trabajos se puede configurar adicionalmente a través de unidades de temporizador . Los temporizadores del sistema habilitados se pueden mostrar a través de:
$ systemctl list-timers
Tenga en cuenta que los usuarios además de root pueden tener instancias de systemd de usuario ejecutándose donde los temporizadores también están configurados. Por ejemplo, en Fedora, de manera predeterminada, se inicia una instancia de systemd de usuario para cada usuario que actualmente está conectado. Se pueden reconocer a través de:
$ ps aux | grep 'systemd[ ]--user'
Esos temporizadores de usuario se pueden enumerar a través de:
$ systemctl --user list-timers
Una alternativa a la emisión del list-timers
comando es buscar archivos de unidad de temporizador (patrón *.timer
:) y enlaces simbólicos a ellos en el sistema habitual y en los directorios de configuración del sistema del usuario:
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(Al igual que con las unidades de servicio normales, se habilita una unidad de temporizador mediante la creación de un enlace simbólico en el directorio de configuración correcto de systemd).
Ver también:
crontab -l -u root
(porque esos cronjobs sobre los que quiero saber se ejecutan root
), y dice que no tengo privilegios para usar -u
.
root
usuario.
cronie
, como se envía en Fedora y RHEL6, no se refiere a los que están en /etc/crontab
, sino que los usa /etc/anacrontab
. Puedo estar equivocado acerca de cualquier implementación real que no se refiera a ellas en ningún archivo de configuración. (Pero tampoco voté en contra ... solo digo.)
Para enumerar todos los crons para el usuario dado.
crontab -u nombre de usuario -l;
Para enumerar todos los crons para todos los usuarios
Ejecútalo como un superusuario
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
oapache
lo que sea, pero uno debe usar/etc/crontab
o (mejor, en la mayoría de las distribuciones)/etc/cron.d
y/etc/cron.[timeframe]
.