Outils pour utilisateurs

Outils du site


issue70:tutoriel_cron

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édentesRévision précédente
Prochaine révision
Révision précédente
issue70:tutoriel_cron [2013/05/25 21:31] – [10] fredphil91issue70:tutoriel_cron [2013/05/26 14:24] (Version actuelle) – [12] auntiee
Ligne 8: Ligne 8:
 Each user specifies their schedule via a “crontab” which can be listed or edited via the crontab command. We can list our crontab with the crontab -l command:** Each user specifies their schedule via a “crontab” which can be listed or edited via the crontab command. We can list our crontab with the crontab -l command:**
  
-C'est très facile à mettre en place - même si, plus tard, je vais utiliser un exemple un peu compliqué pour illustrer l'utilisation.+C'est très facile à mettre en place - même si, plus tard, je vais utiliser un exemple un peu compliqué pour en illustrer l'utilisation.
  
 Si vous avez plusieurs utilisateurs configurés sur votre machine, chaque utilisateur a sa propre programmation indépendante qu'il peut configurer. Si vous avez plusieurs utilisateurs configurés sur votre machine, chaque utilisateur a sa propre programmation indépendante qu'il peut configurer.
  
-Les utilisateurs expérimentés reconnaîtront qu'il s'agit d'une description de Cron, pré-installé sur pratiquement toutes les machines Linux. L'utilisation de cron par root est quelque peu différente, et est utilisée par certaines fonctions du système nous allons donc l'ignorer.+Les utilisateurs expérimentés reconnaîtront qu'il s'agit d'une description de cron, pré-installé sur pratiquement toutes les machines Linux. L'utilisation de cron par root est quelque peu différente, et est utilisée par certaines fonctions du systèmenous allons donc l'ignorer.
  
 Chaque utilisateur définit sa programmation via un « crontab » qui peut être affiché ou modifié via la commande crontab. Nous pouvons afficher notre crontab avec la commande crontab -l : Chaque utilisateur définit sa programmation via un « crontab » qui peut être affiché ou modifié via la commande crontab. Nous pouvons afficher notre crontab avec la commande crontab -l :
Ligne 25: Ligne 25:
 There are 5 fields to specify the date – and the formats can be made quite complicated.** There are 5 fields to specify the date – and the formats can be made quite complicated.**
  
-Vous trouverez toujours ces commentaires descriptifs dans votre crontab et vous devez les conserver. Pour personnaliser votre crontab, vous devez ajouter une (ou plusieurs) lignes contenant des informations d'horodatage et une commande (ou un script) à exécuter.+Vous trouverez toujours ces commentaires descriptifs dans votre crontab et vous devez les conserver. Pour personnaliser votre crontab, vous devez ajouter une (ou plusieurs) lignes contenant des informations d'horodatage et une commande (ou un script) à exécuter.
  
-Cron est un démon qui tourne en tâche de fondet qui exécutera vos commandes au moment approprié.+Cron est un démon qui tourne en tâche de fond et qui exécutera vos commandes au moment approprié.
  
-Remarque : vos commandes seront exécutées avec vos privilèges d'utilisateuril n'est pas possible d'obtenir des privilèges élevés en utilisant sudo, etc.+Remarque : vos commandes seront exécutées avec vos privilèges d'utilisateur il n'est pas possible d'obtenir des privilèges élevés en utilisant sudo, etc.
  
-Il y a 5 champs pour préciser la date et les formats peuvent être rendus assez compliqués.+Il y a 5 champs pour préciser la dateet les formats peuvent être rendus assez compliqués.
  
 ====== 3 ====== ====== 3 ======
Ligne 44: Ligne 44:
 Le séparateur entre chacun des cinq champs est toujours un ou plusieurs espaces (ou des tabulations). Chaque champ peut contenir des spécifications complexes telles que 1-5,10-15 (mais ce sont généralement soit un astérisque, soit un seul nombre). Les traits d'union et les virgules ne sont pas des séparateurs de champ. Le séparateur entre chacun des cinq champs est toujours un ou plusieurs espaces (ou des tabulations). Chaque champ peut contenir des spécifications complexes telles que 1-5,10-15 (mais ce sont généralement soit un astérisque, soit un seul nombre). Les traits d'union et les virgules ne sont pas des séparateurs de champ.
  
-Chacun est généralement un certain nombre d'unités. Ainsi par exemple 2,4,6 signifie une exécution à 2 unités, 4 unitéset 6 unités. Une autre variante est 2-5, qui est la même chose que 2,3,4,5. Si nous voulons une exécution à chaque occasion valide, nous devons indiquer *. Écrire quelque chose comme */10 signifie une exécution une fois toutes les 10 unités (donc */10 dans le domaine des minutes signifie à 00,10,20,30,40,50 minutes après l'heure).+Chacun est généralement un certain nombre d'unités. Ainsi par exemple 2,4,6 signifie une exécution à 2 unités, 4 unités et 6 unités. Une autre variante est 2-5, qui est la même chose que 2,3,4,5. Si nous voulons une exécution à chaque occasion valide, nous devons l'indiquer avec *. Écrire quelque chose comme */10 signifie une exécution une fois toutes les 10 unités (donc */10 dans le domaine des minutes signifie à 00,10,20,30,40,50 minutes après l'heure).
  
 Nous pouvons également utiliser des noms dans les champs où cela a un sens. Nous pouvons également utiliser des noms dans les champs où cela a un sens.
Ligne 69: Ligne 69:
 Minute de l'heure (0 - 59) Minute de l'heure (0 - 59)
  
-2ème champ+2e champ
 Heure de la journée (0 - 23) Heure de la journée (0 - 23)
  
-3ème champ+3e champ
 Jour du mois (1 - 31) Jour du mois (1 - 31)
  
-4ème champ+4e champ
 Mois de l'année (1 - 12 ou feb, jun, etc.) Mois de l'année (1 - 12 ou feb, jun, etc.)
  
-5ème champ +5e champ 
-Jour de la semaine (0 - 7 ; 0 et 7 signifient dimanche ; ou des noms: mon, tue, wed, etc.)+Jour de la semaine (0 - 7 ; 0 et 7 signifient tous les deux dimanche ; ou des noms: mon, tue, wed, etc.)
  
 ====== 5 ====== ====== 5 ======
Ligne 119: Ligne 119:
 would be suitable – with the script making an early exit if it isn't actually the very last day of the month.** would be suitable – with the script making an early exit if it isn't actually the very last day of the month.**
  
-Supposons que vous souhaitez enregistrer les journaux (log) avec une très mauvaise connexion, en utilisant un script écrit par l'utilisateur nommé .whatip.sh qui est un fichier (caché) dans le répertoire racine, vous pouvez exécuter la commande suivante :+Supposons que vous souhaitiez enregistrer dans les journaux (log) les problèmes avec une très mauvaise connexion, en utilisant un script écrit par l'utilisateur nommé .whatip.sh qui est un fichier (caché) dans le répertoire racine, vous pouvez exécuter la commande suivante :
  
 */10 * * * * [ -x .whatip.sh ] && bash .whatip.sh 2>/dev/null */10 * * * * [ -x .whatip.sh ] && bash .whatip.sh 2>/dev/null
  
-Cela s'exécute toutes les 10 minutes. La commande [ -x .whatip.sh ] teste si le fichier exécutable existeet seulement si c'est le cas le && permet l'exécution du script (qui écrit dans un fichier de log) ; le 2>/dev/null permet d'ignorer tous les affichages écran.+Cela s'exécute toutes les 10 minutes. La commande [ -x .whatip.sh ] teste si le fichier exécutable existe etseulement si c'est le casle && permet l'exécution du script (qui écrit dans un fichier de log) ; le 2>/dev/null permet d'ignorer tous les affichages écran.
  
 Malgré la richesse des possibilités pour spécifier les heures auxquelles une commande doit être exécutée, il y a certaines spécifications qui ne peuvent pas être facilement indiquées, comme « exécuter le dernier jour du mois ». Pour de tels cas, une programmation d'exécution telle que : Malgré la richesse des possibilités pour spécifier les heures auxquelles une commande doit être exécutée, il y a certaines spécifications qui ne peuvent pas être facilement indiquées, comme « exécuter le dernier jour du mois ». Pour de tels cas, une programmation d'exécution telle que :
Ligne 129: Ligne 129:
 0 1 28-31 * * un-script 0 1 28-31 * * un-script
  
-serait appropriée avec un script qui prévoit une sortie précoce si ce n'est pas réellement le dernier jour du mois.+serait appropriéeavec un script qui prévoit une sortie précoce si ce n'est pas réellement le dernier jour du mois.
  
 ====== 7 ====== ====== 7 ======
Ligne 144: Ligne 144:
 Modification du crontab : en utilisant la commande crontab -e. Modification du crontab : en utilisant la commande crontab -e.
  
-Ceci n'utilisera sans doute pas votre éditeur normal, comme gedit, mais un plus basique comme nano. C'est parfait pour éditer les fichiers de configuration et travailler dans un environnement non graphique.+Ceci n'utilisera sans doute pas votre éditeur normal, comme gedit, mais un plus basiquecomme nano. C'est tout à fait suffisant pour éditer les fichiers de configuration et travailler dans un environnement non graphique.
  
-Vous avez toujours des touches telles que Inser, Suppr, Effacer le caractère précéden. La navigation (haut, bas, etc.) se fait via les touches fléchées ainsi que page précédente et page suivante. Cependant, vous n'avez pas de barres de défilement d'aucune sorte.+Vous avez toujours des touches telles que Inser, Suppr, Retour arrière. La navigation (haut, bas, etc.) se fait via les touches fléchées ainsi que page précédente et page suivante. Cependant, vous n'avez pas de barres de défilement d'aucune sorte.
  
-Les touches de fonction sont listés en bas mais vous n'avez besoin que de deux d'entre elles.+Les touches de fonction sont listées en basmais vous n'avez besoin que de deux d'entre elles.
  
 Faites défiler jusqu'à la dernière ligne et saisissez vos modifications à votre crontab. Faites défiler jusqu'à la dernière ligne et saisissez vos modifications à votre crontab.
Ligne 171: Ligne 171:
 Si vous souhaitez désactiver une spécification de crontab, commentez-la en insérant un # en début de ligne. Si vous souhaitez désactiver une spécification de crontab, commentez-la en insérant un # en début de ligne.
  
-Il est assez difficile de trouver une ligne de crontab qui fait un travail utile, sans le transformer en un script mais j'ai un bon exemple (le mérite en revient à un auteur inconnu).+Il est assez difficile de trouver une ligne de crontab qui fasse un travail utile, sans le transformer en un scriptmais j'ai un bon exemple (le mérite en revient à un auteur inconnu).
  
 ====== 9 ====== ====== 9 ======
Ligne 186: Ligne 186:
 find ~/.thumbnails -type f -atime +7 -exec rm '{}' \;** find ~/.thumbnails -type f -atime +7 -exec rm '{}' \;**
  
-D'abord, le problème : si vous déplacez un bon nombre de fichiers, Nautilus va créer un petit fichier de vignette pour eux. Si vous déplacez un fichier, vous obtenez une autre vignette, et si vous regardez vos répertoires système vous allez générer plusieurs milliers de vignette. Le problème est que Nautilus ne supprime jamais les vignette.+D'abord, le problème : si vous déplacez un bon nombre de fichiers, Nautilus va créer un petit fichier de vignettes pour eux. Si vous déplacez un fichier, vous obtenez une autre vignette, et si vous regardez vos répertoires systèmevous allez générer plusieurs milliers de vignettes. Le problème est que Nautilus ne supprime jamais les vignettes.
  
 Pour vérifier si vous avez un problème, entrez la commande suivante : Pour vérifier si vous avez un problème, entrez la commande suivante :
Ligne 192: Ligne 192:
 du -sbh .thumbnails du -sbh .thumbnails
  
-Je reçois une valeur de 20M soit 20 Mo (cela représente environ 1000 vignettes). Vous pouvez voir une valeur beaucoup plus grande.+Je reçois une valeur de 20M soit 20 Mo (cela représente environ 1 000 vignettes). Vous pouvez voir une valeur beaucoup plus grande.
  
 La solution : chaque jour, j'exécute une tâche cron pour supprimer les vignettes qui ont été consultées pour la dernière fois il y a plus de 7 jours. La commande dans la ligne crontab est : La solution : chaque jour, j'exécute une tâche cron pour supprimer les vignettes qui ont été consultées pour la dernière fois il y a plus de 7 jours. La commande dans la ligne crontab est :
Ligne 219: Ligne 219:
 find ~/.thumbnails -type f -atime +7 -exec ls '{}' \; | more find ~/.thumbnails -type f -atime +7 -exec ls '{}' \; | more
  
-Remarquez que le remplacement de la commande rm par la commande ls.+Remarquez le remplacement de la commande rm par la commande ls.
  
 Une fois que vous êtes satisfait de l'opération, vous pouvez entrer une indication de l'heure et la commande contenant l'opération rm dans votre crontab. Évidemment, vous voudrez peut-être changer la valeur de +7 en fonction de votre machine. Mon entrée crontab est la suivante : Une fois que vous êtes satisfait de l'opération, vous pouvez entrer une indication de l'heure et la commande contenant l'opération rm dans votre crontab. Évidemment, vous voudrez peut-être changer la valeur de +7 en fonction de votre machine. Mon entrée crontab est la suivante :
Ligne 228: Ligne 228:
  
 ====== 11 ====== ====== 11 ======
-If you have multiple users, you will need to repeat for each one.+**If you have multiple users, you will need to repeat for each one.
  
 Your crontab is actually stored in a sub-directory of the /var directory – so a system upgrade where you choose to replace all your system files (even if you retain your /home directory) will cause your crontabs to be lost. However, it is important that you edit your crontab only via the crontab command, as this incorporates some important error checking. Your crontab is actually stored in a sub-directory of the /var directory – so a system upgrade where you choose to replace all your system files (even if you retain your /home directory) will cause your crontabs to be lost. However, it is important that you edit your crontab only via the crontab command, as this incorporates some important error checking.
Ligne 234: Ligne 234:
 Excursionary note Excursionary note
  
-If you have not performed an install which involved overwriting your /home directory in the last year or two, then the thumbnail removal entry may work slightly differently – but the difference is marginal and rather historical.+If you have not performed an install which involved overwriting your /home directory in the last year or two, then the thumbnail removal entry may work slightly differently – but the difference is marginal and rather historical.** 
 + 
 +Si vous avez plusieurs utilisateurs, vous devrez répéter ceci pour chacun. 
 + 
 +Votre crontab est en fait stocké dans un sous-répertoire du répertoire /var - donc une mise à niveau du système où vous choisissez de remplacer tous vos fichiers système (même si vous conservez votre répertoire /home) entraînera la perte de votre crontab. Cependant, il est important de modifier votre crontab seulement via la commande crontab, car elle contient une vérification d'erreur importante. 
 + 
 +Remarque en passant 
 + 
 +Si vous n'avez pas effectué une installation qui écrase votre répertoire /home depuis un an ou deux, la suppression des vignettes peut fonctionner un peu différemment - mais la différence est marginale et plutôt historique.
  
 ====== 12 ====== ====== 12 ======
-Originally, in addition to setting creation and modification timestamps on files, Linux always recorded file access timestamps (this is the -atime in our crontab entry). This can be inefficient, since reading a file always caused an additional write (to update the access timestamp). It is now possible to indicate that you don't want any atime updates to take place – and this is the current default.+**Originally, in addition to setting creation and modification timestamps on files, Linux always recorded file access timestamps (this is the -atime in our crontab entry). This can be inefficient, since reading a file always caused an additional write (to update the access timestamp). It is now possible to indicate that you don't want any atime updates to take place – and this is the current default.
  
-Note that frequently accessed directories would always be looked at more often than every 7 days and so (under the old scheme), their thumbnails would never be deleted. Under the new scheme, atime is never updated, and so even these thumbnails would be deleted and very quickly recreated every 7 days. It's not a noticeable problem for thumbnails – although I understand one or two older applications find the atime change to be a problem.+Note that frequently accessed directories would always be looked at more often than every 7 days and so (under the old scheme), their thumbnails would never be deleted. Under the new scheme, atime is never updated, and so even these thumbnails would be deleted and very quickly recreated every 7 days. It's not a noticeable problem for thumbnails – although I understand one or two older applications find the atime change to be a problem.** 
 + 
 +À l'origine, en plus de tracer l'horodatage de création et de modification sur les fichiers, Linux enregistrait toujours l'horodatage d'accès aux fichiers (c'est le -atime dans notre ligne crontab). Cela peut être inefficace, puisque la lecture d'un fichier provoquait toujours une écriture supplémentaire (pour mettre à jour l'horodatage d'accès). Il est maintenant possible d'indiquer que vous ne voulez pas de mises à jour atime, et c'est le réglage par défaut actuel. 
 + 
 +Notez que les répertoires fréquemment utilisés seront toujours consultés plus souvent que tous les 7 jours et ainsi (avec l'ancien système), les vignettes ne seraient jamais supprimées. Avec le nouveau système, atime n'est jamais mis à jour ; ainsi, même ces vignettes seraient supprimées et très rapidement recréées tous les 7 jours. Ce n'est pas un problème perceptible pour les vignettes - même si je comprends qu'une ou deux applications anciennes trouvent que le changement du atime est un problème.
  
 ====== 13 ====== ====== 13 ======
-To check your setting enter:+**To check your setting enter:
  
 cat /etc/fstab | grep /home cat /etc/fstab | grep /home
Ligne 254: Ligne 266:
 (My /home is mounted as ext3 – yours is probably ext4). (My /home is mounted as ext3 – yours is probably ext4).
  
-I have manually changed /etc/fstab to mount everything as noatime – which means no access timestamps are updated, just like the modern default. If you don't see noatime listed, or you see atime in its place, you should consider modifying your fstab file to use the noatime option unless there is a special reason not to.+I have manually changed /etc/fstab to mount everything as noatime – which means no access timestamps are updated, just like the modern default. If you don't see noatime listed, or you see atime in its place, you should consider modifying your fstab file to use the noatime option unless there is a special reason not to.** 
 + 
 +Pour vérifier vos paramètres, saisissez : 
 + 
 +cat /etc/fstab | grep /home 
 + 
 +dans un écran de terminal ; ça m'affiche 2 lignes. 
 + 
 +# /home was on /dev/sda7 during installation 
 + 
 +UUID=0648d2d1-9a41-4257-8b79-dfc7bc227e82 /home ext3  defaults,noatime   
 + 
 +(mon /home est monté en ext3 - le vôtre est probablement ext4). 
 + 
 +J'ai changé manuellement le fichier /etc/fstab pour monter tout en noatime, ce qui signifie pas d'horodatage d'accès mis à jour, tout comme le réglage moderne. Si vous ne voyez pas noatime dans la liste, ou voyez atime à la place, vous devriez envisager de modifier votre fichier fstab pour utiliser l'option noatime, à moins qu'il n'y ait une raison particulière de ne pas le faire. 
issue70/tutoriel_cron.1369510311.txt.gz · Dernière modification : 2013/05/25 21:31 de fredphil91