9 - dnf et Cron

Cron

Introduction

Le programme cron permet de planifier des tâches.

Chaque utilisateur du système peut créer ses propres tâches planifiées.

Par défaut les tâches planifiées sont stockées dans le fichier /var/spool/cron/crontabs/

Il est possible de spécifier son propre fichier de tâches planifiées.

Les options de planification permettent toutes les combinaisons possibles même les plus complexes.

Le démon responsable de la planification se nomme : crond

La commande

Pour afficher la liste de vos tâches planifiées:

$ crontab -l

Pour supprimer les tâches planifiées:

$ crontab -r

Pour manipuler la crontab d’un autre utilisateur (il faut être root):

$ crontab -u <utilisateur>

Pour enregistrer un fichier de tâches planifiées dans la crontab:

$ crontab <fichier>

La commande sans doute la plus utilisée pour créer ou modifier une crontab (celle par défaut ou une déjà créée):

$ crontab -e

Il est aussi possible de modifier le fichier et de le passer en paramètre à nouveau à la commande crontab.

Syntaxe

Le fichier contient la liste des tâches planifiées.

À chaque appel de la commande crontab avec un fichier en paramètres, toutes les tâches planifiées sont écrasées.

Chaque ligne du fichier contient une tâche et sa planification:

15 * * * * /home/<user>/monscript.sh
30 0 * * * /usr/locl/bin/autrescript.sh
...

Chaque ligne se compose de :

  • La planification

  • La commande a exécuter en chemin absolu

La planification se compose de 5 champs (décrits plus loin).

La tâche peut être :

  • Une commande bash (uniquement des commandes simples)

  • Un script (méthode recommandée)

La commande doit être écrite avec son chemin absolu.

Une erreur dans le fichier crontab sera reconnue par crontab au moment de l’enregistrement de la tâche (seulement les erreurs de syntaxe).

Si la tâche génère des erreurs, elles seront dans le fichier /var/mail/

Lors de l’enregistrement d’un fichier de tâche, il est enregistré dans le fichier des tâches par défaut.

Des tâches du système sont déjà planifiées dans : /etc/crontab

La planification

La planification se compose de 5 champs:

Minutes Heures Jour du mois Mois Jour de la semaine
0 à 59 0 à 23 1 à 31 1 à 12 0 à 7 (dimanche à dimanche)

Les “*” signifient que la tâche doit s’exécuter à chaque unité de la mesure.

Il est possible d’énumérer des valeurs à l’aide de “,” : 1,5,6,7

Il est possible d’utiliser des intervalles: 1-10

Il est possible de sauter certaines valeurs: */2

Toutes ces possibilités peuvent être combinées pour donner des expressions dont la complexité n’a pas de limite.

Exemples

Exécuter le script tous les jour à 14h30:

30 14 * * * /chemin/script

Exécuter le script toutes les heures (à la 25ème minute) pendant le mois de mars:

25 * * 3 * /chemin/script.sh

Exécuter le script une fois par heure (à la 15ème minute) entre 9h et 17h:

15 9-17 * * * /chemin/script.sh

Exécuter le script à midi les lundis, mercredis et vendredis:

0 12 * * 1,3,5 /chemin/script.sh

Exécuter le script une heure sur deux:

0 */2 * * * /chemin/script.sh

dnf

Introduction

Pour installer une application sur Centos, il existe plusieurs possibilités:

  • Télécharger les sources, compiler et installer manuellement. Ce processus peut être long et fastidieux car beaucoup d’applications ont besoin d’autres applications ou de bibliothèques pour fonctionner.

  • Utiliser un paquet d’installation rpm. Cette méthode est plus simple mais il faudra tout de même résoudre les dépendances ce qui peut être un véritable casse-tête.

  • Utiliser dnf. dnf télécharge les applications, les installe et résout les dépendances pour vous.

Les dépôts

Les dépôts sont des serveurs sur lesquels dnf télécharge les applications et leurs dépendances.

Les dépôts sont configurés dans le répertoire /etc/yum.repo.d.

Pour obtenir la liste des dépôts configurés sur votre syste:

$ dnf repolist

Modules complémentaires chargés : fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.iweb.ca
 * epel: mirror.cs.princeton.edu
 * extras: centos.mirror.iweb.ca
 * updates: centos.mirror.iweb.ca
id du dépôt           nom du dépôt                                        statut
base/7/x86_64         CentOS-7 - Base                                     10 019
epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64      13 041
extras/7/x86_64       CentOS-7 - Extras                                      385
updates/7/x86_64      CentOS-7 - Updates                                   1 493
repolist: 24 938

Lorsque l’on souhaite installer une application, dnf parcourt la liste des dépôts configurés mais il se peut que l’application ne soit pas présente dans les dépôts.

$ dnf search dsniff

Modules complémentaires chargés : fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.ca.planethoster.net
 * epel: mirror.team-cymru.com
 * extras: centos.mirror.ca.planethoster.net
 * updates: centos.mirror.ca.planethoster.net
Attention : aucune correspondance trouvée pour : dnsiff
No matches found

On peut alors ajouter des dépôts:

$ wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

On installe ensuite le paquet rpm que l’on vient de télécharger:

$ rpm -Uvh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

Préparation...                       ########################################
Mise à jour / installation...
rpmforge-release-0.5.3-1.el7.rf       ########################################

D’autres dépôts s’installent avec dnf comme celui que nous avons déjà utilisé:

$ dnf install epel-release

Maintenant, si on cherche le paquet, on peut le trouver:

$ dnf search dsniff

Modules complémentaires chargés : fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.iweb.ca
 * epel: mirror.cs.princeton.edu
 * extras: centos.mirror.iweb.ca
 * rpmforge: repoforge.spinellicreations.com
 * updates: centos.mirror.iweb.ca
============================= N/S matched: dsniff ==============================
dsniff.x86_64 : Tools for network auditing and penetration testing

  Correspondance avec le nom ou le résumé uniquement, utilisez « search all » pour une recherche complète.

L’installation

Pour installer le paquet, rien de plus simple:

$ dnf -y install dsniff

L’option -y permet d’éviter que dnf vous demande une confirmation.

Les mises à jour

Pour mettre à jour votre système (équivalent de Windows update):

$ dnf update

Tous les paquets installés sur votre système seront mis à jour.

Évidemment cela peut prendre un peu de temps.

Avec la commande suivante, il est possible de voir toutes les updates à faire mais sans les installer:

$ dnf check-update

Il est possible de lancer la mise à jour d’une seule commande:

$ dnf update httpd

Les autres commandes

Pour chercher des informations sur un paquet depuis son nom:

$ dnf list httpd

Il est possible d’utiliser les caractères génériques:

$ dnf list httpd*

Notez que vous voyez deux rubriques: les paquets installés et les paquets disponibles.

 dnf list "*"

Cette commande permet de lister tous les paquets disponibles.

La commande suivante permet de rechercher un terme mais pas seulement dans le nom, elle fonctionne comme un grep dans le nom et la description du paquet:

$ dnf search httpd

Installation d’un paquet:

$ dnf install <paquet>

Suppression du paquet:

$ dnf remove <paquet>

Pour voir tous les dépôts installés sur votre système:

$ dnf repolist all

Pour connaître le rôle d’un paquet:

$ dnf info httpd[*]

Une des commandes les plus importantes de dnf, pour savoir dans quel paquet trouver une commande:

$ dnf provides <commande>

Ou quel paquet contient un fichier:

$ dnf provides */<fichier>

Certains paquets sont gérés grâce à des groupes pour simplifier leur gestion.

$ dnf grouplist

Avec la commande suivante vous pouvez obtenir de l’information sur un groupe:

$ dnf groupinfo "Bureau Cinnamon"

Vous pouvez installer un nouvel environnement graphique:

$ dnf group install xfce

Une fois installé, lancez le avec la commande:

$ startxfce

Le SHELL dnf

Le SHELL dnf

dnf dispose d’un shell propre dans lequel on peut entrer des commandes.

Le principal intérêt du shell est de pouvoir automatiser des installations.

On entre dans le shell dnf avec:

$ dnf shell

Vous pouvez afficher l’aide une fois que vous êtes dans le shell avec:

> help

Pour automatiser des installations, ouvrez un fichier (installation.txt) dans lequel vous entrez des commandes:

install nmap
install zsh
run

Ensuite entrez la commande:

$ dnf shell installation.txt

Vous pouvez même répondre oui en avance à toutes les questions:

$ dnf -y shell installation.txt