Commande find et option ctime

Résolu
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   -  
 cours lunix -
Bonjour,

j'essaie de créé un fichier (lancé par cron) afin de virer des fichiers !
voici ma commande que je lance au prompt pour tester:
find /var/lib/mysql/ -name mysql-bin.0\* -ctime +1 -exec rm -f {} \;


sachant que nous somme le 1er juin :
[root@localhost ~]#
ls -la /var/lib/mysql

-rw-rw---- 1 mysql mysql 117 mai 30 14:51 mysql-bin.000430
-rw-rw---- 1 mysql mysql 117 mai 30 20:32 mysql-bin.000431
-rw-rw---- 1 mysql mysql 98 mai 30 20:34 mysql-bin.000432
-rw-rw---- 1 mysql mysql 117 mai 30 22:34 mysql-bin.000433
-rw-rw---- 1 mysql mysql 117 mai 31 15:49 mysql-bin.000434
-rw-rw---- 1 mysql mysql 98 mai 31 17:00 mysql-bin.000435
-rw-rw---- 1 mysql mysql 117 mai 31 22:25 mysql-bin.000436
-rw-rw---- 1 mysql mysql 98 jun 1 09:02 mysql-bin.000437
-rw-rw---- 1 mysql mysql 3515 jun 1 09:02 mysql-bin.index

en utilisant l'option ctime +1 : pourquoi les fichiers en date du 30 mai ne sont-ils pas éliminés ??

D'avance merci.

:-))
A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
voila ce que dit la man page, c'est la même chose pour ctime
-atime n
File was last accessed n*24 hours ago. When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.

essaie avec -cmin +1440
1440 = 24h*60 min

chmod (changer les droits) et chown (changer le propriétaire d'un fichier) change la date de création du fichier (ctime)
1
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
tu sais que ................................tu es trop fort toi ! :-))

[root@localhost ~]#
find /var/lib/mysql/ -type f -name mysql-bin.0\* -cmin +1440 -exec rm -f {} \;


[root@localhost ~]# ls -lac /var/lib/mysql
-rw-rw---- 1 mysql mysql 117 mai 31 15:49 mysql-bin.000434
-rw-rw---- 1 mysql mysql 98 mai 31 17:00 mysql-bin.000435
-rw-rw---- 1 mysql mysql 117 mai 31 22:25 mysql-bin.000436
-rw-rw---- 1 mysql mysql 98 jun 1 09:02 mysql-bin.000437
-rw-rw---- 1 mysql mysql 3515 jun 1 09:02 mysql-bin.index

les fichiers du 30 mai ont bien été éliminés !

Dis moi si j'ai bien compris : pour que mtime/ctime/atime +1 fonctionne il faut que les fichiers aient été "touchés" dans les 48h précédentes, c'est bien ça ?
Donc si pas "touchés" dans les 48h précédentes : +1 ne marchera pas !

chmod (changer les droits) et chown (changer le propriétaire d'un fichier) change la date de création du fichier (ctime)

merci.


Encore merci pour ton aide.

:-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
avec -ctime find arrondi n*24h, c'est pour cela qu'existe cmin en minutes
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
toujours 2 points pas très clairs !

J'ai regardé le man find et :
The descriptions of -atime, -ctime, and -mtime were changed from the
SVID description of n "days'' to "24-hour periods". The description is
also different in terms of the exact timeframe for the n case (versus
the +n or -n), but it matches all known historical implementations. It
refers to one 86400 second period in the past, not any time from the
beginning of that period to the current time. For example, -atime 3 is
true if the file was accessed any time in the period from 72 hours to
48 hours ago.


1er point) j'ai bien saisi que le calcul se fait par "période de 24h" et non plus en "jour" ! (quoique pour moi c'est la même chose : 1jour=24h, non ?)
Il n'empêche que "jour" ou "période de 24h" les fichiers du 30 mai auraient dû être effacés.

2ème point ) j'ai cru comprendre que l'option ctime correspondait à une recherche par date de création.
je prends un exemple (plus parlant pour moi) :
soit un fichier mysql-bin.000xxx créé disons le 27 mai 2007.
A partir de là 2 possibilités :
a) ce fichier n'a pas été modifié depuis.
b) ce fichier a été modifié disons le 28 mai.

nous sommes le 1 juin 2007 et je souhaite effacer ce fichier :
j'utilise l'option ctime +3
cas a)=> je m'attends à ce que le fichier soit éliminer
cas b) => que va-t-il se passer ???


merci.
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
Beaucoup de points pas clairs !
J'abandonne ............pour le moment !

Néanmoins : problème résolu !

Merci.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

soit un fichier mysql-bin.000xxx créé disons le 27 mai 2007.
Tu sais que pour créer un fichier à la date de ton choix, tu as la commande :
touch -t "date_de_ton_choix" fichier
très commode pour faire des tests...

man touch pour plus de détails.

;-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
qu'affiche ls -lac /var/lib/mysql ?
ils ont été "touchés" entre-temps
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
Salut,

non je pense pas qu'ils aient été "touchés"
comme tu peux le voir mysql en créé de nouveaux par jour (bon j'en avais déjà viré pas mal , mais là je souhaite passer par cron)

[root@localhost ~]#
ls -lac /var/lib/mysql

-rw-rw---- 1 mysql mysql 117 mai 30 14:51 mysql-bin.000430
-rw-rw---- 1 mysql mysql 117 mai 30 20:32 mysql-bin.000431
-rw-rw---- 1 mysql mysql 98 mai 30 20:34 mysql-bin.000432
-rw-rw---- 1 mysql mysql 117 mai 30 22:34 mysql-bin.000433
-rw-rw---- 1 mysql mysql 117 mai 31 15:49 mysql-bin.000434
-rw-rw---- 1 mysql mysql 98 mai 31 17:00 mysql-bin.000435
-rw-rw---- 1 mysql mysql 117 mai 31 22:25 mysql-bin.000436
-rw-rw---- 1 mysql mysql 98 jun 1 09:02 mysql-bin.000437
-rw-rw---- 1 mysql mysql 3515 jun 1 09:02 mysql-bin.index

merci

ps : ctime c'est bien Recherche par date de création / mtime Recherche par date de dernière modification. / atime Recherche par date de dernier accès
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
ctime est aussi la date du dernier chmod ou chown
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
ctime est aussi la date du dernier chmod ou chown

heu ..j'ai pas bien compris ! Quoiqu'il en soit je n'ai fait aucun chmod ou chown sur ces fichiers !

Remarque :
au début j'avais utilisé mtime +3 qui avait bien marché en ligne de commande.
Je vais attendre quelques jours afin que de nouveaux fichiers mysql-bin.000xxx se créent ! Je pourrais recommencer mes tests !

merci à toi.
0
cours lunix
 
je veux savoir le cours de linux est complète pour télécharger
0