Depuis la mise à niveau de la crontab de mon utilisateur a été effacée. Ce n’est pas la première fois que cela se produit cette année et c’est une douleur pour la restaurer à chaque fois.
Je voudrais pouvoir sauvegarder la crontab pour mon utilisateur mais pour cela je dois savoir où elle est stockée.
En fait, il n'est pas recommandé de manipuler ces fichiers à la main. Par crontab
page de manuel:
Chaque utilisateur peut avoir son propre crontab
ce sont des fichiers dans /var/spool/cron/crontabs
, ils ne sont pas
destiné à être édité directement.
Fichiers sous /var/spool
sont considérés comme temporaires / fonctionnels, c’est pourquoi ils sont probablement supprimés lors d’une mise à niveau, bien cron
Les scripts de mise à niveau du paquet peuvent vous éclairer.
Quoi qu’il en soit, il est toujours recommandé 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
créer des fichiers crontab à la volée. Si oui, vous pouvez obtenir une "copie" de votre fichier crontab en faisant crontab -l
. Pipe que 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
Cela fait la même vérification de la syntaxe que crontab -e
.
Son stocké à l'intérieur /var/spool/cron/crontabs
dossier sous nom d'utilisateur.
J'ai finalement découvert Pourquoi mon installation crontabs et Postfix ne cessait de casser après le démarrage. C'est une raison vraiment stupide mais ...
j'avais /var/spool
monté en tant que tmpfs
RAM-drive.
Cela semble idiot, mais j'ai suivi l’un des anciens réglages SSD pour allonger la durée de vie de mon SSD. Ce faisant, j'ai monté aveuglément /tmp
, /var/tmp
et /var/spool
comme tmpfs
sans penser aux répercussions. j'ai pensé /var/spool
était comme /proc/
ou /run/
et que cela n'était utile que pour la durée de la session. J'avais clairement tort.
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 par cron approprié, comme dans l'exemple:
00 01 * * * user /home/user/user-script.sh