web-dev-qa-db-fra.com

Comment obtenir une liste de toutes les tâches cron planifiées sur ma machine?

Mon administrateur système a configuré un tas de tâches cron sur ma machine. Je voudrais savoir exactement ce qui est prévu pour quelle heure. Comment puis-je obtenir cette liste?

215
Frank

Selon la configuration de votre système Linux, vous pouvez consulter:

  • /var/spool/cron/* (utilisateur crontabs)
  • /etc/crontab (crontab à l'échelle du système)

de plus, de nombreuses distributions ont:

  • /etc/cron.d/* Ces configurations ont la même syntaxe que /etc/crontab

  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly

Ce sont simplement des répertoires qui contiennent des exécutables qui sont exécutés toutes les heures, quotidiennement, hebdomadairement ou mensuellement, selon leur nom de répertoire.

En plus de cela, vous pouvez avoir des emplois (vérifiez /var/spool/at/*), anacron (/etc/anacrontab et /var/spool/anacron/*) et probablement d'autres que j'oublie.

150
jsbillings

Avec la plupart des Crons (par exemple Vixie-Cron - Debian/Ubuntu par défaut, Cronie - Fedora par défaut, Solaris Cron ...), vous obtenez la liste des tâches cron planifiées pour l'utilisateur actuel via:

$ crontab -l

ou pour un autre utilisateur via

# crontab -l -u juser

Pour obtenir les crontabs pour tous les utilisateurs, vous pouvez parcourir tous les utilisateurs et appeler cette commande.

Vous pouvez également rechercher les fichiers de spoule. Habituellement, ils sont enregistrés sous /var/spool/cron, par exemple. pour le répertoire suivant vcron

/var/spool/cron/crontabs

contient tous les crontabs configurés de tous les utilisateurs - sauf l'utilisateur root qui est également capable de configurer des travaux via le crontab à l'échelle du système, qui est situé à

/etc/crontab

Avec cronie (par défaut sur Fedora/CentOS), il y a un .d Répertoire de configuration de style pour les tâches cron du système:

/etc/cron.d

(Comme toujours, le .d le répertoire simplifie la gestion des entrées de configuration qui font partie de différents packages.)

Pour plus de commodité, la plupart des distributions fournissent également des répertoires dans lesquels des scripts liés/stockés sont régulièrement exécutés, par exemple:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

L'exécution en temps opportun de ces scripts est généralement gérée via run-parts entrées dans le système crontab ou via anacron .

Avec Systemd (par exemple sur Fedora, CentOS 7, ...), l'exécution périodique des tâches peut en outre être configurée via nités de temporisation . Les temporisations système activées peuvent être affichées via:

$ systemctl list-timers

Notez que les utilisateurs à côté de root peuvent également avoir des instances utilisateur systemd où les minuteries sont configurées. Par exemple, sur Fedora, par défaut, une instance utilisateur systemd est démarrée pour chaque utilisateur actuellement connecté. Ils peuvent être reconnus via:

$ ps aux | grep 'systemd[ ]--user'

Ces minuteries utilisateur peuvent être répertoriées via:

$ systemctl --user list-timers

Une alternative à l'émission du list-timers la commande consiste à rechercher les fichiers de l'unité de minuterie (modèle: *.timer) et des liens symboliques vers ceux-ci dans les répertoires habituels de configuration système et utilisateur systemd:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(Comme avec les unités de service normales, une unité de temporisation est activée via la création d'un lien symbolique dans le bon répertoire de configuration systemd.)

Voir également:

149
maxschlepzig

Pour répertorier tous les crons pour l'utilisateur donné.

crontab -u nom d'utilisateur -l;

Pour répertorier tous les crons pour tous les utilisateurs

Exécutez-le en tant que super utilisateur

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done
5