Linux : Les services système

Contrôler les processus avec lsof

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez les avantages de la commande lsof, capable de vous présenter tous les fichiers ouverts par un processus particulier. Vous pourrez également visualiser les processus qui accèdent à un fichier donné.
07:10

Transcription

Sur tous les processus qui tournent sur ma machine, je vais avoir un certain nombre d'outils qui vont me permettre de les gérer, de voir par exemple la consommation qu'ils vont faire, on a vu les commandes « top », « ps » qui permet de les lister et j'ai une commande absolument magique qui s'appelle la commande « lsof » qui va me permettre d'explorer ce qu'est en train de faire le processus. Cette commande « lsof », elle existe sur la plupart des Unix. Si elle n'est pas installée, vous pouvez le faire et elle va avoir comme objectif d'aller visualiser les fichiers ouverts. Le nom peut être trompeur parce que fichier ouvert : « ls openfile » c'est ce que ça veut dire, les fichiers représentent tout ce qui est présent dans la machine. Ça va beaucoup plus loin que tout simplement les fichiers classiques. Je vais commencer en me posant la question mon fichier « /var/log/messages » : quels sont les processus qui ont ouvert ce fichier, que ce soit en lecture ou en écriture ? C'est la commande « lsof » qui me permet de répondre à cette question. Si je fais ça, j'ai un message qui est dû à l'interface graphique qui est utilisée ici mais si je fais ça, je vais voir que le « /var/log/messages » est ouvert en lecture « FD » car j'ai un petit « r » ici par le processus « abrt-watch », alors, il me manque la fin, et c'est le processus numéro 517. C'est étrange car je pensais que le « rsyslog » l'aurait ouvert, peut-être que ce n'est pas le cas, peut-être que mon « rsyslog » ne tourne pas, je vais en profiter pour le regarder. « systemctl status rsyslog » pourtant il est ouvert mais il n'est pas en train d'écrire dedans, je ne sais pas pourquoi, il ne l'a pas ouvert en écriture. Ça doit être dans la configuration que j'ai changée tout à l'heure. Donc là, j'ai le processus 517 qu'il a ouvert. Si je regarde par contre mon processus « rsyslog » qui a comme numéro le 22.162 cette fois je peux me poser la question inverse : quels sont les fichiers ouverts par ce processus 22.162 ? Ce n'est pas à partir du fichier que je trouve le processus mais c'est à partir du processus que je vais regarder quels sont fichiers qui ont été ouverts. Je peux à nouveau faire cela avec cette commande « lsof » « lsof -p » comme processus suivi du numéro du processus et là, il m'en affiche toute une tripotée. Si je remonte un peu, je vais remonter là, que vais-je avoir comme informations ? Ici, il m'affiche le nom de la commande, c'est la commande « rsyslogd », son numéro de processus et l'utilisateur qui l'a lancé. Je vais aller relativement vite car il y a beaucoup de choses que l'on pourrait dire là dessus, mais pour vous compreniez les fondamentaux de cette commande « lsof ». Dans la colonne « FD », j'ai de quelle manière il l'a ouvert la manière « cwd » qui veut dire « current working directory » le répertoire de travail et cela veut dire que le répertoire « / » est celui dans lequel se trouve le processus. Si le processus regardait quels étaient les fichiers présents dans son répertoire, il verrait les répertoires de « / » Le deuxième, le « rtd » c'est : quel est le répertoire « / » pour le processus ? Là, il correspond au répertoire « / » du système. Sans m’appesantir là dessus, sans parler pendant des heures, ça correspond à une valeur différente quand le processus est lancé dans un environnement « ch root » Ensuite, le « FD » « txt », ce n'est pas du texte, le « FD » « txt » va m'indiquer le fichier qui a été utilisé et qui contient les données binaires qui sont exécutées dans la mémoire de la machine. C'est le fichier exécutable. Là, c'est le fichier « /usr/sbin/rsyslogd » Ensuite, j'ai plein d'entrée « mem », toutes ces entrées, à part les deux premières qui sont liées à systemd, toutes les autres correspondent à des fichiers « .so » qui sont dans le répertoire « /usr/lib64 » Toutes ces entrées-là correspondent à des bibliothèques partagées, ce sont les « dlf » qu'on a sous Windows par exemple, c'est la même idée, le même fonctionnement qui ont été chargés par « rsyslogd » pour pouvoir fonctionner. Tous ces fichiers-là sont des bibliothèques partagées que « rsyslogd » utilise. Ensuite, on en a trois intéressants ici d'une part « 0r » « 1w » « 2w » Le « 0r » correspond à l'entrée standard habituellement connectée au clavier, sauf que « rsyslogd » n'est pas attaché à un terminal. Comme il n'y est pas attaché, il n'est pas connecté à un clavier donc son entrée standard, comme on dit, est connectée à rien du tout donc « /dev/null » Le « 1w » correspond à la sortie standard quand je lance la commande « ls » le résultat s'affiche à l'écran, ça passe par la sortie standard et encore une fois, c'est un « daemon » donc pas attaché au terminal donc ça vaut « /dev/null » et la sortie « 2w » c'est la même chose sauf que ce n'est pas pour la sortie standard, c'est pour la sortie d'erreur, rattachée au terminal, comme il n'y a pas de terminal, c'est « /dev/null ». La sortie « 3 » et la « 4 », on le voit, ce sont des adresses IP où on écoute avec le protocole «UDP » sur le port de « syslog ». Ce port est un numéro affiché ici. Vous ne voyez pas de numéro parce qu'il essaye de bien m'afficher les choses et il a remplacé le numéro par le nom qui y est associé. Si jamais je veux connaître le numéro, il faut que je fasse un « grep syslog » dans le fichier « /etc/services » Il a vu un numéro, typiquement, c'est 514 et il l'a remplacé par « syslog » parce que dans le répertoire « /etc/services » on lui a dit en « udp 514 » c'est « syslog ». Si jamais je fais ça, voilà : 514 en « udp », il a mis le nom « syslog», voilà. C'est tout simplement ça. J'écoute en « IPv4v», en «IPv6 » Ici, il y a « eventpoll » et « inotify » c'est un mécanisme dans le noyau qui va me permettre de déclencher des événements quand il va se passer des opérations. Ensuite j'ai la liste des fichiers, qui va communiquer avec « systemd ». Ensuite, j'ai 8,1 8,1 8,1 qui sont des fichiers qui sont ouverts en « w » donc en écriture. J'ai donc la liste des fichiers ouverts en écriture. Je n'arrivais pas lire mon fichier « /var/log/messages » tout simplement parce qu'il a été effacé et à partir de ce moment-là « rsyslog » n'a pas été relancé donc il est resté connecté sur l'ancien. Ça doit être dans les manipulations que j'ai réalisées pendant la journée. Voilà, on a vraiment la liste de tous les fichiers qui ont été ouverts, que ce soit en lecture, en bibliothèque partagée ou au niveau réseau, du processus. C'est donc vraiment une commande très intéressante et puisqu'elle arrive à lire des données au niveau du réseau, je vais même en profiter pour vous afficher le résultat de la commande : « lsof -i » qui va m'afficher, non pas ce qui a été ouvert pour un processus donné ou un fichier donné mais tout ce qui va concerner le réseau I comme « Inet » ou « Internet » tout ce qui correspond au réseau va être visible dans cette commande-là. Je vois quel processus a ouvert quel numéro de port; avec quel protocole. Cette commande « lsof » est vraiment une commande extrêmement importante à connaître puisqu'elle va vous permettre de savoir quand vous avez lancé des processus quels sont les fichiers ouverts, qu'est-ce qui va manquer, pourquoi il n'arrive pas à faire quelque chose, etc. C'est vraiment une commande à garder sous le coude.

Linux : Les services système

Découvrez les services qui tournent en permanence sur votre système et adaptez-les en fonction de vos besoins. Abordez la gestion des logs, la synchronisation horaire, etc.

2h16 (22 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :25 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !