Lister les crons de tous les utilisateurs sur une machine

But de la commande : lister l’ensemble des tâches crons programmées par tous les utilisateurs d’une machine.

, par clem

Lorsque sur un serveur il y a plusieurs utilisateurs qui sont autorisés à faire des crons, il peut devenir utile de gérer le lancement de ces tâches afin d’éviter que plusieurs ne soient déclenchées au même moment.

Connecté avec les droits super-utilisateur on peut lister l’ensemble des crontabs (listes de tâches d’un utilisateur) à l’aide de la commande suivante :

  1. for user in $(cut -f1 -d: /etc/passwd); do echo -e "\nUtilisateur:\x1b[32;01m $user \x1b[39;49;00m"; crontab -u $user -l; done

NB : les séquences échappées \x1b[32 ;01m et \x1b[39 ;49 ;00m sont les codes couleurs permettant de colorer en vert le nom de l’utilisateur

On obtient un retour ressemblant à :

Connaissant l’utilisateur d’un crontab on peut alors l’éditer.
Exemple pour le crontab de l’utilisateur Toto :

  1. crontab -e -u toto

Pour récupérer cette liste sous forme d’un fichier texte liste_crontabs.txt (par exemple pour une migration de machine), la commande devient alors :

  1. for user in $(cut -f1 -d: /etc/passwd); do echo -e $user >> liste_crontabs.txt;crontab -u $user -l >> liste_crontabs.txt;done