Vous n'êtes pas identifié(e).
j ai verifie en manipulant des modifications mais cela ne fonctionne quelqu un aurait il une idee et voudrait bien m aider
merci
Edit à toto :
Mise de la balise code bash pour donner de la couleur au code du script.
Voir le tuto : Le code, ça pique moins les yeux en couleur
Hors ligne
Hors ligne
je dois réaliser un script bash afin de determiner quand le contenu d un fichier est modifié
Je pense qu'il faut soit récupérer une info comme la date de la dernière modification ou la taille du fichier afin de faire une comparaison...
Un instant et je reviens...
Sinon en attendant j'ai corrigé un ton script... mais je ne l'ai pas encore testé !
Pour info si tu mets le "then" sur la même ligne que le if il faut un ";" si tu fais un retour à la ligne ce n'ai pas nécessaire.
Dernière modification par Slyfox (16-01-2016 17:29:40)
Hors ligne
Qui permet de prendre connaissance de l'api noyau, ça peut être intéressant.
Je ne sais pas si il existe des programmes utilisateurs qui permettent un accès simple
à cette interface depuis bash. Par contre, cela existe en python, perl et ruby…
Hors ligne
Pour le lancer il faut ouvrir un terminal puis
Après on peu essayer de comparer la date de création et la date de la dernière modification...
Je reviens...
Dernière modification par Slyfox (16-01-2016 17:46:03)
Hors ligne
inotifywait du paquet inotify-tools
iwatch du paquet iwatch
Iwatch semble être conçu pour des environnements exigeants. inotifywait pourrait
mieux correspondre à ton besoin d'après ce que j'ai lu dans le descriptif des paquets
vu que je n'ai jamais utilisé ces outils. Cependant, c'est une voie intéressante à explorer.
Hors ligne
Dernière modification par Slyfox (16-01-2016 18:00:11)
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Je dois m'absenter un instant... je reviens dans une heure...
Hors ligne
où fichier1 et fichier2 sont les fichiers à comparer.
Hors ligne
Hors ligne
Le code n'est pas parfait, il peut arriver qu'on loupe une
modification si le fichier est modifié avant la copie, par exemple
il peut arriver aussi d'autres problèmes avec ce genre de code…
Cette technique qui consiste à faire une boucle d'attente avec
sleep, s'appelle le polling. En principe, il vaut mieux éviter
de faire du polling car on occupe le processeur inutilement.
Le « sleep 1 » demande au processus de dormir pendant au moins une
seconde, ce qui fait que ce n'est pas très précis.
Enfin, bon voilà
Dernière modification par enicar (16-01-2016 20:03:43)
Hors ligne
re bonjour Slyfox
peux tu me dire a quoi correspond cette ligne car je débute et je n ai pas l habitude
# modification de l'IFS pour qu'il passe en saut de ligne
old_IFS=${IFS} IFS=$'\n'
merci d avance
Mais avec plaisir, du moins je vais essayer.
IFS Séparateur interne du champ de saisie.
Cette variable détermine la façon dont Bash reconnaît les champs ou les limites de mots lorsqu'il interprète des chaînes de caractères.
Si on modifie rien, la valeur par défaut est un espace blanc mais peut être changé, par exemple, pour analyser un fichier de données séparées par des virgules ou un retour chariot ou ce qu'on l'on veut.
Voici un exemple...
Comme tu peux le voir dans le deuxième exemple j'ai modifié IFS par un retour de chariot et dans le troisième j'ai choisi la lettre "o" comme séparateur.
J’espère avoir répondu à ta question, n'hésite pas si tu as encore des questions, il y a plein de gens ici qui se feront le plaisir te de répondre.
Dernière modification par Slyfox (16-01-2016 20:39:51)
Hors ligne
mais apparemment celui ci ne fonctionne pas même qd les fichiers n ont pas ete modifies
quelqu un aurait il une idee
merci d avance a tous pour votre aide
Edit (bis) à toto :
Mise de la balise code bash pour donner de la couleur au code du script. Voir par Modifier en bas à droite pour ce qu'il en est dans ce post.
Voir le tuto : Le code, ça pique moins les yeux en couleur
Hors ligne
Hors ligne
Hors ligne
Je te propose ce script, qui attend que le fichier passé en argument
soit modifié, j'appelle ce script attente_de_modification.bash
Il faut que je t'explique comment on s'en sert. D'abord
tu crées un fichier sans importance :
Dans un terminal, tu lances le script attente_de_modification.bash
Tu ouvres un autre terminal, et tu tapes la commande suivante
On ajoute une ligne à fichier_test, la commande
inotifywait va être notifié par le noyau que le fichier est modifié
et le script attente_de_modification.bash va se terminer.
Tu pourras le voir dans le premier terminal, ça affichera :
Bon, j'espère que tu arriveras à faire fonctionner cet exemple
Hors ligne
1 les fichiers sont vides pour vérifier s il me renvoie bien qu aucun de ces fichiers n a été modifié mais il me renvoie à chaque fois que le fichier a ete modifie
En réalité, ton script te dit que les deux horodatages sont différents.
Je te propose un exemple basé sur ton code, mais mis à ma sauce, et à utiliser
comme mon script précédent (c'est à dire avec deux terminaux), celui-ci
je l'appelle attente_changement_horodatage.bash :
Pour modifié l'horodatage, tu peux te servir de la commande touch.
Donc tu vas créer un fichier test :
Dans un premier terminal, tu lances le script d'attente :
Dans le second terminal, tu exécutes la commande suivante :
Et tu regardes ce qu'il se passe dans le premier terminal
Hors ligne
Hors ligne
Hors ligne