IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

comment trouver le dossier qui augmenter bcp en Nb de fichiers ?


Sujet :

Administration système

  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut comment trouver le dossier qui augmenter bcp en Nb de fichiers ?
    bonjour,

    je suis sur un hébergement mutualisé sur lequel j'ai un accès SSH.
    Mon hébergeur m'impose une limite de nb de fichiers (262 144) mais pas en espace.
    depuis 2 mois, j'ai un dossier qui augmente considérablement en Nb de fichier mais je ne sais pas c'est lequel.
    Comment le détecter ?

    y-a-t-il un moyen d'avoir un fichier texte qui synthétise les choses comme ça :

    en 2024
    dossier 1 : 45 files
    dossier 2 : 46 files

    aujourd'hui
    dossier 1 : 1587 files
    dossier 2 : 46 files

    En mon absence, il n'y a personne qui uploade des choses sur le serveur et sauf erreur il n'y a pas d'applicatif qui se mette à jour tout seul, donc je me pose la question d'où provient ce dépassement soudain de 262 144 fichiers !

  2. #2
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    bon,

    manuellement j'arrive à afficher le nombre de fichiers dans un dossier :

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    find dossier1 -type f | wc -l

    pour l'instant j'ai 4 dossiers sensibles à vérifier chaque jour.

    j'arrive à envoyer le Nb dans de fichiers en créant automatiquement un fichier avec la date dans son nom :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    find dossier1 -type f | wc -l > dossier1 _$(date +%F).txt

    mais je voudrais aussi avoir le résultat (Nb de fichiers) dans le nom du fichier crée ,après la date, est-ce possible en ligne de commande pipée ?

    ce serait sympa, car de jour en jour j'aurai un histo comme ça :

    dossier1_2025-01-06_12000.txt
    dossier1_2025-01-07_12050.txt
    dossier1_2025-01-08_12075.txt
    ça m'éviterait d'aller ouvrir chaque fichier pour connaître le Nb de fichiers dans le dossier!

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 339
    Par défaut
    Je trouve ça bizarre une limite en nombre de fichier mais pas en espace, suffit de créer une archive tar ou zip et voila, tu n'as plus qu'un fichier...

    Pour moi, tu as une partition allouée dans laquelle tu as un certain nombre d'inode que tu ne peux pas dépasser.

    Après, un fichier, un lien, un répertoire utilise au minimum un inode et si un inode fait par exemple 4k et que tout tes fichiers ne font que 1k, tu auras donc 1 quart de ta partition pleine sur un point de vue espace mais tout tes inodes seront pris et donc la partition sera considéré comme pleine.

    un petit df -i pour voir ?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    je voudrais aussi avoir le résultat (Nb de fichiers) dans le nom du fichier crée ,après la date, est-ce possible en ligne de commande pipée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dir1 -type f | wc -l | xargs -I{} tee fic_$(date +%F)_{}.txt
    mais il vaudrait mieux utiliser cette commande, parce quemême si tu n'en as pas, il est possible d'avoir des noms de fichiers qui contiennent des alinéas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dir1 -type f -print0 | grep -cz '^' | xargs -I{} tee $(date +fic_%F_{}.txt)
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre expérimenté Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 135
    Par défaut proposition script
    Bonjour,

    Concernant ton problème d'espace disque et d'inodes, outre d'éventuels fichiers cachés (temporaires, de caches, de travail...) non purgés, il faut voir si n'a pas des fichiers en cours d'utilisation par des processus actifs. Si tu as un bug dans un des programmes, il se peut qu'il tourne en boucle, ou qu'il soit en attente, ou autre et qu'il occupe des ressources de façon anormal.
    Avec la commande find, tu peux lister les fichiers cachés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $HOME -type f -name ".*" -ls
    Avec la commande lsof, tu peux lister les fichiers en cours d'utilisation. En filtrant avec le chemin de ton dossier, tu peux voir quel process ID l'utilise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lsof|grep "/home/admin"

    Par rapport à ta demande, voici un petit script en shell Bash, qui peut éventuellement d'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/bin/bash
     
    # list all file in a folder, with size and inodes number for each file
     
    # Get the list of all file in the folder named "dir1"  (example)
    varDIR_NAME_PATH="$HOME"
    varDIR_NAME_FULLPATH=$(readlink -f $varDIR_NAME_PATH)
    varDIR_NAME=$(basename ${varDIR_NAME_PATH})
     
    # Display format = <Size of the file> <Number of inodes of the file> <Path of the file>
    find $varDIR_NAME_FULLPATH -type f -exec stat --format='%s %i %n' {} \; > ./find_stat_files_list.tmp
    # Sort the list by Size
    sort -rn ./find_stat_files_list.tmp > ./${varDIR_NAME}_files_size_inode_$(date +%F).list
     
    # Calculate the global size, by additionnal all the sizes of each files
    varGLOBAL_SIZE_DIR1=$(cut -d ' ' -f 1 ./${varDIR_NAME}_files_size_inode_$(date +%F).list | paste -sd+ - | bc)
     
    # Calculate the number of files in the folder dir1
    varGLOBAL_NUMBER_FILES_DIR1=$(wc -l ./${varDIR_NAME}_files_size_inode_$(date +%F).list|cut -d' ' -f1)
     
    # register the datas, to have an history
    echo "${varDIR_NAME};$varGLOBAL_SIZE_DIR1;$varGLOBAL_NUMBER_FILES_DIR1;$(date +%F)" >> ${varDIR_NAME}_datas_history.csv

    sil

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    find -type f affiche les fichiers cachés

    readlink -f est déprécié au profit de realpath.
    basename est une commande externe inutile : f=${full##*/}.
    stat est inutile : find possède une option -printf équivalente.
    etc
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre expérimenté Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 135
    Par défaut
    Ok, tu es tres fort, on le voit, 'clap clap' , merci d’être aussi directe et tranchant. c'est super sympa comme message... J'adore. Ca ne pousse pas a aider les autres. On veut aider et on se prend une réponse comme ça. Ensuite on ne comprends pas pourquoi il y a plus personne sur les forums de developpez.com


    find -type f = affiche tous les fichiers et pas que les fichiers cachés. C'est le -name qui permet de filtrer. Je ne veut pas tous les fichiers, cf mon message.

    f=${full##*/}. = c'est moins lisible pour des néophytes. je prefere 'basename', quand on réponds à un message dans un forum ou il y a tous les niveaux.


    Ok, pour les autres remarques. Mais essaie d'enrober tes remarques d'un peu de douceur et de compréhensions, ca passerai mieux
    Le but ici, n'est pas de débugueur mon script, mais d'aider 'clavier12' dans son besoin.

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    pas que les fichiers cachés
    ah, d'accord! je n'avais pas compris que tu voulais n'afficher QUE les fichiers cachés, puisque tous les fichiers doivent être comptés.

    PS:
    On veut aider et on se prend une réponse comme ça
    pareil.


    PS2:
    Le but ici, n'est pas de débugueur mon script, mais d'aider 'clavier12' dans son besoin.
    si quelqu'un te demande son chemin, et que j'en connais un plus pratique que celui que tu proposes, tu penses que je devrais ne pas intervenir ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 307
    Par défaut
    Bonjour,
    Si je peux me permettre, tout le principe d'un forum est d'échanger "sa solution" ou son point de vue, tout bien étant d'apprendre sur ce genre de forum ...
    Pour ca qu'on fais des sujets ouvert et pas une conv privé avec un "expert" dans un domaine , tout le monde ne sait pas tout ou comment le faire de manière propre.

    J'ai déjà vu des messages bien plus direct, son message est clair et pas sujet à interprétation.
    Inutile de se brusquer quand quelqu'un donne son avis.
    Au pire il a faux et tu lui apprends un truc , au mieux il a raison et c'est toi qui apprends des trucs
    Cdt

  10. #10
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dir1 -type f | wc -l | xargs -I{} tee fic_$(date +%F)_{}.txt
    mais il vaudrait mieux utiliser cette commande, parce quemême si tu n'en as pas, il est possible d'avoir des noms de fichiers qui contiennent des alinéas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dir1 -type f -print0 | grep -cz '^' | xargs -I{} tee $(date +fic_%F_{}.txt)
    merci pour ton aide.
    je ne connais pas l'utilisation de {} , ça permet donc (si j'en déduis), que ça va remplacer par le contenu du flux pipé ?
    si j'ai une seule ligne (donc un chiffre c'est ok), mais en cas d'un message d'erreur ou texte miultiligne, ça crée une erreur dans la création du nom de fichier je suppose ?

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    les messages d'erreurs s'affichent (sauf redirection de l'utilisateur) sur la sortie d'erreur standard (stderr) et ne sont pas transmis par le pipe, qui ne transmet que la sortie standard (stdout) de la première commande vers l'entrée standard (stdin) de la seconde.
    et, il ne peut pas y avoir plusieurs lignes puisque grep affiche uniquement le nombre d'occurrences du motif cherché.

    {} est, ici, une expression arbitraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ xargs --help | grep -i -- '^\s\+-I'
      -I R                         identique à --replace=R
      -i, --replace[=R]            remplacer R dans les ARGS-INITIAUX par des noms
    réfère-toi au man pour en apprendre davantage sur cette option.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Je trouve ça bizarre une limite en nombre de fichier mais pas en espace, suffit de créer une archive tar ou zip et voila, tu n'as plus qu'un fichier...

    Pour moi, tu as une partition allouée dans laquelle tu as un certain nombre d'inode que tu ne peux pas dépasser.

    Après, un fichier, un lien, un répertoire utilise au minimum un inode et si un inode fait par exemple 4k et que tout tes fichiers ne font que 1k, tu auras donc 1 quart de ta partition pleine sur un point de vue espace mais tout tes inodes seront pris et donc la partition sera considéré comme pleine.

    un petit df -i pour voir ?
    cette limite est imposé par le host je n'y peux rien, et je ne peux même pas payer plus pour l'étendre...
    la commande donne ce resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Filesystem                       Inodes    IUsed     IFree IUse% Mounted on
    tmpfs                          32967739       81  32967658    1% /dev
    /dev/mars/infongp-fr35        858993408 22652350 836341058    3% /homepages
    tmpfs                          32967739        9  32967730    1% /run
    tmpfs                          32967739        1  32967738    1% /run/lock
    /dev/mapper/vg00-tmp--chroots    640848   134719    506129   22% /tmp
    et leur panneau de contrôle donne ce nombre (aujourd'hui à l'instant):
    224496 fichiers de 262144 utilisé(s)

  13. #13
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    pour compléter (ou simplifier :-) le script de silfun1, j'ai aussi mis la main sur ces lignes de commandes qui affichent un résumé (dossier+ nb fichiers) sans créer de fichier :



    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find . -maxdepth 1 -type d | while read -r dir
    do printf "%s:\t" "$dir"; find "$dir" -type f | wc -l; done

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    le premier find est inutile :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for dir in ./*/
    do
        printf "%s:\t" "$dir"
        find "$dir" -type f -print0 | grep -cz '^'
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Comment trouver la ligne qui a le maximun?
    Par mutkas10 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/06/2009, 18h40
  2. Comment trouver la ligne qui a le maximum ?
    Par mutkas10 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2009, 18h52
  3. comment trouver le script qui envoye des spam a partir de mon compte
    Par maya24 dans le forum Autres hébergeurs
    Réponses: 3
    Dernier message: 16/10/2007, 16h19
  4. Réponses: 3
    Dernier message: 21/01/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo