Dois-je enregistrer mon fichier crontab dans / tmp?

11

Je ssh sur un serveur et je veux ajouter des tâches quotidiennes (en particulier pour renouveler les tickets Kerberos même lorsque je me déconnecte et que je veux toujours que mes programmes dans screen ou tmux continuent de s'exécuter) pour cron. Alors je cours crontab -eet j'ajoute ce qui suit,

00 00 * * * kinit -R
00 12 * * * kinit -R

Lorsque je l'enregistre, l'éditeur me demande:

File Name to Write: /tmp/crontab.HMpG7V 

N'est-ce pas que les fichiers /tmppeuvent être supprimés par l'OS? Surtout après ma déconnexion du serveur?

Où dois-je stocker mon fichier crontab? Puis-je enregistrer le fichier crontab sous $ HOME ou un meilleur espace?

Tim
la source
Puis-je enregistrer le fichier crontab sous $ HOME? Pourquoi ai-je besoin d'un lien symbolique?
Tim

Réponses:

15

crontab -eouvre un fichier dans / tmp au lieu de la crontab réelle afin qu'il puisse vérifier votre nouvelle crontab pour les erreurs et vous empêcher d'écraser votre crontab réelle avec ces erreurs. S'il n'y a pas d'erreurs, votre crontab réel sera mis à jour. Si vous crontab -evenez d'écrire directement dans votre crontab, vous risquez de ne pas exécuter tous vos cronjobs en raison d'une erreur de syntaxe dans votre nouveau crontab.

sudoedit, visudo, vipw, Etc. fonctionne sur le même principe.

Ne vous inquiétez pas, votre véritable crontab vit dans un emplacement non volatile sur le disque.

jayhendren
la source
où est éventuellement stocké mon fichier crontab? Si je me déconnecte du serveur, qu'adviendra-t-il de mon fichier crontab? (Je ne suis pas administrateur et je n'ai pas d'accès root au serveur)
Tim
1
votre véritable crontab vit quelque part /var/spool(en général), mais vous ne devriez jamais toucher votre crontab réel et vous ne devriez jamais avoir besoin non plus - utilisez à la crontab -eplace. De toute façon, vous n'avez probablement pas le bon niveau d'accès pour modifier le fichier crontab brut.
jayhendren
si vous vous déconnectez, rien n'arrivera à votre crontab. il ne vit pas dans / tmp.
jayhendren
(1) Le fichier crontab est-il pour un utilisateur individuel ou pour tous les utilisateurs? (2) Comment puis-je vérifier si ma modification dans le fichier crontab fonctionne?
Tim
les crontabs sont par utilisateur. pour vérifier que votre cronjob s'exécute, vous pouvez consulter les journaux cron. généralement dans /var/log/cron.log, mais il pourrait également s'agir d'autres emplacements.
jayhendren
5

/tmpest l'endroit où le fichier temporaire crontab est écrit. Après avoir enregistré et quitté, crontables modifications seront enregistrées dans un répertoire différent et plus approprié de votre système (généralement /var/spool/cron, si je me souviens bien). Donc, ne vous inquiétez pas, le système d'exploitation peut supprimer votre / tmp, mais il ne supprimera jamais vos crontabs.

Valmiky Arquissandas
la source
1

Les fichiers Crontab résident dans / var / spool / cron / crontabs / sous son nom d'utilisateur ou son ID utilisateur. Étant donné que des situations peuvent survenir lorsque le crontab situé ici n'est plus connecté à votre compte de connexion, il est recommandé d'enregistrer une copie dans votre répertoire personnel, par exemple /home/userid/.crontab, afin de pouvoir le restaurer facilement si vous en avez besoin. à. Cela vous permet également de le placer sous contrôle de révision si vous le souhaitez.

Si votre répertoire personnel est déplacé vers un autre système, souvent la crontab du répertoire spool ne l'accompagne pas, sauf si votre administrateur système en tient compte. / Var / spool n'est pas non plus toujours sauvegardé ou restauré lorsqu'un système doit être refait.

Encore une fois, il est recommandé de conserver une copie de votre crontab sous votre répertoire personnel.

Utilisez votre éditeur préféré (pico, vi, emacs, etc.) pour éditer ~ / .crontab puis utilisez crontab pour l'appliquer à / var / spool / crontabs. Comme ça:

% pico ~/.crontab; crontab ~/.crontab

Si vous aimez les alias, vous pouvez en créer un à la place.

JonathanS
la source
1
Dois-je faire quelque chose pour que le fichier crontab de ma maison remplace les fichiers crontab à un autre emplacement?
Tim
Exécutez simplement "crontab ~ / .crontab" et vous l'appliquerez à celui dans / var / spool / cron / crontabs. Utilisez pico, emacs ou vi pour modifier ~ / .crontab avant de faire des modifications.
JonathanS
Cela ne répond pas réellement à la question.
personne le
@AndrewMedico: La question principale semblait être "Où dois-je stocker mon fichier crontab? Puis-je enregistrer le fichier crontab sous $ HOME ou un meilleur espace?" Ou faites-vous référence à la question de Tim dans le commentaire ici?
JonathanS