Journal des périphériques montés sous Unix [duplicate]

0

Cette question a déjà une réponse ici:

excuses à l'avance pour la question de base.

Je dois identifier le journal des périphériques montés / non montés sous Unix (y compris les horodatages lorsque ces actions sont effectuées).

J'ai remarqué que l'utilisation de la commande mount n'était pas très utile à cet effet car il n'y avait aucune indication d'horodatage lors de l'exécution des opérations de montage / démontage. Quelqu'un peut-il m'indiquer une alternative possible?

Merci d'avance! :-)

utilisateur2551168
la source
Bonjour, bienvenue à SO. Cependant, votre question convient vraiment mieux à SuperUser, le site dédié aux questions d’administration d’ordinateur.
Hong Ooi
Ok, je vais aussi poser ma question sur le forum des super-utilisateurs.
Non, attendez - demandez plutôt que celui-ci soit migré.
Makoto
as-tu essayé dmesg?
Angs
Je suis à peu près sûr que le noyau ne consigne pas (par défaut) les informations relatives aux systèmes de fichiers montés. Ajouter un 'printk' à l'appel système approprié pour afficher ses paramètres et l'heure actuelle semble être la meilleure approche.
Jules

Réponses:

0

Autant que je sache, les informations que vous recherchez ne sont pas conservées par défaut. Je suggérerais que le moyen le plus simple est probablement de modifier la commande mount pour ajouter les informations à un fichier journal quelque part, bien que cela laisse ouverte la possibilité qu'un autre programme utilise directement les appels système pertinents plutôt que d'exécuter mount. L’alternative, certes préférable, consisterait à modifier le noyau pour le faire. En supposant que vous utilisiez Linux, la modification serait relativement simple, mais toutes les modifications du noyau, même les plus simples, ont tendance à prendre un certain temps pour fonctionner correctement.

Jules
la source
Mon problème est que je suis sous Unix et je ne suis pas totalement sûr de pouvoir modifier la commande mount.
user2551168
Au lieu de cela, je regardais le
fichier
"Unix" est une spécification assez vague, son nom étant couramment utilisé pour désigner plusieurs systèmes différents. Quelle version précise d'Unix utilisez-vous?
Jules
C'est ce que je trouve avec "uname -a" Darwin Lilianas-MacBook-Pro.local 12.4.0 Kernel Darwin Version 12.4.0: mer. 1 mai 17:57:12 PDT 2013; root: xnu-2050.24.15 ~ 1 / RELEASE_X86_64 x86_64
user2551168
Dans ce cas, vous devriez pouvoir obtenir une copie du code source du noyau xnu auprès de developer.apple.com/opensource , ajouter la journalisation nécessaire dans l'appel système de montage (la fonction 'log ()' ajoute des éléments au syslog log, ce qui est probablement ce que vous voulez faire) et recompiler le noyau.
Jules
0

Autant que je sache, il n’existe pas de journalisation de ce type qui vous donne l’horodatage, à l’exception de dmesg, mais qui ne donne que le statut d’un périphérique connecté ou déconnecté.

Solution pourrait être, vous pouvez écrire un script simple pour l' enregistrement, dans une while(1)boucle qui doit contenir dateet mountcommander alongwith grepqui écrit que les données sélectionnées logfile. S'il vous plaît rappelez-vous, pour mettre sleepsuffisamment de temps pour la prochaine boucle. Ensuite, vous pouvez l'exécuter en arrière-plan.

PRASHANT
la source
Ce que j'ai fait est de créer un thread qui lit périodiquement le fichier system.log et identifie respectivement l'ID USB et le répertoire de montage à partir des lignes contenant la chaîne "Identificateur USBMSC (non unique):" et "log dir:". Je sauvegarde également les périphériques montés et le répertoire où ils sont montés dans une table de hachage. De cette manière, lorsqu'un événement de démontage est déclenché, je peux identifier le périphérique démonté en vérifiant si le répertoire de montage correspondant existe toujours. Je sais que ce n'est pas exactement le moyen le plus propre, mais cela fonctionne dans de nombreux cas. Merci de votre aide!
user2551168