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 :

df : taille variable de la partition


Sujet :

Shell et commandes GNU

  1. #21
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Bonjour,

    En ce qui me concerne, je n'ai pas besoin de savoir s'il y a eu des différences dans le temps et quand, j'ai juste besoin d'être informé s'il y en a une entre maintenant et la dernière fois que le fichier a été enregistré, à charge pour moi d'initier une enquête et éventuellement de noter ça dans un autre fichier.

    Enfin, sur ce point-là, chacun verra midi à sa porte.

    Maintenant, si quelqu'un sait où trouver des détails parlants chez Debian, qu'il nous en informe, parce que là, même si la date de l'incident avait coïncidé tip-top avec le passage 11.3 --> 11.4 (comme je l'ai supposé), je ne sais pas quoi et où chercher pour confirmer.

    Citation Envoyé par N_BaH Voir le message
    mais ce serait une bonne idée de dynamiser l'assignation, puisque tu le dis toi-même, ça peut évoluer...
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbDisks=$(df -x tmpfs -x devtmpfs -x vboxsf | tail -n +2 | wc -l)
    Ça fonctionne :

    Plus qu'à attendre qu'un signalement sur différence se manifeste...

    Ah, pas besoin de newline en début du fichier de log, donc date +'%c %Z' > "$logfile" et valà !

  2. #22
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    C'est mes yeux où il y avait là un nouveau post, post qui parlait d'un souci survenu hier de façon anarchique, et qui a disparu (le post, pas le souci) ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    C'est mes yeux où il y avait là un nouveau post, post qui parlait d'un souci survenu hier de façon anarchique, et qui a disparu (le post, pas le souci) ???
    Tu n'as pas rêvé, et moi j'ai été trop précipité pour poster : mon petit script n'es pas optimisé pour travailler avec des périph (clé uzbe) insérés avant que le script soit appelé, résultat, ce dernier se prend les pieds dans le tapis,
    Et bien sûr je me suis rendu compte que mon post n'était pas nécessaire, après l'avoir posté, hé ouais.

    Quand j'aurai 5 minutes, je verrai ce que je peux faire...

  4. #24
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    mon petit script n'est pas optimisé pour travailler avec des périph (clé uzbe)
    Ok, ça rassure de voir que sous Linux, l'informatique n'est pas une science aléatoire

    Citation Envoyé par Jipété Voir le message
    Quand j'aurai 5 minutes, je verrai ce que je peux faire...
    A mon avis, un truc style df -x ... -x ... /dev/?d* devrait faire l'affaire (au début je pensais à /dev/sd puis j'ai pensé aux disques durs ancienne génération nommés "/dev/hd" donc j'ai simplifié en "/dev/?d")
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #25
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Allez, j'ai 5 minutes (et même 40, ça grave sur un vieux cd-rw en 4x, je veux tester une compil et apprendre à graver en ligne2commande puisque Brasero et k3b ne sont pas fichus de faire des cd's audio exotiques, dans le sens où au début je découpe 38 minutes en 5 morceaux enchainés, suivis par 4 morceaux indépendants, et ça patauge -- mais maintenant je comprends un peu mieux les fichiers .cue et .toc).

    Donc ce matin à un moment j'ai inséré une clé et je me suis pris ça dans les dents, à l'ouverture d'une console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # /data/temp/scandisks.sh: ligne 20: ((: 3900768256=3900768256  : tentative d''affectation à une non-variable (le symbole erroné est « =3900768256 »)
    # /data/temp/scandisks.sh: ligne 20: ((: 205286293504=205286293504  : tentative d''affectation à une non-variable (le symbole erroné est « =205286293504 »)
    # /data/temp/scandisks.sh: ligne 20: ((: 1761439584256=1761439584256  : tentative d''affectation à une non-variable (le symbole erroné est « =1761439584256 »)
    # /data/temp/scandisks.sh: ligne 20: ((: 1761439584256=1761439584256  : tentative d''affectation à une non-variable (le symbole erroné est « =1761439584256 »)
    Là où je n'ai pas percuté, c'est qu'il y a 4 lignes (oui, une pour chaque périph. D'habitude je n'en ai que 3 quand l'outil est lancé et il semblerait que je ne l'aie jamais lancé après l'insertion d'une clé ou autre.)

    Donc ce que j'ai montré c'est la fin du log d'erreur, et juste au-dessus il y avait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /                            /dev/sda1  ext4            rw,noatime
    ├─/data                      /dev/sdb1  ext4            rw,noatime
    ├─/dbck                      /dev/sdc1  ext4            rw,noatime
    └─/media/usb                 /dev/sdd1  vfat            rw,relatime,fmask=0022,dmask=0022,codepage=850,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
     
    /dev/sda1 on /
    /dev/sdb1 on /data
    /dev/sdc1 on /dbck
    /dev/sdd1 on /media/usb
    2 fois 4 lignes qui sont les sorties normales de mon .bashrc où on trouve findmnt | grep '/sd' et mount | awk "/\/dev\/sd/ {print \$1,\$2,\$3}", sauf pour la 4e ligne deux fois, qui n'y est jamais, d'habitude. Du coup j'ai essayé de comprendre ce qui se passait sans bien analyser.

    La ligne 20, c'est la plus longue, la 6 ici (lacicici, ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # comparaison des tailles disque par disque
    for disk in "${!oldData[@]}"
    do
        # ligne dessous à décommenter pour test du test
        #curData[$disk]=$((curData[$disk]+1))
        (( "${oldData[$disk]}" == "${curData[$disk]}" )) || echo "$disk: old=${oldData[$disk]}, new=${curData[$disk]}"
    done | sort -k1,1 -t ':'
    La première question que je me pose, c'est pourquoi la sortie des erreurs n'est-elle pas dans l'ordre des périph's ?
    La première ligne correspond à la plus petite taille, c'est la clé sdd1, suivie du ssd sda1 puis difficile de dire si c'est sdb1 ou sdc1 car ils ont les mêmes tailles.

    Ensuite on peut s'interroger sur la validité des 4 messages d'erreur, que je n'ai jamais vus quand il n'y a pas de clé et qu'il n'y a que 3 périph's.

    Mais ma gravure vient de se terminer, faut que je teste tout ça...

  6. #26
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par Jipété Voir le message
    La ligne 20, c'est la plus longue, la 6 ici (lacicici, ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # comparaison des tailles disque par disque
    for disk in "${!oldData[@]}"
    do
        # ligne dessous à décommenter pour test du test
        #curData[$disk]=$((curData[$disk]+1))
        (( "${oldData[$disk]}" == "${curData[$disk]}" )) || echo "$disk: old=${oldData[$disk]}, new=${curData[$disk]}"
    done | sort -k1,1 -t ':'
    Je ne suis jamais très à l'aise avec les "(("...

    Quel est l'intérêt (la différence) de faire (( "${oldData[$disk]}" == "${curData[$disk]}" )) plutôt que [ "${oldData[$disk]}" = "${curData[$disk]}" ] ?

  7. #27
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Quel est l'intérêt (la différence) de faire (( "${oldData[$disk]}" == "${curData[$disk]}" )) plutôt que [ "${oldData[$disk]}" = "${curData[$disk]}" ] ?
    C'est un test plus intelligent qui rattrape les conneries (rattrapables).
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ [ "5" = "05" ] && echo "ok" || echo "bad"
    bad
    $ (( "5" == "05" )) && echo "ok" || echo "bad"
    ok

    On aurait pu écrire [ ${oldData[$disk]} -eq ${curData[$disk]} ] (sans guillemets parce que des chiffres et donc avec "-eq" qui sait comparer "5" avec "05") mais les doubles parenthèses ont des avantages en plus que je n'ai malheureusement plus en tête (mais j'ai confiance, N_BaH et son oeil d'aigle va vite trouver ce post et venir me les rappeler )
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 668
    Par défaut
    par exemple : mais attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (( 8 == 08 ))
    bash: ((: 8 == 08 : valeur trop grande pour la base (le symbole erroné est «*08*»)
    alors quene se plaint pas et fait correctement la comparaison.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #29
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    par exemple : ((n=1, v=2-n, n==v))
    Ah oui, ça c'est joli !!!
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ((1+1 == 3-1)) && echo ok
    ok
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #30
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Je ne suis jamais très à l'aise avec les "(("...
    Tiens, ça va te changer la vie,

  11. #31
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Tiens, ça va te changer la vie,
    Je crois que ça va changer la vie de beaucoup de monde
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #32
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 369
    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 369
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    mais attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (( 8 == 08 ))
    bash: ((: 8 == 08 : valeur trop grande pour la base (le symbole erroné est «*08*»)
    C'est aussi pour ça que si on veut être propre, on précisera la base dans laquelle on est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ (( 10#8 == 10#08 )) && echo ok
    ok
    $ (( 10#8 == 8#08 )) && echo ok
    -bash: ((: 10#8 == 8#08: value too great for base (error token is "8#08")

  13. #33
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    C'est aussi pour ça que si on veut être propre, on précisera la base dans laquelle on est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ (( 10#8 == 10#08 )) && echo ok
    ok
    C'est bien de vouloir être propre. Mais tu n'as pas l'impression que le premier "#8" met en commentaire tout le reste ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ (( 10#8 == 14#08 )) && echo ok
    ok
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #34
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 369
    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 369
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    C'est bien de vouloir être propre. Mais tu n'as pas l'impression que le premier "#8" met en commentaire tout le reste ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ (( 10#8 == 14#08 )) && echo ok
    ok
    En base 14 ou en base 10, 8 est bien égale à 8...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 668
    Par défaut
    pourquoi ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #36
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    En base 14 ou en base 10, 8 est bien égale à 8...
    Parce que le nombre avant c'est la base !!! Je pensais que la base était après "#" et que avant c'était le nombre à comparer.
    Et vu que "#" c'est une marque de commentaire, je pensais que la fin de la comparaison n'était pas évaluée


    Ok
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (( 10#8 == 10#7 )) && echo ok || echo bad
    bad

    Remarque, si la fin de la comparaison n'avait pas été évaluée, ça aurait été à cause du commentaire qui aurait alors shunté tout le reste de la ligne y compris le "echo" final
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2006, 10h53
  2. [Beamer] Table des matières de taille variable
    Par jacklafrip dans le forum Beamer
    Réponses: 1
    Dernier message: 25/08/2006, 11h44
  3. objet de taille variable en attribut static
    Par BigNic dans le forum C++
    Réponses: 8
    Dernier message: 06/07/2006, 21h41
  4. [TP] Tableau de taille variable
    Par Ripley dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/01/2006, 15h36
  5. Comment obtenir un tableau à taille variable ?
    Par marsupilami34 dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 15h03

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