Bonjour,
Je viens de commencer dans une très grande entreprise française connu.
Ils ont développé leur propre outil de monitoring (type Nagios).
Cependant plusieurs personnes se sont relayés sur ce développement, et l'organisation logique de certain script est devenu assez aléatoire …
Existe t-il une solution simple pour savoir quel script a généré mon log ?
je fais d'énorme find /data -name "*" -exec grep -Hn "nomdefichier" {} \;
en espérant trouver le fichier qui possède la ligne "> nomdefichier" dans les résultat.
Mais cela prend énormément de ressource, car je dois travailler sur plusieurs centaines de giga et en plus le nom de mon log n'est pas toujours en clair dans le script car souvent il est de la form "> $site-$environement-monlog.log".
A l'aide,
Merci.
# lsof
Posté par NeoX . Évalué à 6.
si le script ecrit actuellement dans le log,
un simple
lsof /chemin/vers/fichier.log
devrait te dire qui ce sert de ce fichier.ex chez moi
# rahh
Posté par cterra1 . Évalué à 1.
Oui je connais cette commande, mais je ne pense pas que cela m'aidera, un crontab est planifié tous les matins, il lance une dizaine de script qui lancent chacun quelques scripts ,qui lancent des scripts …. sur 1200 machines et à la fin un script met à jour mon fichier, donc j'aurai du mal à prévoir le moment exact pour planifier mon lsof avec un "at" …
Peut on auditer l'accès au fichier comme avec lsof mais sur plusieurs minutes ?
[^] # Re: rahh
Posté par NeoX . Évalué à 5.
en bourrinant ?
va lancer
lsof
toutes les 10 secondes et comme lsof ne renvoie rien s'il n'a rien trouver, tu devrais avoir ton resultatde plus il prend aussi les wildcards, par exemple
lsof /var/log/monappli/*
du coup si tu fais un watch avant de partir, ou lancer juste avant le demarrage des crons, que tu rediriges vers ton propre fichier de log (dans un autre dossier), tu dois pouvoir obtenir une liste de fichier utilisés et par quelles applis.
ex chez moi
y a plus qu'à faire un peu de nettoyage…
comme ne recuperer que la colonne 1 et 9 (script, log)
ou bien 1, 3 et 9 (script, utilisateur, log)
classer et supprimer les doublons
et ca donne :
[^] # Avec un pipe nommé ?
Posté par chimrod (site web personnel) . Évalué à 3.
Est-ce qu'il n'est pas possible de remplacer ton fichier par un pipe nommé, qui serait lu par un programme qui resterai en tâche de fond.
Dès que le processus écrit dans les logs, le programme détecte des données sur l'entrée standard et lance le lsof pour savoir qui est en train d'écrire.
Je propose l'idée mais je n'ai pas expérimenté…
[^] # Re: rahh
Posté par Xavier Combelle (site web personnel) . Évalué à 1.
oui avec sysdig
# C'est du peut être...
Posté par orel . Évalué à 7.
…mais tu peux tenter ta chance avec inotifywait et essayer un truc du genre :
inotifywait -e modify /chemin/vers/le/log && lsof /chemin/vers/le/log
J’avoue, je n'ai jamais testé.
inotify sur linuxfr
detecting-which-process-is-creating-a-file
# non
Posté par cterra1 . Évalué à 2.
Oui mais je ne peux pas installer ce que je veux, je suis sur de la prod, et on utilise des versions qui doivent être validées, et pareil pour les applications, choses qui peut prendre très longtemps …
Sinon j'aurai testé auditdb …
[^] # Re: non
Posté par NeoX . Évalué à 6.
je penses que tu voulais repondre à la proposition inoitifywait.
pour repondre à une personne, il faut cliquer sur "repondre" en dessous de son post,
et non sur "poster un commentaire" qui va repondre au post initial
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.