Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cron [Le 06/03/2015, 13:38]
193.57.249.4 ajout du n en gras, pour 'crontab'
cron [Le 03/03/2024, 12:57] (Version actuelle)
86.202.8.12 [Distinction avec Anacron] meilleure présentation
Ligne 5: Ligne 5:
 ====== Programmer des tâches avec CRON ====== ====== Programmer des tâches avec CRON ======
  
 +===== Qu'​est-ce que Cron  =====
 +**Cron** est un programme pour exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiée précise, ou selon un cycle défini à l’avance
 +Chaque utilisateur a un fichier **crontab**,​ lui permettant d'​indiquer les actions à exécuter.\\
 +Cron est parfois appelé « planificateur de tâches » ou « gestionnaire de tâches planifiées ».
  
 +====Distinction avec Anacron====
 +Cron est plutôt utilisé pour des machines à fonctionnement permanent (comme les serveurs).\\
 +[[Anacron]] est plutôt utilisé pour des machines à fonctionnement discontinu (comme les PC).
  
 +Cron a plus d'​options qu'​Anacron. Comme ce dernier, il peut lancer une tâche à un intervalle déterminé : par exemple chaque 5e jour de la semaine, chaque heure, ou chaque mois. Contrairement à Anacron, il peut aussi lancer une tâche à un moment pré-déterminé (« le 14 janvier 2018 à 15h 30 »). Limite par rapport à Anacron : si la machine n'est pas allumée, la tâche n'est pas lancée, et ne le sera jamais, même après le re-démarrage. __Elle est perdue__. Les prochaines seront évidement lancées, si la machine est allumée.
  
 +[[Anacron]] n'​utilise que des indications de temps relatives (« une fois par jour / par semaine / par mois »). Autre différence d'avec Cron, Si vous avez demandé une tâche toute les semaines, et que votre PC est démarré seulement au bout de 10 jours, Anacron constatera le retard, et lancera donc la tâche juste après le démarrage de votre PC.
  
-===== Qu'​est-ce que Cron ===== +Les 2 logiciels peuvent être utilisés sur un PC régulièrement éteint, mais Anacron a le gros avantage de lancer tous les traitements en retard à chaque allumage du PC, même si ceux-ci sont peu nombreux. Avec Cron, des allumages PC trop intermittents risquent d'​annuler une grande partie des traitements programmés. 
-**Cron** est le diminutif de **cron**tab qui est le diminutif de **c**h**ron**o **tab**le qui signifie table de planification.+===== Comment fonctionne ​Cron  =====
  
-**Cron** est un //daemon// utilisé pour planifier/programmer des tâches ​devant être exécutées à un moment précis. ​ Chaque utilisateur a un fichier ​**crontab**, lui permettant d'​indiquer les actions et à quelles ​ périodes, elles devront être exécutées. ​ Il y a également une **crontab** ​pour le système, permettant les tâches techniques, pour la mise à jour des différents programmes ou autres besoins périodiques. De plus, il existe ​[[gnome-schedule]] sous Gnome ou **[[apt://gcrontab|gCrontab]]** ​((disponible seulement sur [[Hardy]])), un éditeur GTK (paquet disponible via [[:Synaptic]] dans les dépôts Universe) qui permet de s'​affranchir facilement des différentes commandes décrites ci-dessous.+Les tâches planifiées cron sont définies au niveau du système dans le fichier ​/etc/crontab et dans le dossier ​/etc/cron.d/\\ 
 +Pour modifier vos tâches ​planifiées tapez : **crontab ​-e** (lance un éditeur du fichier crontab)\\ 
 +Les tâches définies dans **crontab** ​sont par principe exécutées par //[[root|root]]// (l'​utilisateur avec le maximum de droits), sans demande de mot de passe. Cela permet d'​exécuter potentiellement n'​importe quelle tâche système, d'​où ​un certain risque ​soyez prudent, et abstenez-vous si vous ne maitrisez pas bien ce que vous faite.
  
 +Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l'​ordre__ (un champ qu'on ne souhaite pas renseigner doit être rempli avec une *) :
  
 +    * //minute// de lancement (les minutes se numérotent de 0 à 59)
 +    * //heure// de lancement (les heures se numérotent de 0 à 23)
 +    * //jours dans le mois// de lancement (les jours se numérotes de 1 à 31)
 +    * //mois// de lancement (les mois se numérotent de 1 à 12, ou s'​énoncent par leur libellé abrégé anglais - jan ; feb ; mar ; apr ; ...)
 +    * //jour de la semaine// de lancement (les jours se numérotent de 1 (lundi) à 7 (dimanche), ou s'​énoncent par leur libellé abrégé anglais - sun ; mon ; tue ; wed ; thu ; fri ; sat)
 +    * La commande à lancer.
  
-===== Comment fonctionne Cron ? ===== +Récapitulatif des 5 premiers champs : 
-<note important>​Il est conseillé de ne pas modifier /​etc/​crontab directement et d'​utiliser plutôt la méthode décrite dans la section suivante (crontab -e)</​note>​ +| | 1er | 2nd | 3è | 4è | 5è | 
-Pour utiliser ​**cron**, ajoutez simplement les entrées à votre fichier ​**crontab** (situé dans le répertoire /​etc). ​ +| |  | 
-Une entrée ​dans **crontab** contient deux parties et un  __retour à la ligne__ (« \n »). : +| id | minute | heure | jour dans le mois | mois | jour de la semaine ​ | 
-  * La première partie de l'​entrée de **crontab** décrit quand l'​action sera effectuée. Il y a cinq champs, séparés par un espace ou une tabulation, et contenant un nombre, une étoile (*), ou le texte approprié. ​ Les champs sont, dans l'​ordre(( Le mois et le jour de la semaine ​permettent l'​utilisation d'une abréviation (suivant les jours et mois en anglais)telle que **jan** pour janvier (January) ​ou **thu** pour jeudi (Thursday).)) : +| valeur | 0-59 | 0-23 | 1-31 | 1-12 ou jan, febmar… | 1-7 ou montuewed… |
-    * //minute//, +
-    * //heure//, +
-    * //jour du mois//, +
-    * //mois//. +
-    * //jour de la semaine// +
-  * La seconde partie indique la commande à lancer.+
  
-L'​exemple ci-dessous exécutera ///​usr/​bin/​apt-get update//, chaque jourde chaque mois à 03:05 (le **cron** fonctionne sur 24 h) avec les droits de l'​utilisateur **nomdutilisateur**.+---- 
 +Si __//jour du mois//__ et __//​mois//​__ sont définis, __//jour de la semaine//__ n'est pas nécessaire. Cependant, si le champ est indiqué en plus, la commande sera exécutée à la date //jour du mois// et //mois// mais AUSSI tous les  //jour de la semaine// définis. 
 +Exemple avec  <​code>​0 0 13 1 5 tâche</​code>​ 
 +La "​tâche"​ (non définie ici) sera exécutée 0mn et 0H après le démarrage, le 13e jour du 1er mois (janvier) __ET__ tous les vendredis (5e J. de la semaine). 
 + 
 +---- L'​exemple ci-dessous exécutera ///​usr/​bin/​apt-get update// ​à 3:05 (5e minute de la 3e heure), chaque jour de chaque mois (les dans "​jour",​ "​mois"​ et "jours de la semaine"​)avec les droits de l'​utilisateur **nomdutilisateur**.
 <​code>​ <​code>​
 5 3  * *  * nomdutilisateur /​usr/​bin/​apt-get update 5 3  * *  * nomdutilisateur /​usr/​bin/​apt-get update
 </​code>​ </​code>​
- Vous pouvez faire tourner **cron** toutes les 5 minutes ​tout au long de la journée de travail (9am-5pm) ​avec un message : +---- Vous pouvez faire tourner **cron** toutes les 5 minutes, entre 9H à 17H, et uniquement du lundi au vendredi, ​avec un message ​"Où en es tu ?" (on met * pour les colonnes "jour dans le mois" et "​mois",​ puisqu'​on utilise pas ces données) ​:
 <​code>​ <​code>​
 */5 9-17 * * mon,​tue,​wed,​thu,​fri wall "Où en es tu ?" */5 9-17 * * mon,​tue,​wed,​thu,​fri wall "Où en es tu ?"
 </​code>​ </​code>​
- 
  
 ou vous rappeler un anniversaire à 9h du matin le 10 janvier chaque année : ou vous rappeler un anniversaire à 9h du matin le 10 janvier chaque année :
- 
 <​code>​ <​code>​
 0 9 10 jan  * echo "​C'​est l'​anniversaire de ta Maman aujourd'​hui !" >>​~/​readme 0 9 10 jan  * echo "​C'​est l'​anniversaire de ta Maman aujourd'​hui !" >>​~/​readme
 </​code>​ </​code>​
  
 +----
 Il existe des raccourcis intéressants : Il existe des raccourcis intéressants :
  
-    * @reboot # se lance au reboot ​avec les droits utilisateurs,​ bien commode+    * @reboot # se lance au boot avec les droits utilisateurs,​ bien commode
     * @yearly     * @yearly
     * @annually     * @annually
Ligne 56: Ligne 71:
     * @hourly     * @hourly
  
-Cf aussi :+Exemples de lancements de tâches ​:
  
-   man 5 crontab+chaque demie-heure (***/30** est une instruction,​ pas deux) 
 +<​code>​*/​30 * * * * commande</​code>​
  
 +chaque heure, au début de l'​heure (0 minute au démarrage de l'​heure) :
 +<​code>​0 * * * * commande</​code>​
 +chaque heure, à la 30e minute de l'​heure :
 +<​code>​30 * * * * commande</​code>​
  
-Pour exécuter des applications graphiquesil faut tout d'​abord être sûr que l'​usager root a accès au //display// si jamais le contrôle d'​accès est actif (cf. **xhost**), par exemple en exécutant (soi-même, ou en rajoutant la ligne dans un script de démarrage comme //​rc.local//​) : +chaque heuremais uniquement entre 9h00 et 5h00 
-<​code>​ +<​code>​0 ​9-5 * * * commande</​code>​
-xhost + local:​root +
-</​code>​ +
-Puis il faut préciser quel //display// utiliser lors de l'​exécution de la commande à cron en ajoutant DISPLAY=//​nom_du_display//​ au début de la commande à exécuter ; par exemple : +
-<​code>​ +
-* * * DISPLAY=:​0.0 totem "​mon_fichier_son.mp3"​ +
-</​code>​+
  
 +Cf. aussi :
  
-Vous pouvez générer une commande grâce à  **[[http://​www.openjs.com/​scripts/​jslibrary/​demos/​crontab.php|cet outil]]**. +   man 5 crontab
-===== Commande pour Cron =====+
  
-Pour regarder le contenu de votre **crontab**,​ tapez : 
  
-<​code>​+Vous pouvez générer le code grâce à ces outils en ligne : 
 +https://​crontab.guru 
 +https://​crontab-generator.org 
 +http://​www.cronmaker.com 
 +===== Commandes pour gérer les tâches planifiées Cron ===== 
 + 
 +Pour examiner les tâches planifiées de l'​utilisateur courant (le contenu de votre **crontab**),​ tapez : 
 + 
 +<​code ​bash>
 crontab -l crontab -l
 </​code>​ </​code>​
  
-Pour éditer le fichier de votre **crontab**, ​tapez :+Pour modifier vos tâches planifiées ​tapez :
  
-<​code>​crontab -e</​code>​+<​code ​bash>crontab -e</​code>​ 
 +et pour modifier celles d'un autre utilisateur :​ 
 +<code bash>​sudo crontab -e -u nom_utilisateur</​code>​
  
-Quand vous sortez de l'​éditeur,​ le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ///​var/​spool/​cron/​crontabs/<​user>//​ mais doit seulement être édité ​par l'​intermédiaire de la commande **crontab**.+Quand vous sortez de l'​éditeur,​ le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ///​var/​spool/​cron/​crontabs/<​user>//​ mais doit seulement être modifié ​par l'​intermédiaire de la commande **crontab**.
  
 Note : sur xubuntu, il faut auparavant indiquer que l'​utilisateur a le droit d'​utiliser crontab. Pour cela il faut créer un fichier ///​etc/​cron.allow//​ et y saisir le nom des utilisateurs autorisés à utiliser crontab. Note : sur xubuntu, il faut auparavant indiquer que l'​utilisateur a le droit d'​utiliser crontab. Pour cela il faut créer un fichier ///​etc/​cron.allow//​ et y saisir le nom des utilisateurs autorisés à utiliser crontab.
Ligne 92: Ligne 115:
 sudo update-alternatives --config editor sudo update-alternatives --config editor
 </​code>​ </​code>​
-ou par :+ou par un :
   select-editor   select-editor
   ​   ​
-<note tip> ​ Lors du premier accès à "crontab -e" ​un menu apparaît et donne le choix de l'​éditeur à utiliser.</​note>​+<note tip> ​ Lors du premier accès à « crontab -e » un menu apparaît et donne le choix de l'​éditeur à utiliser.</​note>​ 
 + 
 +Certains environnements de bureau, comme KDE dans sa « Configuration du système », offrent une interface graphique pour gérer les tâches cron. 
 + 
 + 
 ===== Lancement graphique ===== ===== Lancement graphique =====
-Si vous avez besoin ​d'une interface graphique par exemple pour utiliser zenity, kdialog, dialog ou encore totem, vlc, ... Il vous faudra ​effectuer plusieurs choses : +Par défaut, l'​exécution de **cron** n'​affiche rien. Si vous avez besoin ​de démarrer ​une interface graphique par exemple pour utiliser ​[[zenity|zenity]], kdialog, dialog ou encore ​[[totem|totem]][[vlc|vlc]], ... Il vous faudra ajouter un **DISPLAY=:0** devant la commande ​lancée. Exemple :
-1° ajouter un DISPLAY=:0 devant la commande ​dans le cron. +
-Exemple :+
 <​code>​ <​code>​
 */5 * * * * DISPLAY=:0 zenity --info --text="​Toto va bien" */5 * * * * DISPLAY=:0 zenity --info --text="​Toto va bien"
Ligne 106: Ligne 132:
 <note important>​Il est parfois nécessaire de faire "xhost +" dans un terminal pour autoriser l'​accès à X</​note>​ <note important>​Il est parfois nécessaire de faire "xhost +" dans un terminal pour autoriser l'​accès à X</​note>​
  
-2° Si vous utilisez un script nécessitant des caractères tels que des accents, n'​oubliez pas d'​ajouter un export LANG="​fr_FR.UTF-8"​ ou LANG="​fr_BE.UTF-8"​ au début de ce script. ​D'autre part il est grandement conseillé ​de mettre le chemin absolu vers les exécutables et fichiers. +===== Caractères UTF8 ===== 
-Exemple :+Si vous utilisez un script nécessitant des caractères tels que des accents, n'​oubliez pas d'​ajouter un export ​**LANG="​fr_FR.UTF-8"​** ou **LANG="​fr_BE.UTF-8"​** au début de ce script. 
 + 
 +===== Chemin des scripts, commandes à exécuter ou fichiers à utiliser ===== 
 +Cron n'a pas de PATH par défaut. Il est donc __grandement conseillé__ ​de mettre le chemin absolu vers les exécutables et fichiers. Exemple :
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Ligne 116: Ligne 145:
 </​code>​ </​code>​
  
 +===== Utilisation des répertoires /​etc/​cron.hourly,​ daily, weekly, monthly ​ =====
 +
 +Si vous avez examiné le fichier /​etc/​crontab de votre système, vous avez remarqué qu'il contient des tâches pour exécuter toutes les heures, jours, semaines, mois les fichiers contenus dans les dossiers /​etc/​cron.hourly,​ daily, weekly, monthly.
 +
 +Si vous avez besoin qu'un script soit exécuté toutes les heures au niveau du système (par root), il suffit donc de le placer dans le dossier /​etc/​cron.hourly et de le rendre exécutable. De même s'il s'agit d'une tâche quotidienne (daily), hebdomadaire (weekly) ou mensuelle (monthly).
 +
 +
 +===== Utilisation du répertoire /​etc/​cron.d ​ =====
 +IL est possible d'​éditer des services à exécuter automatiquement en rajoutant un fichier du nom que l'on souhaite dans le répertoire /​etc/​crond.d
 +
 +Attention contrairement aux lignes d'un fichier crontab, elles doivent préciser quel utilisateur (nom_utilisateur dans l'​exemple ci-dessous) ​ exécute le script :
 +<​code>​* * * * * nom_utilisateur /bin/touch /​home/​me/​ding_dong</​code>​
  
 ===== Autres Considérations ===== ===== Autres Considérations =====
Ligne 123: Ligne 164:
 <​code>​sudo crontab -e</​code>​ <​code>​sudo crontab -e</​code>​
  
-Remarque : cette commande édite directement le fichier // /​var/​spool/​cron/​crontabs/​<​utilisateur>​// (avec ici root comme utilisateur).+Remarque : cette commande édite directement le fichier // /​var/​spool/​cron/​crontabs/​root//
  
-Selon les commandes à exécuter, vous devrez changer la variable ​//PATH// des utilisateurs ayant les droits ​//root// en mettant la ligne suivante au dessus de leurs fichiers **crontab** :+Une autre façon de créer une tâche planifiée devant être exécutée par root est d'​ajouter une entrée au fichier ​/etc/crontab ou de créer un nouveau fichier dans /etc/cron.d (cf. point précédent) en précisant bien root comme nom d'​utilisateur.
  
 +==== Répertoires ====
 +Une tâche cron est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d'​environnement habituelles et en particulier **PATH** ne sont pas connues.
 +
 +Il faut donc soit mettre les emplacements complets des exécutables dans les commandes et les scripts appelés par cron, soit définir PATH dans le fichier crontab :
 <​code>​ <​code>​
-PATH=/​usr/​sbin:/​usr/​bin:/​sbin:/​bin+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/​bin:/​usr/​sbin:/​usr/bin
 </​code>​ </​code>​
 +Il peut être utile d'​identifier le chemin où se trouve votre exécutable,​ exemple avec python :
 +<code bash>
 +which python3
 +# peut par exemple retourner
 +/​home/​mon-compte/​miniconda3/​bin/​python3
 +</​code>​
 +
 +De même, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l'​exécution de votre script par un changement de répertoire :​
 +<code bash>
 +* * * * * cd /​home/​mon-compte/​wokspace/​ && /​home/​mon-compte/​miniconda3/​bin/​python3 mon_script.py
 +</​code>​
 +
 +==== Tests ====
  
-Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer ​le travail dans la **crontab** pour qu'il se fasse quelques minutes plus tard et de vérifier les résultats, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile de mettre ​les résultats ​des commandes dans un fichier texte qui notent ​les succès ou les échecs, par exemple :+Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer la tâche dans le **crontab** pour qu'elle s'​exécute ​quelques minutes plus tard et contrôler le résultat, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile d'​envoyer ​les retours ​des commandes dans un fichier texte pour voir les succès ou les échecs, par exemple :
  
 <​code>​ <​code>​
Ligne 137: Ligne 195:
 </​code>​ </​code>​
  
-**NOTA IMPORTANT:​** Dans le cas où votre **crontab** refuserait ​de s'exécuter, vérifiez que vous disposez bien du package mailutils. +Une autre façon ​de contrôler la bonne exécution des tâches cron est d'utiliser sa capacité ​à envoyer des courriels
-En effet, **cron** logue ses actions en envoyant un mail à l'​utilisateur courant+Pour cela il suffit de renseigner la variable MAILTO dans votre fichier crontab, exemple ​
-<​code>​ +<​code>​MAILTO="​jean.dupont@example.com"</​code>​ 
-sudo apt-get install mailutils +**Attention**, pour que cela fonctionne ​il faut que votre machine soit capable d'​envoyer des courriels. (voir par exemple ​[[msmtp|MSMTP]] ou [[postfix_systeme_satellite|Système Satellite pour Postfix]], [[exim4-satellite|Système satellite pour exim4]])
-</​code>​ +
-edit : si vous ne voulez / pouvez pas envoyer d'​email,​ pas besoin d'​installer mailutils, ​il suffit de rajouter au tout début ​+
-<​code>​ +
-MAILTO=""​ +
-</​code>​ +
-et si ça ne marche toujours pas alors il se peut que le démon ​**cron** soit planté, il faut le réinitialiser en faisant ​: +
-<​code>​ +
-sudo service cron restart +
-</​code> ​+
  
-Pour plus d'informationregardez ​les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:​tutoriel:​console_ligne_de_commande|les commandes basiques]]). ​Si votre machine est régulièrement éteintevous pouvez également être intéressé par **at** (fait partie ​de l'installation de base d'​Ubuntu) et **anacron** (à trouver dans le dépôt `universe repository`) qui fournit d'autres approches aux tâches programmées.+Pour plus d'informationslisez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:​tutoriel:​console_ligne_de_commande|les commandes basiques]]). ​ 
 +Sur une machine ​qui n'est pas allumée en permanence, **[[anacron|anacron]]** (installé par défaut) permet ​de s'assurer que les taches cron sont bien exécutées en vérifiant ​à intervalles régulier si une tâche n'est pas en retard.
  
  
 +==== Log ====
 +Par défaut on retrouve des logs de commandes CRON dans ///​var/​log/​syslog//​ mais ce n'est pas très pratique.\\
 +Pour activer le log spécifique de CRON:\\
 +Éditer le fichier ///​etc/​rsyslog.d/​50-default.conf//​ qui est appelé par ///​etc/​rsyslog.conf//​ et décommenter la ligne
 +<code bash>
 +cron.* ​                        /​var/​log/​cron.log
 +</​code>​
  
 +Relancer //rsyslog// et //cron//
 +<code bash>
 +sudo systemctl restart rsyslog
 +sudo systemctl restart cron
 +</​code>​
 +Il ne reste plus qu'à surveiller les logs de CRON:
 +<code bash>
 +sudo tail -f /​var/​log/​cron.log
 +</​code>​
  
-<​note>​Cron,​ comme [[anacron]] devraient être remplacés par [[fcron]], plus souple ​et remplissant les fonctions ​des deux logiciels.\\  +et si vous voulez ​des tâches silencieuses ((https://unix.stackexchange.com/questions/​163352/​what-does-dev-null-21-mean-in-this-article-of-crontab-basics)),​ ajouter à la fin de vos lignes CRON <code bash> > /dev/null 2>&​1</​code>​ pour rediriger les messages ET les erreurs vers le « trou noir ».
-18/07/2014 : une version stable de fcron est disponible [[http://fcron.free.fr/]]</note> +
 ===== Liens ===== ===== Liens =====
 +  * [[https://​help.ubuntu.com/​community/​CronHowto]] (EN)
   * [[http://​www.math-linux.com/​spip.php?​article16|Programmation des tâches régulières : crontab]]   * [[http://​www.math-linux.com/​spip.php?​article16|Programmation des tâches régulières : crontab]]
   * [[:​nano|Editeur de texte de Crontab : gnu nano]]   * [[:​nano|Editeur de texte de Crontab : gnu nano]]
   * [[incron]] : effectuer une action, commande(s),​ scripts, etc, en cas de modifications de fichiers ou de répertoires donnés   * [[incron]] : effectuer une action, commande(s),​ scripts, etc, en cas de modifications de fichiers ou de répertoires donnés
   * [[https://​www.easycron.com/​|EasyCron - Cron Jobs Alternatives]]   * [[https://​www.easycron.com/​|EasyCron - Cron Jobs Alternatives]]
 +  * [[:​Anacron]] : planificateur de commande « anachronique »
 +  * [[fcron]] : programmer des tâches devant être exécutées/​
 +  * [[https://​askubuntu.com/​questions/​23009/​why-crontab-scripts-are-not-working|why crontab scripts are not working?]]
  
 ---- ----
  
-//​Contributeurs : Martigo, [[:​contributeurs|Les contributeurs d'​Ubuntu-fr]],​ l'​entreprise Simplistay. +//​Contributeurs : Martigo, [[:​contributeurs|Les contributeurs d'​Ubuntu-fr]],​ l'​entreprise Simplistay.//​
-//+
  • cron.1425645487.txt.gz
  • Dernière modification: Le 06/03/2015, 13:38
  • par 193.57.249.4