Série RHCSA : Gestion des paquets Yum, automatisation des tâches avec Cron et surveillance des journaux système – Partie 10

Dans cet article, nous passerons en revue comment installer, mettre à jour et supprimer des packages dans Red Hat Enterprise Linux 7. Nous expliquerons également comment automatiser des tâches à l’aide de cron, et nous terminerons ce guide en expliquant comment localiser et interpréter les fichiers journaux système, en mettant l’accent sur l’enseignement de l’importance de ces compétences pour tout administrateur système.

RHCSA: Yum Package Management, Cron Job Scheduling and Log Monitoring – Part 10

Gestion des packages via Yum

Pour installer un package ainsi que toutes ses dépendances qui ne sont pas déjà installées, vous utiliserez :

# yum -y install package_name(s)

nom_du_package(s) représente au moins un vrai nom de package.

Par exemple, pour installer httpd et mlocate (dans cet ordre), tapez :

# yum -y install httpd mlocate

Note : La lettre y dans l’exemple ci-dessus contourne les invites de confirmation que yum présente avant d’effectuer le téléchargement et l’installation réels des programmes demandés. Vous pouvez la laisser de côté si vous le souhaitez.

Par défaut, yum installera le package avec l’architecture correspondant à celle du système d’exploitation, sauf si elle est substituée en ajoutant l’architecture du package à son nom.

Par exemple, sur un système 64 bits, yum install package installera la version x86_64 du package, tandis que yum install package.x86 (si disponible) installera la version 32 bits.

Il y aura des moments où vous voudrez installer un paquet mais que vous ne connaissez pas son nom exact. Les options de recherche tout ou recherche peuvent rechercher les dépôts activés actuellement pour un certain mot-clé dans le nom du paquet et/ou dans sa description, respectivement.

Par exemple,

# yum search log

recherchera les dépôts installés pour les paquets contenant le mot « log » dans leur nom et leur résumé, tandis que

# yum search all log

cherchera le même mot-clé dans la description du paquet et les champs url.

Une fois la recherche renvoyant une liste de paquets, vous voudrez peut-être afficher plus d’informations sur certains d’entre eux avant de les installer. C’est là que l’option info sera utile:

# yum info logwatch
Search Package Information

Vous pouvez vérifier régulièrement les mises à jour avec la commande suivante:

# yum check-update

La commande ci-dessus renverra tous les paquets installés pour lesquels une mise à jour est disponible. Dans l’exemple illustré dans l’image ci-dessous, seul rhel-7-server-rpms a une mise à jour disponible:

Check For Package Updates

Vous pouvez ensuite mettre à jour ce paquet seul avec la commande suivante:

# yum update rhel-7-server-rpms

S’il y a plusieurs paquets qui peuvent être mis à jour, yum update les mettra tous à jour en une seule fois.

Et que se passe-t-il lorsque vous connaissez le nom d’un exécutable, comme ps2pdf, mais que vous ne savez pas quel paquet le fournit? Vous pouvez le découvrir avec la commande yum whatprovides "*/[executable]":

# yum whatprovides “*/ps2pdf”
Find Package Belongs to Which Package

Maintenant, en ce qui concerne la suppression d’un paquet, vous pouvez le faire avec la commande yum remove package. Facile, n’est-ce pas? Cela montre que yum est un gestionnaire de paquets complet et puissant.

# yum remove httpd

Lire aussi: 20 commandes Yum pour gérer la gestion des packages RHEL 7

Bon vieux RPM simple

RPM (alias RPM Package Manager, ou originellement RedHat Package Manager) peut également être utilisé pour installer ou mettre à jour des packages sous forme de packages autonomes .rpm.

Il est souvent utilisé avec les indicateurs -Uvh pour indiquer qu’il doit installer le package s’il n’est pas déjà présent ou tenter de le mettre à jour s’il est installé (-U), produisant une sortie détaillée (-v) et une barre de progression avec des marques de hachage (-h) pendant l’opération. Par exemple,

# rpm -Uvh package.rpm

Une autre utilisation typique de rpm est de produire une liste des packages actuellement installés avec la commande rpm -qa (abréviation de query all) :

# rpm -qa
Query All RPM Packages

Lire aussi: 20 commandes RPM pour installer des packages dans RHEL 7

Planification des tâches à l’aide de Cron

Linux et d’autres systèmes d’exploitation de type Unix incluent un outil appelé cron qui vous permet de planifier des tâches (c’est-à-dire des commandes ou des scripts shell) pour qu’elles s’exécutent périodiquement. Cron vérifie chaque minute le répertoire /var/spool/cron à la recherche de fichiers portant le nom des comptes dans /etc/passwd.

Lors de l’exécution des commandes, toute sortie est envoyée à l’utilisateur du crontab (ou à l’utilisateur spécifié dans la variable d’environnement MAILTO dans le fichier /etc/crontab, s’il existe).

Les fichiers crontab (créés en tapant crontab -e et en appuyant sur Entrée) ont le format suivant :

Crontab Entries

Donc, si nous voulons mettre à jour la base de données locale des fichiers (utilisée par locate pour trouver des fichiers par nom ou motif) tous les deuxièmes jours du mois à 2h15 du matin, nous devons ajouter la ligne de crontab suivante :

15 02 2 * * /bin/updatedb

La ligne de crontab ci-dessus signifie : « Exécuter /bin/updatedb le deuxième jour du mois, tous les mois de l’année, quel que soit le jour de la semaine, à 2h15 du matin« . Comme vous l’avez sûrement deviné, le symbole étoile est utilisé comme caractère générique.

Après avoir ajouté une tâche cron, vous pouvez voir qu’un fichier nommé root a été ajouté à l’intérieur de /var/spool/cron, comme nous l’avons mentionné précédemment. Ce fichier répertorie toutes les tâches que le démon crond doit exécuter :

# ls -l /var/spool/cron
Check All Cron Jobs

Dans l’image ci-dessus, le crontab de l’utilisateur actuel peut être affiché en utilisant soit cat /var/spool/cron/root, soit

# crontab -l

Si vous avez besoin d’exécuter une tâche de manière plus précise (par exemple, deux fois par jour ou trois fois par mois), cron peut également vous aider à le faire.

Par exemple, pour exécuter /mon/script le 1er et le 15ème de chaque mois et envoyer toute sortie vers /dev/null, vous pouvez ajouter deux lignes crontab comme suit :

01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

Mais pour rendre la tâche plus facile à gérer, vous pouvez combiner les deux entrées en une seule :

01 00 1,15 * *  /my/script > /dev/null 2>&1

En suivant l’exemple précédent, nous pouvons exécuter /mon/autre/script à 1h30 le premier jour du mois tous les trois mois :

30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

Mais lorsque vous devez répéter une certaine tâche toutes les « x » minutes, heures, jours ou mois, vous pouvez diviser la position correcte par la fréquence souhaitée. La commande crontab suivante a exactement la même signification que la précédente :

30 01 1 */3 * /my/other/script > /dev/null 2>&1

Ou peut-être avez-vous besoin d’exécuter une certaine tâche à une fréquence fixe ou après le démarrage du système, par exemple. Vous pouvez utiliser l’une des chaînes suivantes au lieu des cinq champs pour indiquer l’heure exacte à laquelle vous souhaitez que votre tâche s’exécute :

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Lire aussi : 11 commandes pour planifier des tâches cron sous RHEL 7

Localisation et vérification des journaux

Les journaux système sont situés (et tournés) dans le répertoire /var/log. Selon la norme de hiérarchie du système de fichiers Linux, ce répertoire contient des fichiers journaux divers, qui sont écrits dans ce répertoire ou dans un sous-répertoire approprié (comme audit, httpd ou samba dans l’image ci-dessous) par les démons correspondants pendant le fonctionnement du système :

# ls /var/log
Linux Log Files Location

D’autres journaux intéressants sont dmesg (contient tous les messages de la mémoire tampon de l’anneau du noyau), secure (enregistre les tentatives de connexion nécessitant une authentification utilisateur), messages (messages système) et wtmp (enregistre toutes les connexions et déconnexions des utilisateurs).

Les journaux sont très importants car ils vous permettent d’avoir un aperçu de ce qui se passe en permanence dans votre système, et de ce qui s’est passé dans le passé. Ils représentent un outil inestimable pour dépanner et surveiller un serveur Linux, et sont donc souvent utilisés avec la commande tail -f pour afficher en temps réel les événements au fur et à mesure de leur enregistrement dans un journal.

Par exemple, si vous souhaitez afficher des événements liés au noyau, tapez la commande suivante :

# tail -f /var/log/dmesg

De même si vous souhaitez consulter les accès à votre serveur web :

# tail -f /var/log/httpd/access.log

Résumé

Si vous savez comment gérer efficacement les paquets, planifier des tâches et où chercher des informations sur le fonctionnement actuel et passé de votre système, vous pouvez être assuré de ne pas rencontrer de surprises très souvent. J’espère que cet article vous a aidé à apprendre ou à actualiser vos connaissances sur ces compétences de base.

N’hésitez pas à nous contacter en utilisant le formulaire de contact ci-dessous si vous avez des questions ou des commentaires.

Source:
https://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/