Commande find et option ctime

Résolu
bob031 Messages postés 8228 Statut Membre -  
 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.

:-))
Configuration: Linux Mandriva
Firefox 2.0.0.1

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    1. bob031 Messages postés 8228 Statut Membre 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
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      avec -ctime find arrondi n*24h, c'est pour cela qu'existe cmin en minutes
      0
    3. bob031 Messages postés 8228 Statut Membre 473 > dubcek Messages postés 18627 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
    4. bob031 Messages postés 8228 Statut Membre 473 > dubcek Messages postés 18627 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
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > bob031 Messages postés 8228 Statut Membre
       
      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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    qu'affiche ls -lac /var/lib/mysql ?
    ils ont été "touchés" entre-temps
    0
    1. bob031 Messages postés 8228 Statut Membre 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
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      ctime est aussi la date du dernier chmod ou chown
      0
      1. bob031 Messages postés 8228 Statut Membre 473 > dubcek Messages postés 18627 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
  3. cours lunix
     
    je veux savoir le cours de linux est complète pour télécharger
    0