Existe-t-il une commande ou un script existant qui me permettra de visualiser tous les travaux cron planifiés d'un système * NIX à la fois? J'aimerais qu'il inclue tous les crontabs utilisateur, ainsi que /etc/crontab
tout ce qui s'y trouve /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 soit sous forme de colonne agréable et ordonnée de manière significative.
Je pouvais ensuite fusionner ces listes à partir de plusieurs serveurs pour afficher le "calendrier des événements" global.
J'étais sur le point d'écrire un tel script moi-même, mais si quelqu'un a déjà eu des ennuis ...
Réponses:
Vous devrez l'exécuter en tant que root, mais:
fera une boucle sur chaque nom d'utilisateur répertoriant leur crontab. Les crontabs appartiennent aux utilisateurs respectifs, vous ne pourrez donc pas voir la crontab d'un autre utilisateur sans être eux ou root.
Modifiez si vous voulez savoir à quel utilisateur appartient un crontab, utilisez
echo $user
la source
for user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done
for user in $(getent passwd | awk -F : '{print $1}'); do echo $user; crontab -u $user -l; done
/etc/cron.hourly/
,/etc/cron.daily/
,/etc/cron.weekly/
,/etc/cron.monthly/
...?J'ai fini par écrire un script (j'essaie de m'enseigner les points les plus fins du script bash, c'est pourquoi vous ne voyez pas quelque chose comme Perl ici). Ce n'est pas exactement une simple affaire, mais elle fait la plupart de ce dont j'ai besoin. Il utilise la suggestion de Kyle pour rechercher des crontabs des utilisateurs individuels, mais traite aussi
/etc/crontab
(y compris les scripts lancés parrun-parts
dans/etc/cron.hourly
,/etc/cron.daily
etc.) et les emplois dans le/etc/cron.d
répertoire. Il prend tout cela et les fusionne dans un affichage quelque chose comme ceci:Notez qu'il montre l'utilisateur et trie plus ou moins par heure et minute afin que je puisse voir le programme quotidien.
Jusqu'à présent, je l'ai testé sur Ubuntu, Debian et Red Hat AS.
la source
<' showcrons.sh: line 59:
fait <<(cut --fields = 1 --delimiter =: / etc / passwd) '/etc/anacrontab
Sous Ubuntu ou debian, vous pouvez afficher crontab par
/var/spool/cron/crontabs/
puis un fichier pour chaque utilisateur s'y trouve. Bien sûr, cela ne concerne que les crontab spécifiques à l'utilisateur.Pour Redhat 6/7 et Centos, le crontab est sous
/var/spool/cron/
.la source
/etc/passwd
. OMI, cela devrait être la réponse acceptée, plutôt que toutes les solutions de force brute.Cela montrera toutes les entrées crontab de tous les utilisateurs.
la source
Dépend de votre version linux mais j'utilise:
en tant que root. Très simple et très court.
Me donne une sortie comme:
la source
tail -n +1 /var/spool/cron/*
pour lister tout le contenu des fichiers.sudo sh -c 'tail -n +1 /var/spool/cron/*'
si vous ne voulez pas devenir root. Mon trouble obsessionnel-compulsif m'a obligé à rechercher pourquoi je ne pouvais pas sudo cette commande comme écrit. C'est parce que les utilisateurs réguliers n'ont pas accès au répertoire / var / spool / cron et que le glob était interprété comme un caractère étoile littéral, qui n'existe évidemment pas.cd /var/spool/cron/cron/ && grep . *
imprimera également le nom d'utilisateur correspondant devant chaque tâche cronUn petit raffinement de la réponse de Kyle Burton avec un formatage de sortie amélioré:
la source
Cela évite de jouer directement avec passwd, ignore les utilisateurs qui n'ont pas d'entrées cron et pour ceux qui les ont, il imprime le nom d'utilisateur ainsi que leur crontab.
La plupart du temps, je le laisse ici pour que je puisse le trouver plus tard au cas où j'aurais besoin de le rechercher à nouveau.
la source
/etc/passwd
. La solution de Matt ci-dessus est plus appropriée à cette situation particulière, mais il est bon de savoir que la commande existe.Si vous vérifiez un cluster à l'aide de NIS, la seule façon de voir si un utilisateur a une entrée crontab selon la réponse / var / spool / cron / tab de Matt.
la source
Pour obtenir la liste des utilisateurs ROOT.
la source
Ce script a fonctionné pour moi dans CentOS pour répertorier tous les crons de l'environnement:
la source
cat /etc/passwd | sed 's/^\([^:]*\):.*$/echo "\ncrontab for \1:"; sudo crontab -u \1 -l 2>\&1/' | grep -v "no crontab for" | sh
gagner un peu de tempsJ'aime la réponse simple à une ligne ci-dessus:
Mais Solaris qui n'a pas l'indicateur -u et n'imprime pas l'utilisateur qu'il vérifie, vous pouvez le modifier comme suit:
Vous obtiendrez une liste d'utilisateurs sans les erreurs générées par crontab lorsqu'un compte n'est pas autorisé à utiliser cron, etc. Soyez conscient que dans Solaris, les rôles peuvent également se trouver dans / etc / passwd (voir / etc / user_attr).
la source
la source
Les éléments suivants suppriment les commentaires, les lignes vides et les erreurs des utilisateurs sans crontab. Il ne vous reste qu'une liste claire des utilisateurs et de leurs tâches.
Notez l'utilisation de
sudo
dans la 2ème ligne. Si vous êtes déjà root, supprimez-le.Exemple de sortie:
Je l'utilise sur Ubuntu (12 à 16) et Red Hat (5 à 7).
la source
Cela dépend de votre version de cron. En utilisant Vixie cron sur FreeBSD, je peux faire quelque chose comme ceci:
si je veux supprimer plus d'onglets, je pourrais faire quelque chose comme ceci:
Où c'est un onglet littéral dans la partie de remplacement sed.
Il peut être plus indépendant du système de parcourir les utilisateurs
/etc/passwd
et de le fairecrontab -l -u $user
pour chacun d'eux.la source
Merci pour ce script très utile. J'ai eu de petits problèmes à l'exécuter sur d'anciens systèmes (Red Hat Enterprise 3, qui gèrent différemment egrep et les onglets dans les chaînes), et d'autres systèmes sans rien dans /etc/cron.d/ (le script s'est alors terminé avec une erreur). Voici donc un patch pour le faire fonctionner dans de tels cas:
Je ne suis pas vraiment sûr que les changements dans le premier egrep soient une bonne idée, mais bon, ce script a été testé sans problème sur RHEL3,4,5 et Debian5. J'espère que cela t'aides!
la source
Construire au sommet de @Kyle
pour éviter les commentaires généralement en haut de / etc / passwd,
Et sur macosx
la source
grep -v '^#
plutôt que de vous fier au nombre magique11
?Je pense qu'une meilleure doublure serait en dessous. Par exemple, si vous avez des utilisateurs dans NIS ou LDAP, ils ne se trouveront pas dans / etc / passwd. Cela vous donnera les crontabs de chaque utilisateur qui s'est connecté.
la source
vous pouvez écrire pour toutes les listes d'utilisateurs:
Vous pouvez aussi aller sur
ce fichier listera les horaires
la source
Toutes mes excuses et merci au yukondude.
J'ai essayé de résumer les paramètres de synchronisation pour une lecture facile, bien que ce ne soit pas un travail parfait, et je ne touche pas `` tous les vendredis '' ou `` uniquement le lundi ''.
Ceci est la version 10 - maintenant:
Je publie maintenant le script en entier ici.
https://gist.github.com/myshkin-uk/d667116d3e2d689f23f18f6cd3c71107
la source
Puisqu'il s'agit de parcourir un fichier (
/etc/passwd
) et d'effectuer une action, je manque l'approche appropriée sur Comment puis-je lire un fichier (flux de données, variable) ligne par ligne (et / ou champ par champ )? :Cela lit
/etc/passwd
ligne par ligne en utilisant:
comme délimiteur de champ. En disantread -r user _
, on fait$user
tenir le premier champ et_
le reste (c'est juste une variable indésirable pour ignorer les champs).De cette façon, nous pouvons alors appeler en
crontab -u
utilisant la variable$user
, que nous citons pour la sécurité (que faire si elle contient des espaces? C'est peu probable dans un tel fichier, mais vous ne pouvez jamais le savoir).la source
Sous Solaris, pour un nom d'utilisateur connu particulier:
Tous les autres * Nix auront besoin d'un
-u
modificateur:Pour obtenir simultanément tous les travaux des utilisateurs sur Solaris, un peu comme les autres publications ci-dessus:
la source
Pour moi, regarder / var / spool / cron / crontabs est la meilleure façon
la source
Ce script génère la Crontab dans un fichier et répertorie également tous les utilisateurs confirmant ceux qui n'ont pas d'entrée crontab:
la source