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
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.
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 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.
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
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 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.
Pour installer le paquet, rien de plus simple:
$ dnf -y install dsniff
L’option -y
permet d’éviter que dnf vous demande une confirmation.
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
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
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