Como root, ¿cómo puedo enumerar los crontabs para todos los usuarios?

47

Tengo un script que se ejecuta automáticamente que no puedo encontrar en el crontab para los usuarios esperados, por lo que me gustaría buscarlo en todos los crontabs de los usuarios.

Esencialmente quiero ejecutar un crontab -lpara todos los usuarios.

Altamente irregular
fuente

Respuestas:

77

Bueno, depende del script, pero fácilmente puedes encontrar tu crontab como root con

crontab -l -u <user>

O puede encontrar crontab desde el spool donde se encuentra el archivo para todos los usuarios

cat /var/spool/cron/crontabs/<user>

Para mostrar las crontabs de todos los usuarios con el nombre de usuario impreso al comienzo de cada línea:

cd /var/spool/cron/crontabs/ && grep . *
empleado
fuente
1
Impresionante, buscando en / var / spool / cron / crontabs / funcionó muy bien, ¡gracias!
Muy irregular
1
crontab -e -u <user>editarlo también funciona
vladkras
/var/spool/cron/<user>en mi host Centos 7.
Bob Stein
5

Un revestimiento que enumera todos los usuarios e imprime cron para cada usuario:

for user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done

Esta solución:

  • No requiere conocer una ruta crontab específica del sistema (por ejemplo, /var/spool/cron/crontabs/vs/var/spool/cron/
  • No enumerará crons "huérfanos", es decir, crons para usuarios que ya no existen (y por lo tanto no se ejecutan de manera efectiva)
Jakub Kukul
fuente
Nota: esto funciona shpero no bash.
Tiw
0

En RHEL / OEL puede enumerar los trabajos cron creados por todos los usuarios:

#cd /var/spool/cron/
#ls -1
root
oracle
user1

Para ver los cronjobs de root:

#cat root
Vivek BS
fuente
Se debe utilizar la interfaz (comando) crontab (1), ya que protege contra la edición concurrente de la base de datos crontab.
Dirk