web-dev-qa-db-fra.com

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

J'ai un script exécuté automatiquement que je ne trouve pas dans la crontab pour les utilisateurs attendus, donc je voudrais le rechercher dans toutes les crontabs de tous les utilisateurs.

Essentiellement, je veux exécuter un crontab -l pour tous les utilisateurs.

60
Highly Irregular

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 du spool où se trouve le fichier pour tous les utilisateurs

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

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

cd /var/spool/cron/crontabs/ && grep . *
94
klerk

Un liner 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 crontab spécifique au système (par exemple /var/spool/cron/crontabs/ contre /var/spool/cron/
  • N'affichera pas les crons "orphelins", c'est-à-dire les crons pour les utilisateurs qui n'existent plus (et qui ne sont donc pas exécutés efficacement)
10
Jakub Kukul

Dans RHEL/OEL, vous pouvez répertorier les tâches cron créées par tous les utilisateurs:

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

Pour voir les tâches cron de root:

#cat root
0
Vivek B.S.

En utilisant la commande suivante, nous trouvons tous les travaux Cron, sur le système spécifié.

find /etc/cron* -type f -perm -o+w -exec ls -l {} \;
0
Boschko