En tant que root, comment puis-je lister les crontabs pour tous les utilisateurs?

47

J'ai un script en cours d'exécution automatiquement que je ne trouve pas dans la crontab pour les utilisateurs attendus. J'aimerais donc effectuer une recherche dans les crontabs de tous les utilisateurs.

Essentiellement, je veux exécuter un programme crontab -lpour tous les utilisateurs.

Très irrégulière
la source

Réponses:

77

Cela dépend du script, mais vous pouvez facilement trouver votre crontab en tant que root avec

crontab -l -u <user>

Ou vous pouvez trouver crontab à partir de spool où se trouve le fichier pour tous les utilisateurs

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

Pour afficher les crontabs de tous les utilisateurs avec le nom d'utilisateur imprimé au début de chaque ligne:

cd /var/spool/cron/crontabs/ && grep . *
Klerk
la source
1
Génial, regarder dans / var / spool / cron / crontabs / a bien fonctionné, merci!
Très irrégulier
1
crontab -e -u <user>pour le modifier fonctionne aussi
vladkras
/var/spool/cron/<user>sur mon hôte Centos 7.
Bob Stein le
5

Un support qui répertorie tous les utilisateurs et imprime cron pour chaque utilisateur:

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

Cette solution:

  • Ne nécessite pas de connaître un chemin d'accès crontab spécifique au système (par exemple, /var/spool/cron/crontabs/vs/var/spool/cron/
  • Ne listera pas les crons "orphelins", c'est-à-dire ceux qui n'existent plus (et ne sont donc pas exécutés efficacement)
Jakub Kukul
la source
Remarque: cela fonctionne pour shmais pas bash.
Tiw
0

Dans RHEL / OEL, vous pouvez répertorier les travaux cron créés par tous les utilisateurs:

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

Pour voir les cronjobs de root:

#cat root
Vivek BS
la source
L’interface crontab (1) (commande) doit être utilisée, car elle protège contre l’édition simultanée de la base de données crontab.
Dirk