Est-il mauvais d'éditer le fichier cron manuellement?

12

Il est généralement chargé d'introduire de nouveaux travaux cron via des lignes de commande; mais j'ai trouvé plus facile (avec un meilleur contrôle des tâches cron actuelles) d'éditer manuellement (dans l'éditeur de texte) le fichier cron utilisateur comme /var/spool/cron/crontabs/root.

Est-il dangereux de modifier le fichier dans l'éditeur de texte?

Les commentaires dans le fichier par défaut sont déroutants. La première ligne dit

# DO NOT EDIT THIS FILE - edit the master and reinstall.

Mais la quatrième ligne dit

# Edit this file to introduce tasks to be run by cron.
Googlebot
la source
2
Pourquoi ne pas simplement mettre les choses sous /etc/cron.d?
Zoredache
Cela peut être une bonne idée; mais je ne voulais pas dire quel fichier éditer, je compare l'édition du fichier par l'éditeur ou l'exécution de la commande crontab.
Googlebot
@Tout ce que je suppose, c'est que la vérification de la syntaxe effectuée par crontab-e est la seule différence. Ce n'est qu'un tampon de texte avec vérification de la syntaxe. Vous pouvez également changer votre éditeur habituel et crontab-e se chargerait dans cela. L'importance sur la xyntaxe est que tout le fichier serait ignoré si vous faites une erreur. Même si vous utilisez un outil externe, vous devez utiliser crontab-e pour lire le fichier et le renvoyer à crontab-e lorsque vous avez terminé. Ce faisant, vous n'avez plus à vous soucier de la syntaxe. Mieux vaut séparer les fichiers des tâches utilisateur et système, vous devriez donc utiliser mieux /etc/cron.d pour les tâches utilisateur / test.
m3nda

Réponses:

22

Si vous modifiez le fichier utilisateur sous crontabs, cela devrait fonctionner. Cependant, il y a deux points à prendre en considération:

  1. Si vous avez mal saisi l'entrée cron dans le fichier, vous ne serez pas averti au lieu d'utiliser la crontab -ecommande.
  2. Vous ne pouvez pas modifier votre fichier utilisateur sous crontabs directement sans vous connecter en tant que root ou en utilisant sudo. Vous obtiendrez une autorisation refusée.

Éditer

Un dernier point à ajouter. Lorsque vous modifiez le fichier directement, vous pouvez être averti par l'éditeur de texte si vous avez ouvert le fichier deux fois (deux utilisateurs accédant au même fichier). Cependant, la liste cron sera remplacée lors de l'utilisation à crontab -epartir de deux sessions shell différentes du même utilisateur. C'est une autre différence.

Khaled
la source
des points très subtils! Je n'ai jamais rencontré (connu) le deuxième problème, car je travaille toujours en tant que root.
Googlebot
4
En outre, le «ne pas modifier» dans le fichier par défaut est dû au fait qu'une mise à niveau / réinstallation peut remplacer ce fichier.
Chris S
Vous avez omis de mentionner qu'un utilisateur qui modifie la crontab perd directement la vérification santax qui crontab -efournit.
Adam F du
1
@AdamF: C'est ce dont parle le point 1!
Khaled
8

Si je comprends bien, vous modifiez le fichier manuellement avec un éditeur de texte car vous ne voulez pas utiliser crontab -e. Je suppose que c'est parce qu'il utilise vi comme éditeur et que vous ne le connaissez pas.

Vous changez crontab -e (et d'autres choses qui nécessitent un éditeur) pour utiliser l'éditeur nano plus familier en exécutant

export EDITOR=nano

avant

crontab -e

Vous pouvez faire de nano l'éditeur par défaut de permament en modifiant votre fichier ~ / .bash_profile pour l'inclure export EDITOR=nanoà la fin.

Pour répondre à votre question, vous ne devez pas modifier le fichier directement car il peut être écrasé à votre insu. La 4ème ligne dit ce qu'elle dit car elle vient de la crontab que vous êtes censé éditer manuellement (elle dirait cela comme première ligne).

Jonathan Amend
la source
Merci pour la réponse descriptive. Je connais bien l'éditeur crontab command vi; mais j'utilise gedit (pas dans le terminal ssh), car je me connecte directement au serveur depuis mon bureau linux.
Googlebot
Je recommande également d'ajouter la commande d'exportation EDITOR dans votre fichier bashrc pour éviter de l'écrire à chaque connexion à ssh.
m3nda
1
export VISUAL=vi

C'est la bonne façon de changer d'éditeur pour crontab.

user981836
la source