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

Shell et commandes GNU Discussion :

Filesystem et point de montage


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut Filesystem et point de montage
    Bonjour à tous,
    j'ai extrait une partie d'un script : resizefs qui permet (comme son nom l'indique) d'agrandir les filesystem plein

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    MOUNTPOINT=$1
     
    if [ "$(df -P ${MOUNTPOINT} | tail -n 1 | awk '{ print $NF }')" != "${MOUNTPOINT}" ]; then
        errorlog "${MOUNTPOINT} n'est pas un FS"
        echo "4" >> ${LOGFILE}
        exit 4
    fi
    Voilà ce que je comprends :

    MOUNTPOINT=$1

    ça signifie que MOUNTPOINT est le premier argument à donner au script resizefs. Jusque là tout va bien

    chez moi la commande df -P donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Filesystem                 1024-blocks  Used Available Capacity Mounted on
    /dev/mapper/vg_sys-lv_home      258724 13372    245352       6% /home
    pour augementer /home de 2 Gigas

    on me dit que le script s'utilise commande ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resizefs -s +2G /home
    mais si j'applique la partie de code au dessus, ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /dev/mapper/vg_sys-lv_home!=/home
    donc le script va planter...

    me trompe-je ?

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    me trompe-je ?
    Plutôt oui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /dev/mapper/vg_sys-lv_home!=/home
    C'est là que ça coince.
    $1 est "/dev/mapper/vg_sys-lv_home"
    NF est le nombre de champs.
    $NF est donc le dernier champ. Ici, "/home"
    donc /home!=/home.

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Salut,

    on m'a dit que l'utilisation est comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resizefs -s +2G /home
    Donc $1 est bien égal à /home et non : /dev/mapper/vg_sys-lv_home....

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Arf. Attention au contexte.

    $1 est bien le premier paramètre dans le script bash.
    On le récupère vite avant qu'il soit remplacé.

    awk est un logiciel à part entière avec son fonctionnement propre.
    $i désigne le champ i dans une ligne.

    Voilà pourquoi le script awk est protégé par des simples quotes ' '
    Avec des doubles quotes " ", "$1" serait interprété et remplacé par le paramètre donné au script bash.
    Mais le script awk n'aurait plus de sens.

    De la même façon, en bash, si on a une fonction ma_fonction(), le premier paramètre sera encore $1. Et ce ne sera pas forcément le même que le $1 du script total.

    ok ?

    Résumé : il faut recontextualiser.

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Re, je me pense que je me suis mal exprimé. Mon problème n’es pas du tout sur le awk...
    Je dis juste que le paramètre du scrip est /home et non dev/mapper/vg_sys-lv_home.
    Pourquoi ? Parceque d’après l’admin, on spécifie toujours le point de montage du filesystem et jamais le filesystem lui même.

    Reste à savoir qu’est ce que donne le résultat de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if [ "$(df -P ${MOUNTPOINT} | tail -n 1 | awk '{ print $NF }')" != "${MOUNTPOINT}" ]; then
        errorlog "${MOUNTPOINT} n'est pas un FS"
        echo "4" >> ${LOGFILE}
        exit 4
    fi
    Quand MOUNTPOINT EST Égale àau point de montage du filesystem : /home..

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Reste à savoir qu’est ce que donne le résultat de la commande :
    Quand MOUNTPOINT EST Égale àau point de montage du filesystem
    J'imagine que, avant ta citation, il y a le traitement des options.
    Et que, après, il y a l'augmentation de taille.

    Donc, le bout de code que tu cites sert de procédure d'alerte.
    • Si on ne trouves pas le $1, le $mountpoint, le point de montage, on émet une erreur dans la sortie standard et dans les logs, et on arrête tout.
    • Si on trouve le point de montage (et donc le système de fichier qu'il faut faire grandir), tout est bien et on va pouvoir travailler sereinement. Le script continue.



    Et ceci dit, tu ne devrais pas comparer /dev/mapper/vg_sys-lv_home et /home, car le premier est un fichier et le second est un répertoire.
    Il n'y a aucune chance qu'ils s'égalent.
    Tout est fichier.
    Donc un lecteur de disquette, une clé USB, un disque dur, etc sont des fichiers dans l'arborescence purement virtuelle de Linux.
    Contrairement à Windows où le support est la base (C:, A:, E:, etc).
    /dev est un répertoire dont le nom est un diminutif pour "devices". Ce dossier liste les périphériques, sous forme de fichiers.

  7. #7
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Plutôt oui.
    C'est là que ça coince.
    $1 est "/dev/mapper/vg_sys-lv_home"
    NF est le nombre de champs.
    $NF est donc le dernier champ. Ici, "/home"
    donc /home!=/home.
    ça y est je viens de comprendre.

    $1 n'est pas /dev/mapper/vg_sys-lv_home mais /home

    si on applique le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df -P ${MOUNTPOINT} | tail -n 1 | awk '{ print $NF }
    dans lequel $MOUNTPOINT=/home

    on retrouve commae magie :

    /home

    donc /home=/home c'est tout bon !

    Par contre, pourquoi on désigne le point de montage et pas directement le Filesystem, ça reste un mystère...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Par contre, pourquoi on désigne le point de montage et pas directement le Filesystem, ça reste un mystère...
    c'est ce que voit l'utilisateur ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Ou peut être que le message d’erreur envoyé en cas de filesystem plein, c’est le nom du point de montage ...

Discussions similaires

  1. [systeme] Point de montage : problème
    Par bebertc dans le forum Windows XP
    Réponses: 2
    Dernier message: 05/05/2008, 12h55
  2. Réponses: 4
    Dernier message: 29/03/2006, 10h42
  3. Créer un point de montage sur C:
    Par marcus333 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 30/11/2005, 11h09
  4. [langage] recuperer le point de montage du cdrom
    Par tizef dans le forum Langage
    Réponses: 35
    Dernier message: 23/03/2005, 13h34
  5. Changer les points de montages des partitions
    Par Thrystan dans le forum Administration système
    Réponses: 6
    Dernier message: 13/08/2004, 16h46

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