Re: [HS] si mon fichier contient la premiere ligne
On 06/02/2017 09:10 AM, David Martin wrote:
Tu avais raison, avec le \n ça fonctionne j'ai bien le compteur à 1
on peut utiliser l'astuce donnée par David Chalon faire un grep
[ "$(grep utilisateur BatchMajInfoUtilisateurEmargos20170602090001.log |
wc -l)" == "1" ] && echo 'ok' || echo 'KO'
devrait marcher.
Je vais remonter cette annomalie pour qu'il rajoute le \n dans le
fichier généré,
en attendant on me demande de faire une moulinette qui vérifie que le
script qui génère ce fichier
soit bien exécuter toutes les 15 mintues. voici son vrai nom :
voici : BatchMajInfoUtilisateurEmargos20170602090001.log
C'est ce fameux fichier qui doit contenir le \n
Je me demande bien comment faire ça, je peux rajouter dans le script
en crontab, de générer un fichier
qui contiendrait la date du jour + heure et minute du genre
je ne comprends pas trop le problème. Je veux dire tu veux savoir si le
fichier a été crée il y a moins de 15 minutes. En unix on ne connait pas
la date de création d'un fichier mais en fait dans ton cas cela ne doit
pas être un problème car j'imagine que la moulinette réécrit le meme
fichier à chaque fois.
donc la commande stat doit pouvoir etre utiliser
par exemple
stat toto.txt
renvoie
File: toto.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty
file
Device: fe01h/65025d Inode: 537127084 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1001/ AAAA) Gid: ( 1001/ AAAA)
Access: 2017-06-02 11:21:00.848700391 +0200
Modify: 2017-06-02 11:21:00.848700391 +0200
Change: 2017-06-02 11:21:00.848700391 +0200
Birth: -
donc les date d'Acces de modification et de changement sont les meme.
C'est la date de creation. Comme tu modifie pas le fichier à priori on
doit pouvoir utiliser la date de modify.
On peut donc utiliser le script suivant.
# on recupere la valeur de modify et on extrait la date que l'on
converti en timestamp (durée en seconde depuis 1970)
stattime=$(date -d "$(stat toto.txt | grep Modify | cut -c8-27)" +%s)
# on fait la différence entre la date courante et la date de
modification de fichier.
diff=$(( $(date +%s) - $stattime ))
# on calcule si cette difference est superieur a 15*60 secondes
[ $diff -gt 600 ] && echo "more than 600" || echo "less than 600"
Tu mets ces lignes et tu lance un cron toute les x minutes qui verfie
que tout est bon et si cela dépasse 15 minutes (le truc more than 600)
tu fais quelque chose (envoi d'un courriel ou autre).
Bien sur il faut tester le truc et faire attention au fait que je teste
le fichier toto.txt et pas ton fichier.
Le | grep Modify récupére la chaine de caractères Modify de la commande
stat et le cut -c8-27 récupére la chaine de caractères entre la 8 et la
27 eme position de la chaine initiale. Il faut bien regarder si cela
colle avec la sortie de stat sur ta machine.
Le timestamp est utile car comme cela on ne fait qu'une soustraction en
seconde.
Je suis pas très bon en bash et il faut peut être rajouter des tests
pour être sur que le fichier existe ou autre subtilités.
Desolé si j'ai pas bien compris le problème
L.
Reply to: