summaryrefslogtreecommitdiff
path: root/content/Informatique/2013-05-09-fcron2cron.rst
blob: f7652dcdf6fcb3f9c3b15c3805dd6d0ce81ce41c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

===============
De fcron à cron
===============

:date: 2013-05-09
:tags: Libre, Python, Administration
:summary: |summary|
:logo: /images/time/time_75.jpg
:lang: fr
:slug: fcron-to-cron

.. default-role:: literal


.. figure:: {filename}/images/time/time.jpg
    :figwidth: 150
    :figclass: floatleft
    :alt: Pavement

    Image : `Toni Verdú Carbó`_ (creativecommons_)

.. _Toni Verdú Carbó: http://www.flickr.com/photos/tonivc/2283676770/in/photostream/
.. _creativecommons: http://creativecommons.org/licenses/by-nc-nd/2.0/deed.fr

|summary|

.. |summary| replace::
    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: http://fcron.free.fr/

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.

.. _script python: {filename}/resources/fcron2cron.py

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:

.. code-block:: console

    $ 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\ [#]_.


Les directives
~~~~~~~~~~~~~~

Les directives `hourly`, `daily`\ [#]_, `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 :

.. code-block:: console

    # 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.

.. admonition:: notes :

    .. [#] Y compris les options en début de commande (ligne débutant par `&`)
    .. [#] `nightly` est traité de la même manière