Tag

cron

Browsing

J’ai récemment écrit un petit script bash qui me permet de sauvegarder rapidement toutes les bases de données d’un serveur. Le script est lancé par une tâche cron automatiquement, tous les jours.

Si l’on passe l’utilisateur et le mot de passe SQL dans la requête, avec mysql ou mysqldump, vous obtiendrez très certainement le message d’avertissement suivant:

Warning: Using a password on the command line interface can be insecure.

Et pour cause : cela veut dire que n’importe qui ayant accès au serveur pourra voir, dans les logs ou avec un simple ps, vos informations de connexion à vos bases de données. Ce n’est pas ce qui se fait de mieux en matière de sécurité !

Une solution est de passer en argument un fichier qui contiendra vos données de connexion à la base de données.

Donc, au lieu d’écrire :

mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/$date-$db.sql

Il vaut mieux écrire:

mysqldump --defaults-extra-file=/etc/mysql/mysql-backup-script.cnf --databases $db > $BACKUP_PATH/$date-$db.sql

Note: L’argument --defaults-extra-file doit venir en premier, sinon il ne sera pas interprété.

Le fichier /etc/mysql/mysql-backup-script.cnf contient les identifiants de votre utilisateur SQL qui aura les droits sur chacune des bases de données à sauvegarder. Voici à quoi il ressemble:

[client]
user = backup
password = GIGANTIC_SECURE_PASSWORD

Par sécurité, on restreint les droits d’accès au fichier pour qu’il ne soit pas lisible par tout le monde:

chmod 400 /etc/mysql/mysql-backup-script.cnf

Il ne vous reste qu’à créer votre cron avec votre nouvelle commande, sans montrer les identifiants SQL en clair.

Depuis que j’ai déplacé les bases de données SQL sur une autre partition, logrotate semble avoir quelques soucis avec l’archivage des logs de MariaDB. Voici le message d’erreur complet :

/etc/cron.daily/logrotate: logrotate_script: 3: [: /var/run/mysqld/mysqld.pid: unexpected operator

C’est en fait un problème de regex connu et la solution est très simple.

1. On édite le fichier /etc/logrotate.d/mysql-server:

nano /etc/logrotate.d/mysql-server

2. on recherche la ligne avec la regex de grep:

if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then

3. on ajoute m1 aux arguments de grep, ce qui nous donne:

if [ -f `my_print_defaults --mysqld | grep -oPm1 "pid-file=\K[^$]+"` ]; then

Sauvegardez le fichier. Vous ne recevrez plus de message d’erreur lors du lancement de la tâche cron et les fichiers logs de MySQL/MariaDB seront bien archivés.

Linux : désactiver les emails de notification d'une tâche cron photo

La plupart des tâches cron sont exécutées à un moment où elles n’empiètent pas sur les ressources du serveur (i.e. la nuit). Or crontab envoie un email récapitulatif à chaque fois qu’une tâche est complétée, ce qui peut vite devenir pénible à gérer.

Heureusement, il existe plusieurs manières d’empêcher de recevoir ces emails de notification de tâches cron.

1. Méthode nucléaire : rendre la variable MAILTO nulle

Vous pouvez éditer le fichier /etc/crontab et rendre la variable MAILTO nulle, comme ceci:

MAILTO=""

Cela désactive effectivement tous les emails envoyés depuis crond. C’est par contre une méthode nucléaire : si vous voulez une notification, il faudra l’envoyer depuis le script et non cron. Cela empêche également de recevoir toute notification en cas d’erreur de la tâche cron, ce qui est très gênant – ce n’est pas vraiment la méthode que je conseille.

2. Rediriger STDOUT et STDERR vers null pour supprimer toute sortie

Si vous supprimez la sortie du script, crond n’aura rien à envoyer.

Ajoutez ceci à l’entrée de votre crontab pour envoyer toute sortie (STDERR et STDOUT) vers /dev/null:

>/dev/null 2>&1

Voici un exemple qui lance un script toutes les 5 minutes, sans sortie:

*/5 * * * * /example/script >/dev/null 2>&1

Le principal inconvénient est que cela supprime également toutes les erreurs qui pourraient être utiles au débuggage du script.

3. Configurer crond pour envoyer la sortie du script vers les logs système et désactiver la notification de la sortie

Vous pouvez configurer crond en éditant le fichier /etc/sysconfig/crond pour y changer la ligne CRONDARGS. L’argument « -s » envoie la sortie vers le log système et l’argument « -m off » désactive la notification email du résultat de la tâche.

Voici un exemple :

cat /etc/sysconfig/crond

Résultat:

# Settings for the CRON daemon.
# CRONDARGS= :  any extra command-line startup arguments for crond
CRONDARGS=-s -m off

Il faut ensuite relancer le service cron pour appliquer la nouvelle configuration avec les nouveaux arguments:

service cron restart

Conclusion

Toutes ces méthodes permettent de supprimer totalement les notifications emails du service cron lorsqu’une tâche est lancée.

Si vous souhaitez ne pas produire de sortie mais garder la possibilité de recevoir un email en cas d’erreur, pensez à rediriger STDOUT vers /dev/null:

*/5 * * * * /example/script > /dev/null

Quoi de plus normal que de regarder des séries et films en VO ? Et si vos sous-titres étaient automatiquement téléchargés sur votre NAS tous les soirs ?

Regarder des séries et films en version originale, c’est ce que je passe mon temps à faire à recommander à mes élèves – et à leurs parents lors des réunions parents-professeurs.

NAS Synology : télécharger automatiquement les sous-titres avec Subliminal photo 3

On s’affranchit souvent de ces petits fichiers textes mais il peut arriver de tomber sur une série un peu plus coriace, qui demande de bien tout comprendre si on veut vraiment saisir le fin mot de l’histoire. Bref, parfois, les sous-titres, ça peut servir.

Voici donc un petit tutoriel pour récupérer automatiquement les bons sous-titres pour vos fichiers, avec en script en ligne de commande ou exécutable par votre NAS.

Synology : installation de pip

1. Ouvrez une session SSH sur le NAS et passez root :

ssh user@NAS
sudo -i

2. Installez pip, le gestionnaire de paquets Python.

Synology : installation de subliminal

Subliminal est une librairie Python qui permet de rechercher et télécharger des sous-titres. C’est ce que nous allons lancer, soit en ligne de commande, soit par un cron sur le NAS.

Installez subliminal:

pip install subliminal

Résultat, après quelques minutes:

Successfully built pysrt enzyme guessit babelfish dogpile.cache rarfile rebulk
Installing collected packages: pytz, chardet, pysrt, enzyme, rebulk, babelfish, python-dateutil, guessit, pbr, stevedore, futures, click, dogpile.cache, rarfile, beautifulsoup4, requests, subliminal

Successfully installed babelfish-0.5.5 beautifulsoup4-4.5.3 chardet-2.3.0 click-6.7 dogpile.cache-0.6.2 enzyme-0.4.1 futures-3.0.5 guessit-2.1.1 pbr-1.10.0 pysrt-1.1.1 python-dateutil-2.6.0 pytz-2016.10 rarfile-3.0 rebulk-0.8.2 requests-2.13.0 stevedore-1.20.0 subliminal-2.0.5

Script de téléchargement automatique des sous-titres

Passons maintenant au script de téléchargement automatique de nos sous-titres. Voici mes pré-requis :

  1. dossier à scanner : /volume1/video
  2. âge maximum des fichiers pour lesquels on recherche les sous-titres : 4 weeks
  3. langue des sous-titres: eng pour l’anglais, fra pour le français. Ici, je ne souhaite que de l’anglais.

Créez donc un nouveau fichier (dans votre dossier utilisateur du NAS, pas dans root):

nano /volume1/homes/matt/subby.py

et ajoutez-y:

from datetime import timedelta
from babelfish import Language
from subliminal import download_best_subtitles, region, save_subtitles, scan_videos

# configure the cache
region.configure('dogpile.cache.dbm', arguments={'filename': 'cachefile.dbm'})

# scan for videos newer than 2 weeks and their existing subtitles in a folder
videos = scan_videos('/volume1/video', age=timedelta(weeks=10))

# download best subtitles in English
subtitles = download_best_subtitles(videos, {Language('eng')})

# save them to disk, next to the video
for v in videos:
    save_subtitles(v, subtitles[v])

Vous pouvez lancer ce script directement depuis un terminal avec :

python /volume1/homes/matt/subby.py

Mise à jour : on peut encore mieux faire ! Lassé d’avoir à installer pip et subliminal à chaque mise à jour du DSM, j’ai écrit un script bash qui gère toute l’installation (pip, subliminal) et qui lance le script python pour le téléchargement des sous-titres.

On crée notre script bash :

nano /volume1/homes/matt/subby.sh

avec :

#!/bin/bash
# Script Name : Pip and Subliminal dependences FTW
# Script Author : Matt Biscay
# Script URL : https://www.skyminds.net/nas-synology-telecharger-automatiquement-sous-titres-subliminal/
# Script Version : 1.0 (2017-07)

# working dir
cd /volume1/homes/matt

# is pip installed ?
if which pip 2>/dev/null;
then
  echo "pip is installed. Fetching subtitles..."
  python subby.py
  echo "Subs fetching complete. Enjoy !"
  exit 1
else
  echo "pip is missing. Installing it now..."

  # remove pip install file
  rm get-pip.py -f

  # fetch pip install file
  wget https://bootstrap.pypa.io/get-pip.py

  # install pip
  python get-pip.py

  # install subliminal
  pip install subliminal

  # get subs
  echo "pip and subliminal have been installed. Fetching subtitles..."
  python subby.py
  echo "Subs fetching complete. Enjoy !"
fi

Kaboom ! Si le binaire pip n’est pas présent sur le système, c’est qu’il n’a pas survécu à la mise à jour du DSM. On l’installe donc, ainsi que subliminal. Ensuite on lance le script de téléchargement.

Mise en place d’un cron pour automatiser le téléchargement des sous-titres

Si vous êtes sous Unix, vous pouvez mettre en place un cronjob avec le script tel quel.

Sur le Synology, tout se met en place en quelques clics :

  1. Rendez-vous dans Panneau de configuration > Planificateur de tâches > Créer > Tâche planifiée > Script défini par l’utilisateur:

    NAS Synology : télécharger automatiquement les sous-titres avec Subliminal photo

    Donnez un nom à votre tâche et assignez-lui un utilisateur (root).

  2. dans l’onglet Programmer, ajouter la fréquence de lancement du script :

    NAS Synology : télécharger automatiquement les sous-titres avec Subliminal photo 1

  3. enfin, dans l’onglet Paramètres de tâches, donnez le chemin du script précédé de la commande bash puisque c’est un script bash:

    NAS Synology : télécharger automatiquement les sous-titres avec Subliminal photo 4

    Ici, ce sera donc:

    bash /volume1/homes/matt/subby.sh

A vous les sous-titres synchros tous les soirs !

Ce matin, j’ai reçu ce message d’erreur de mon serveur par email :

/etc/cron.daily/logrotate:
error: line 672139 too long in state file /var/lib/logrotate/status
error: could not read state file, will not attempt to write into it
run-parts: /etc/cron.daily/logrotate exited with return code 1

log-rotateSous les systèmes GNU/linux, logrotate est le service qui archive les fichiers log de manière à ne pas travailler sur des fichiers trop lourds.

Les fichiers sont donc archivés plus ou moins régulièrement, selon leur taille et leur utilisation : certains sont archivés tous les jours, d’autres toutes les semaines.

Or, si logrotate ne fonctionne pas correctement, la taille des fichiers explose, ce qui posera tôt ou tard un souci sur le serveur.

Lorsque logrotate n’arrive pas à lire ou à écrire dans le fichier /var/lib/logrotate/status, il faut :

  1. supprimer le fichier /var/lib/logrotate/status :
    rm -rf /var/lib/logrotate/status
  2. et relancer logrotate :
    logrotate -f /etc/logrotate.conf

Le fichier /var/lib/logrotate/status ne sert finalement qu’à garder une trace de la dernière rotation des fichiers logs. Ce fichier ne devrait pas contenir énormément de lignes.

Ps : si vous utilisez Varnish, commentez les lignes le concernant dans /etc/logrotate.conf, il est peu utile d’encombrer le serveur avec les logs de ressources statiques.

Aujourd’hui, nous abordons la sauvegarde des fichiers essentiels du serveur.

Backup Manager permet d’effectuer des sauvegardes quotidiennes du système : il crée des archives dans plusieurs formats de compression (tar, gzip, bzip2, lzma, dar, zip) et peut les exporter vers un serveur FTP.

Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH photo 1

Dans notre cas, nous allons l’installer et le configurer pour envoyer tout ce qui est important sur notre serveur sur le serveur FTP externe de sauvegarde fourni gratuitement par OVH (100 Go).

Etape 1 : installation de Backup Manager

C’est classique :

apt-get install backup-manager

A la fin de l’installation, un assistant se lance et vous permet de configurer des options par défaut. Ou vous pouvez configurer à la main, comme indiqué dans l’étape suivante.

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Aujourd’hui, je vous donne les quelques news techniques du site.

Serveur Kimsufi 500G

Cela fait presque un an que SkyMinds.Net tourne sur un serveur dédié hébergé chez OVH. Le serveur était un Kimsufi avec 500 Go de disque dur. Quelques jours seulement après le transfert du site, OVH annonce le Kimsufi avec 250 Go mais… à moitié prix ! Et on ne peut rendre un serveur Kimsufi pour un autre, il s’agit de deux achats séparés.

Au niveau des performances, je dirai que mon Kimsufi 500G n’était pas terrible : il était constamment surchargé et j’avais l’impression de devoir relancer les services régulièrement pour assurer la disponibilité du service. Pas cool du tout.

ubuntuzilla

Cela fait quelques semaines que je me demande comment mettre à jour Firefox sous Ubuntu alors qu’aucune mise à jour ne semble voir le jour dans les dépôts officiels. Et voici que je tombe sur UbuntuZilla, un script Python qui permet d’installer les dernières versions de Firefox, SeaMonkey et Thunderbird sur les plateformes Ubuntu et dérivées, et cela automatiquement !

Téléchargement d’UbuntuZilla

Commencez par télécharger la version d’UbuntuZilla correspondant à votre système. Le fichier est un paquet .deb donc directement installable par Ubuntu.

WordPress n’est plus aussi rapide qu’auparavant lorsque j’écris ou que j’édite un post. Après avoir jeté un coup d’oeil à la liste de plugins ainsi qu’aux options, je me suis rendu compte (aidé par Donncha) que le plugin Google Sitemap effectuait un dump de l’ensemble du blog à chaque publication et – pire ! – à chaque enregistrement d’article ! Tout cela est bien évidemment inutile : il faut donc décocher l’option Rebuild sitemap if you change the content of your blog.

Mais désactiver cette option signifie que le fichier sitemap ne sera plus mis à jour et que Google ne sera plus informé des mises à jours, ce qui n’est pas vraiment ce qui est souhaité. Dans les options du plugin Sitemap, cochez l’option Enable manual sitemap building via GET Request et cliquez sur [?]. Vous obtenez alors une URL personnalisée qui se chargera de la mise à jour du sitemap et qui pingera Google. Deux solutions s’offrent alors à vous : soit vous cliquez cette URL après chaque publication, soit vous créez un crontab afin de forcer la regénération du sitemap à intervalles réguliers.

Qu’est-ce que CRON ?

Cron est le nom du programme qui permet aux utilisateurs Unix d’exécuter automatiquement des commandes ou des scripts à une heure spécifiée. Cron est très utile pour lancer une procédure de sauvegarde à heure fixe, optimiser une base de données ou encore supprimer les courriers indésirables de votre boîte aux lettres. C’est un peu l’équivalent Unix du planificateur de tâches de Windows.

Cron est basé sur une table référençant les tâches à lancer ainsi que l’année, le mois, le jour, l’heure et la minute à laquelle exécuter ces tâches. En fait ce que l’on appelle communément « Cron » comprend deux éléments distinctifs :

  • crond, un programme résident en mémoire (daemon) qui lance automatiquement les tâches en fonction de la table cron.
  • crontab, un fichier de configuration qui comprend les travaux programmés et la date d’exécution. C’est ce fichier qui permet l’édition de la table des tâches à ordonnancer.

Syntaxe de crontab en image

Cron : dissection

La syntaxe de crontab est donc notée de la façon suivante:

mm hh jj MMM JJJ tâche > log

Légende :

  • mm représente les minutes (de 0 à 59)
  • hh représente l’heure (de 0 à 23)
  • jj représente le numéro du jour du mois (de 1 à 31)
  • MMM représente le numéro du mois (de 1 à 12) ou l’abréviation du nom du mois (jan, feb..)
  • JJJ représente l’abréviation du nom du jour ou le chiffre correspondant au jour de la semaine (0 représente le dimanche, 1 représente le lundi …)
  • tâche représente la commande ou le script shell à exécuter
  • log représente le nom d’un fichier dans lequel stocker le journal des opérations. Si la clause > log n’est pas spécifiée, cron enverra automatiquement un courriel de confirmation. Pour éviter cela il suffit de spécifier > /dev/null

Exemples

Lancer un script PHP tous les lundis à 22h34 :

34 22 * * 1 tâche

Lancer un script PHP tous les premiers du mois à 23h59 :

59 23 1 * * GET

Faire une sauvegarde de fichiers et des bases MySQL :

Voir ce précédent tutoriel.

Voilà, vous savez maintenant l’essentiel sur Cron. A vous d’écrire ce dont vous avez besoin ;-)

This post is an extension to my former tutorial : Backup all your MySQL databases with one line of cron, which can now be considered as obsolete since some people reported having some issues with the gzip file generation.

Backup files and databases easily with cron photo

So here is another attempt at dealing with the security of your files and databases on your domain. In this tutorial, I assume your web host has Cpanel installed with the cron features that will backup everything for us at regular intervals.

To access the Cron Manager in Cpanel :

  • Go to Cpanel > Cron Jobs
  • Select the Standard or Advanced view – the choice is yours !

Let’s assume you chose the « Standard view » for the sake of simplicity and ease of configuration. First, backup your files.

Cela fait un bon bout de temps que je ne poste pas par email sur ce blog – presque un an. Et pour cause : cela n’a d’intérêt que lorsqu’on est en voyage ou que notre connectivité est limitée (oui, se connecter via un téléphone portable qui transmet à 9.6 kb/s fait partie de ces petites limitations… ;-)). Mais cela a le mérite d’être bien pratique et je vais vous en explique un peu le fonctionnement : il faut tout d’abord créer un compte email POP au nom obscur et connu de vous seul (genre 0r2td1@example.com). Tous les messages arrivant sur cette boîte aux lettres seront publiés sur le blog, lorsque vous aurez lancé le script qui vérifie et publie les messages. Le titre de l’email devient le titre de l’article et le corps de l’email est le corps de l’article. Jusque-là, rien de très compliqué. Seulement voilà, notre connectivité – rappelons-le – étant très limitée, cela ne sert à rien de poster par email s’il faut ensuite ouvrir notre navigateur pour lancer notre script de publication.

La solution à ce problème est toute simple : un petit cron ou tâche planifiée. Il suffit d’aller dans le panneau de configuration de votre serveur (CPanel) et de sélectionner « Cron » : vous pourrez alors lancer votre script de publication automatiquement, à intervalles réguliers. Petit exemple :

1 * * * * GET

Le code ci-dessus est un exemple de cron Unix. Les 5 premières valeurs sont numériques, elles correspondent respectivement aux minutes, heures, jours, mois et jours de la semaines. Une étoile signifie « tout les heures/jours/mois… ». Mon cron lance donc le script toutes les heures, tout le temps, à 01 minute (donc à 8h01, 9h01 etc). Pratique, je n’ai plus qu’à écrire mes articles par email et à les envoyer : ils apparaissent automatiquement sur le blog à chaque levée du courrier. Génial non ? C’est vraiment très utile le cron, c’est fou ce que cela me facilite la vie : je fais la même chose pour la sauvegarde du site et des bases de données. En quelques secondes, tout est sauvegardé et même envoyé sur un site FTP distant.

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :