web-dev-qa-db-fra.com

Où l'utilisateur crontab est-il stocké?

Depuis la mise à niveau, la crontab de mon utilisateur a été supprimée. Ce n’est pas la première fois que cela se produit cette année et c’est pénible de le restaurer à chaque fois.

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

241
Oli

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

Chaque utilisateur peut avoir sa propre crontab, et bien
Ce sont des fichiers en /var/spool/cron/crontabs, ils ne sont pas
destiné à être édité directement.

Les fichiers sous /var/spool sont considérés comme temporaires/fonctionnels. C’est pourquoi ils sont probablement supprimés lors d’une mise à niveau. Toutefois, un examen plus approfondi des scripts de mise à niveau du package cron pourrait nous éclairer.

Quoi qu'il en soit, il est toujours bon 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 tel est le cas, vous pouvez obtenir une "copie" de votre fichier crontab en effectuant crontab -l. Transférez-le dans un fichier pour obtenir une "sauvegarde":

crontab -l > my-crontab

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

crontab my-crontab

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

315
roadmr

Il est stocké dans le dossier /var/spool/cron/crontabs sous le nom d'utilisateur.

48
Manula Waidyanatha

J'ai finalement découvert pourquoi mon installation de Crontabs et Postfix ne fonctionnait plus après le démarrage. C'est une raison vraiment stupide mais ...

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

Cela semble idiot et ça l'est, mais j'avais suivi l'un des vieux réglages du SSD pour prolonger la vie de mon SSD. Ce faisant, j'ai monté aveuglément /tmp, /var/tmp et /var/spool en tant que tmpfs sans penser aux répercussions. Je pensais que /var/spool ressemblait à /proc/ ou /run/ et que cela n’était utile que pendant la durée de la session. J'avais clairement tort.

28
Oli

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
14
pl1nk