Comment lister toutes les tâches cron pour tous les utilisateurs ?
Existe-t-il une commande ou un script existant qui me permette de visualiser en une seule fois toutes les tâches cron programmées sur un système *NIX ? J'aimerais que cela inclue tous les crontabs des utilisateurs, ainsi que /etc/crontab
, et tout ce qui se trouve dans /etc/cron.d
. Il serait également intéressant de voir les commandes spécifiques exécutées par run-parts
dans /etc/crontab
.
Idéalement, j'aimerais que la sortie se présente sous la forme d’une belle colonne et qu’elle soit ordonnée de manière significative.
Je pourrais alors fusionner ces listes provenant de plusieurs serveurs pour voir l'ensemble du "programme des événements." ;
J'étais sur le point d'écrire moi-même un tel script, mais si quelqu'un s'est déjà donné la peine...
Vous devrez l'exécuter en tant que root, mais.. :
bouclera sur chaque nom d'utilisateur en listant leur crontab. Les crontabs appartiennent aux utilisateurs respectifs, vous ne pourrez donc pas voir le crontab d'un autre utilisateur sans être lui ou root.
Edit Si vous voulez savoir à quel utilisateur appartient un crontab, utilisez
echo $user
.J’ai fini par écrire un script (j’essaie de m’apprendre les subtilités du scriptage bash, c’est pourquoi vous ne verrez pas quelque chose comme Perl ici). Ce n'est pas exactement une affaire simple, mais il fait la plupart de ce dont j'ai besoin. Elle utilise la suggestion de Kyle pour rechercher les crontabs des utilisateurs individuels, mais s'occupe aussi de
/etc/crontab
(y compris les scripts lancés parrun-parts
dans/etc/cron.hourly
,/etc/cron.daily
, etc.) et des tâches dans le répertoire/etc/cron.d
. Il prend tous ces éléments et les fusionne dans un affichage qui ressemble à ce qui suit :Notez qu'il montre l'utilisateur et qu'il trie plus ou moins par heure et par minute pour que je puisse voir le programme quotidien.
Jusqu'à présent, je l'ai testé sur Ubuntu, Debian et Red Hat AS.
Cela dépend de votre version de cron. En utilisant Vixie cron sur FreeBSD, je peux faire quelque chose comme ceci :
si je veux plus de tabulations, je peux faire quelque chose comme ceci :
Où c'est une tabulation littérale dans la partie de remplacement de sed.
Il peut être plus indépendant du système de boucler sur les utilisateurs dans
/etc/passwd
et de fairecrontab -l -u $user
pour chacun d'eux.