Question Où est stocké l'utilisateur crontab?


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.


217
2017-11-13 14:26


origine


ce serait bien si quelqu'un pouvait aussi donner une raison POURQUOI il est effacé - Walter Tross
@WalterTross Ouais, c'est assez ennuyant. Je suppose que c'est un effet secondaire de la mise à jour du cron package mais je suis d'accord - ce n'est pas quelque chose qui devrait arriver. - Oli♦
Euh, je ne suis pas cet utilisateur cron est effacé par la mise à niveau du package cron! - pl1nk
@ pl1nk Je n'ai aucune idée de ce qui est en train de l'effacer mais cela continue à arriver. Ghost in the machine, je suppose. - Oli♦
Les tables utilisateur sont stockées dans une zone temporaire / var / spool / cron / crontabs / $ USER, car elles peuvent être supprimées lors de votre prochain démarrage ou de votre mise à niveau. - fcm


Réponses:


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.


279
2017-11-13 15:21



crontab -l est plus facile que de traverser /var/spool/cron/crontabs/$USER principalement à cause des permissions bizarres sur ce fichier. - Oli♦
le iptables-save de cron. Agréable... - Parthian Shot
Si vous utilisez votre compte root pour crontab, alors son sudo crontab -l> root-crontab pour roots crontab! - FreeSoftwareServers
Peut-être devrions-nous mettre une crontab pour se sauvegarder automatiquement> :)? - PascalVKooten
Traversant /var/spool/cron/crontabsest pratique lorsque vous souhaitez organiser ou examiner des crontabs de plusieurs utilisateurs. - dhasenan


Son stocké à l'intérieur /var/spool/cron/crontabs dossier sous nom d'utilisateur.


46
2017-11-13 14:29





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.


27
2018-05-30 13:20



Il devrait être sûr de monter /tmp comme tmpfs, mais pas /var/tmp ou /var/spool. /tmp est utilisé pour le stockage temporaire qui peut être perdu au redémarrage. /var/tmp est utilisé pour le stockage temporaire qui restera après un redémarrage. Et comme vous l'avez découvert, /var/spool est pour les données à traiter, qui resteront également après un redémarrage. - thomasrutter
Voir chemin.com/fhs/2.2/fhs-5.15.html - thomasrutter
Notez également que le nombre d'écritures n'est plus un problème avec les disques SSD modernes. - thomasrutter


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

10
2018-03-28 12:39



si vous récupérez la crontab d'un autre lecteur, cela ne fonctionnera pas car crontab -u fonctionne à partir de votre système actuel. - JVE999
Bien que je suppose qu’il s’agit d’une ligne à une ligne dans la mesure où elle s’insère dans moins de 80 caractères et qu’elle est assez lisible, j’aime généralement mettre du code dans un format permettant à une personne de copier-coller ou de le placer dans un script (et dans un script, cela ne pas être une ligne de code). Suggestion de modification ... - Parthian Shot
Aussi, j'étais sur le point de le transformer en un while read user loop, pour gérer le cas où le nom d'utilisateur contient des espaces, mais apparemment ce n'est pas un problème. Ensemble très limité de caractères de nom d'utilisateur. - Parthian Shot