304 votes

Où se trouve le crontab de l'utilisateur ?

Depuis la mise à jour, la crontab de mon utilisateur a été effacée. Ce n'est pas la première fois que cela arrive cette année et c'est pénible de devoir la restaurer à chaque fois.

J'aimerais pouvoir sauvegarder la crontab de mon utilisateur mais pour cela, j'ai besoin de savoir où elle est stockée.

406voto

roadmr Points 32606

En fait, il n'est pas recommandé de manipuler ces fichiers manuellement. Selon la page de manuel de crontab :

Chaque utilisateur peut avoir son propre crontab, et bien que ceux-ci soient des fichiers dans /var/spool/cron/crontabs, ils ne sont pas destinés à être modifiés directement.

Les fichiers sous /var/spool sont considérés comme temporaires/de travail, c'est pourquoi ils sont probablement supprimés lors d'une mise à niveau, bien qu'un examen plus attentif des scripts de mise à niveau du paquet cron puisse éclaircir ce point.

Quoi qu'il en soit, il est toujours préférable de sauvegarder vos entrées cron ou de les conserver dans un fichier de votre répertoire personnel.

Je suppose que vous utilisez crontab -e pour créer des fichiers crontab à la volée. Si c'est le cas, vous pouvez obtenir une "copie" de votre fichier crontab en faisant crontab -l. Redirigez cela vers un fichier pour obtenir une "sauvegarde" :

crontab -l > mon-crontab

Ensuite, vous pouvez modifier ce fichier mon-crontab pour ajouter ou modifier des entrées, puis "l'installer" en le donnant à crontab :

crontab mon-crontab

Cela effectue la même vérification de syntaxe que crontab -e.

65voto

Manula Waidyanatha Points 8133

C'est stocké à l'intérieur du dossier /var/spool/cron/crontabs sous le nom d'utilisateur.

34voto

Mufaka Points 54

J'ai enfin découvert pourquoi mes crontabs et mon installation Postfix continuaient de se casser après le démarrage. C'est une raison vraiment stupide mais...

J'avais /var/spool monté en tant que RAM-drive tmpfs.

Cela semble idiot et ça l'est, mais j'avais suivi l'un des anciens ajustements SSD pour prolonger la durée de vie de mon SSD. En le faisant, j'avais monté aveuglément /tmp, /var/tmp et /var/spool en tant que tmpfs sans penser aux conséquences. Je pensais que /var/spool était comme /proc/ ou /run/ et qu'il n'était utile que pour la durée de la session. J'avais clairement tort.

18voto

pl1nk Points 5939

Pour répertorier tous les travaux cron de tous les utilisateurs de votre système :

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Une alternative à votre problème serait de les placer dans le dossier cron.d et de spécifier l'utilisateur approprié par cron comme dans l'exemple :

00 01 * * * user /home/user/user-script.sh

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X