De fcron à cron

Debian Wheezy est sortie, et cette nouvelle version a fait un peu de ménage dans les paquets disponibles. Parmi ceux-ci, fcron a disparu. Il s’agit du gestionnaire de tâche planifiées que j’utilisais jusqu’alors. Ce petit guide a pour vocation de vous expliquer comment migrer la configuration.

Fcron avait l’avantage de pouvoir gérer l’arrêt de la machine, et lancer les tâches en attente lors du redémarrage. Quand on s’auto-héberge, cela permet de prendre en charge les coupures inopinées, et se passer du couple cron/anacron. Debian a fait le choix de préférer ce dernier couple plutôt que fcron, voici donc un petit guide pour passer de l’un a l’autre.

Migration?

Pour commencer, pas de panique, le paquet est supprimé des dépôts, mais reste parfaitement fonctionnel sur votre machine. Vous n’avez donc pas besoin de vous précipiter, tout va continuer de tourner tout seul comme auparavant. Vous pouvez même choisir de ne pas migrer et continuer à l’utiliser. Toutefois, si des failles de sécurités sont trouvées sur le programme, aucune mise à jour ne sera effectuée: c’est à vous de vous tenir informé du développement de l’application et de faire l’installation.

La transformation

Voici un script python qui se charge de faire la migration d’un fcrontab vers un crontab. Il ne fait que générer les fichiers de configuration, et n’enregistre rien sur le système. Le script va lire les fcrontab enregistrées dans le répertoire /var/spool/fcron/ et génère en sortie les crontab correspondantes pour chacun de ces utilisateurs.

Usage

Le programme doit être lancé en root pour pouvoir lire les fichiers présents dans le répertoire /var/spool/fcron/ ainsi que les fcrontabs des différents utilisateurs du système:

$ mkdir crontabs
$ cd crontabs
$ sudo python ~/fcron2cron.py

Il y a beaucoup moins de paramètres chez cron que fcron, il est toutefois possible de convertir quelques instructions:

Les options

Les seules options possibles dans cron sont celles qui concernent le mail:

mail(bool) devient MAILTO=”“ si bool est à false mailto(string) devient MAILTO=”string”

Les autres options sont ignorées[1].

Les directives

Les directives hourly, daily[2], weekly, monthly sont transformées en leur équivalent dans cron, ainsi que leur équivalent mid-*ly. Les directives mins, hours, days, mons, dow ne sont pas prises en compte et sont ignorées dans la ligne générée.

L’édition

Le programme ne fait pas l’insertion de la crontab dans le système, ainsi, dans le cas ou une telle crontab existe déjà, elle ne sera pas écrasée. C’est à l’adminstrateur de mettre le paramétrage à jour. Une fois le script lancé, des fichiers UTILISATEUR.crontab vont être générés.

Si l’utilisateur n’a pas de crontab correspondante, il est possible de le charger directement avec la commande suivante:

# crontab -u ${USER} ${USER}.crontab

Si l’utilisateur possède déjà une crontab, il va falloir éditer le fichier pour le faire correspondre. Maintenant qu’il ne reste plus que ça à faire, il est temps de se remonter les manches et y aller à la main! Une fois que les modifications sont faites, vous pouvez désinstaller fcron de votre système.

Notes

[1] Y compris les options en début de commande (ligne débutant par &)
[2] nightly est traité de la même manière
Vus : 1057
Publié par Chimrod : 44