# Partition et bash

**URL:** <https://www.debian-fr.org/t/partition-et-bash/64544>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544 "2016-02-21T21:11:15Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![eric0279](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/94ad74/32.png) [@eric0279](https://www.debian-fr.org/u/eric0279)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/1 "2016-02-21T21:11:16Z")

</div>

Bonjour,

je voulais vous demander qu’elle serait le moyen le plus simple pour afficher la taille totale, libre, utilisé en bash sachant que selon l’utilisateur, le partitionnement peut être différent…

[code] df -h  
Sys. fich. Taille Util. Dispo Uti% Monté sur  
/dev/simfs 10G 985M 9,1G 10% /  
tmpfs 103M 72K 103M 1% /run  
tmpfs 5,0M 0 5,0M 0% /run/lock

[/code]

`df -h | grep -vE '^Sys|tmpfs|cdrom' | awk '{ print $2 " " $3 " " $4 " " $5}'
10G 985M 9,1G 10%`

Tout est ok mais à partir du moment où l’utilisateur sépare home par exemple, ce code est erroné…

Merci pour vos conseils

Cordialement,

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/2 "2016-02-21T21:11:16Z")

</div>

salut,

donc, tu ne veux qu’une partie des lignes qui commencent par ‘/dev’, c’est ça ?

`awk' sait identifier les regex; ce n'est pas un "super`cut’", c’est un “super `grep’” !

---

<div class="post-metadata">

**Author:** ![eric0279](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/94ad74/32.png) [@eric0279](https://www.debian-fr.org/u/eric0279)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/3 "2016-02-21T21:11:16Z")

</div>

Un exemple parlera mieux :

Machine A:

[quote] df -h  
Sys. fich. Taille Util. Dispo Uti% Monté sur  
/dev/simfs 10G 1006M 9,1G 10% /  
tmpfs 103M 72K 103M 1% /run  
tmpfs 5,0M 0 5,0M 0% /run/lock  
[/quote]

Machine B:

[quote]Sys. fich. Taille Util. Dispo Uti% Monté sur  
rootfs 57G 38G 17G 69% /  
udev 10M 0 10M 0% /dev  
tmpfs 201M 248K 201M 1% /run  
/dev/disk/by-uuid/89236856-3b69-46a7-8692-115d57e5d929 57G 38G 17G 69% /  
tmpfs 5,0M 0 5,0M 0% /run/lock  
tmpfs 908M 0 908M 0% /run/shm  
[/quote]

Machine C:

[quote]df -h  
Sys. fich. Taille Util. Dispo Uti% Monté sur  
rootfs 6,4G 865M 5,2G 15% /  
udev 10M 0 10M 0% /dev  
tmpfs 100M 248K 100M 1% /run  
/dev/disk/by-uuid/088e6d2d-823c-444d-997f-791bf271d34b 6,4G 865M 5,2G 15% /  
tmpfs 5,0M 0 5,0M 0% /run/lock  
tmpfs 367M 0 367M 0% /run/shm  
/dev/sda6 18G 172M 17G 2% /home  
[/quote]

La commande:

`df -h | grep -vE '^Sys|tmpfs|cdrom|dev' | awk '{ print $5 " " $2 " " $3 " " $4 }'
`

retourne bien une valeur sur les machines B et C mais pas sur A et sur la C, home est absent.

J’ai pensé à créer des fonctions mais est ce la bonne méthode ? Je ne connais pas toutes les distributions donc ce n’est pas évident ! Est ce impossible ?!?

donc je me demande si j’ai réellement bien fait de poster car je me casse la tête dessus et je vais pas être le seul ^^

et là encore, je n’ai que 3 machines de test, var etc… n’ont pas été séparés du reste, wow le chlimblique xD sans compter que la langue est à prendre en compte je viens d’y penser ^^

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/4 "2016-02-21T21:11:16Z")

</div>

là, on voit ce que tu as, il faudrait quand même nous montrer ce que tu veux, et dire pourquoi.  
pas parce que tu le veux/dois/peux ! pourquoi ça doit apparaître, par rapport à ce qui ne doit pas figurer, dans le résultat. 😉

---

<div class="post-metadata">

**Author:** ![eric0279](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/94ad74/32.png) [@eric0279](https://www.debian-fr.org/u/eric0279)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/5 "2016-02-21T21:11:16Z")

</div>

car j’ai un .sh de monitoring et je me suis rendu compte que sur certaines machines, l’espace disque etc… ne s’affichait pas ou était erroné.

Ce que je veux, c’est mentionné dans mon premier post. 😉

Je veux afficher la taille des partitions (total, utilisé, libre) de home, racine (var etc…), un truc assez complet 🙂

Je demande juste la meilleur façon de le faire car mise à pars faire du grep, awk je ne vois pas trop comment faire surtout qu’à pars Ubuntu et debian, le reste, je ne connais pas… donc il faudrait que ce soit un AIO en gros ^^

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/6 "2016-02-21T21:11:16Z")

</div>

mentionner n’est pas montrer !

AIO ?

et je vais me répéter :[quote]donc, tu ne veux qu’une partie des lignes qui commencent par ‘/dev’, c’est ça ?[/quote]parce c’est là (en gros) que le noyau met les partitions “physiques”.

---

<div class="post-metadata">

**Author:** ![yap22](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/9e8a1a/32.png) [@yap22](https://www.debian-fr.org/u/yap22)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/7 "2016-02-21T21:11:16Z")

</div>

Bonjour,

L’option x pour exclure des types :

```auto
df -hT
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/sda1 ext4 15G 7,0G 6,6G 52% /
udev devtmpfs 10M 0 10M 0% /dev
tmpfs tmpfs 386M 660K 385M 1% /run
tmpfs tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs tmpfs 1,6G 0 1,6G 0% /run/shm
/dev/sda3 ext4 129G 104G 19G 86% /home

df -hT -x tmpfs -x devtmpfs
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/sda1 ext4 15G 7,0G 6,6G 52% /
/dev/sda3 ext4 129G 104G 19G 86% /home

```

---

<div class="post-metadata">

**Author:** ![BelZeButh](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5fc32e/32.png) [@BelZeButh](https://www.debian-fr.org/u/BelZeButh)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/8 "2016-02-21T21:11:17Z")

</div>

Salut,

> [@eric0279](#):
>
> Je veux afficher la taille des partitions (total, utilisé, libre) de home, racine (var etc..), un truc assez complet 🙂

Vois si cela te convient.

[code]#!/bin/sh

# newdf - Version de df plus conviviale.

awkscript=«&nbsp;/tmp/newdf.$$&nbsp;»

trap «&nbsp;rm -f $awkscript&nbsp;» EXIT

cat \<\< ‹&nbsp;EOF&nbsp;› \> $awkscript  
function showunit(size)  
{ mb = size / 1024; prettymb=(int(mb \* 100)) / 100;  
gb = mb / 1024; prettygb=(int(gb \* 100)) / 100;

if ( substr(size,1,1) !~ «&nbsp;[0-9]&nbsp;» ||  
substr(size,2,1) !~ «&nbsp;[0-9]&nbsp;» ) { return size }  
else if ( mb \< 1) { return size «&nbsp;K&nbsp;» }  
else if ( gb \< 1) { return prettymb «&nbsp;M&nbsp;» }  
else { return prettygb «&nbsp;G&nbsp;» }  
}

BEGIN {  
printf «&nbsp;%-27s %7s %7s %7s %8s %-s\n&nbsp;»,  
«&nbsp;Système de fichiers&nbsp;», «&nbsp;Taille&nbsp;», «&nbsp;Occupés&nbsp;», «&nbsp;Dispo.&nbsp;», «&nbsp;Capacité&nbsp;», «&nbsp;Monté sur&nbsp;»  
}

!/Filesystem/ {

size=showunit($2);  
used=showunit($3);  
avail=showunit($4);

printf «&nbsp;%-27s %7s %7s %7s %8s %-s\n&nbsp;»,  
$1, size, used, avail, $5, $6  
}  
EOF

df -k | awk -f $awkscript

exit 0[/code]

Concrètement.

`Système de fichiers Taille Occupés Dispo. Capacité Monté sur
Sys. fich. 1K-blocks Util. Disponible Uti%
rootfs 8.74G 7.21G 1.08G 87% /
udev 10M 0 10M 0% /dev
tmpfs 138.29M 652K 137.66M 1% /run
/dev/disk/by-uuid/58a7bb9a-0a8a-4309-83a5-2079e912a18c 8.74G 7.21G 1.08G 87% /
tmpfs 5M 0 5M 0% /run/lock
tmpfs 496.58M 0 496.58M 0% /run/shm
/dev/sda6 8.54G 7.33G 789.23M 91% /home
tmpfs 691.46M 19.26M 672.19M 3% /home/loreleil/.cache
tmpfs 496.58M 668K 495.92M 1% /tmp
`

---

<div class="post-metadata">

**Author:** ![eric0279](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/94ad74/32.png) [@eric0279](https://www.debian-fr.org/u/eric0279)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/9 "2016-02-21T21:11:17Z")

</div>

[quote=“yap22”]Bonjour,

L’option x pour exclure des types :

[code]  
df -hT  
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur  
/dev/sda1 ext4 15G 7,0G 6,6G 52% /  
udev devtmpfs 10M 0 10M 0% /dev  
tmpfs tmpfs 386M 660K 385M 1% /run  
tmpfs tmpfs 5,0M 0 5,0M 0% /run/lock  
tmpfs tmpfs 1,6G 0 1,6G 0% /run/shm  
/dev/sda3 ext4 129G 104G 19G 86% /home

df -hT -x tmpfs -x devtmpfs  
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur  
/dev/sda1 ext4 15G 7,0G 6,6G 52% /  
/dev/sda3 ext4 129G 104G 19G 86% /home

[/code][/quote]

Merci, ça peut être pas mal, je ne connaissais pas et pas regardé le man, j’avoue…

---

<div class="post-metadata">

**Author:** ![eric0279](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/94ad74/32.png) [@eric0279](https://www.debian-fr.org/u/eric0279)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/10 "2016-02-21T21:11:17Z")

</div>

[quote=«&nbsp;BelZéButh&nbsp;»]Salut,

> [@eric0279](#):
>
> Je veux afficher la taille des partitions (total, utilisé, libre) de home, racine (var etc..), un truc assez complet 🙂

Vois si cela te convient.

[code]#!/bin/sh

# newdf - Version de df plus conviviale.

awkscript=«&nbsp;/tmp/newdf.$$&nbsp;»

trap «&nbsp;rm -f $awkscript&nbsp;» EXIT

cat \<\< ‹&nbsp;EOF&nbsp;› \> $awkscript  
function showunit(size)  
{ mb = size / 1024; prettymb=(int(mb \* 100)) / 100;  
gb = mb / 1024; prettygb=(int(gb \* 100)) / 100;

if ( substr(size,1,1) !~ «&nbsp;[0-9]&nbsp;» ||  
substr(size,2,1) !~ «&nbsp;[0-9]&nbsp;» ) { return size }  
else if ( mb \< 1) { return size «&nbsp;K&nbsp;» }  
else if ( gb \< 1) { return prettymb «&nbsp;M&nbsp;» }  
else { return prettygb «&nbsp;G&nbsp;» }  
}

BEGIN {  
printf «&nbsp;%-27s %7s %7s %7s %8s %-s\n&nbsp;»,  
«&nbsp;Système de fichiers&nbsp;», «&nbsp;Taille&nbsp;», «&nbsp;Occupés&nbsp;», «&nbsp;Dispo.&nbsp;», «&nbsp;Capacité&nbsp;», «&nbsp;Monté sur&nbsp;»  
}

!/Filesystem/ {

size=showunit($2);  
used=showunit($3);  
avail=showunit($4);

printf «&nbsp;%-27s %7s %7s %7s %8s %-s\n&nbsp;»,  
$1, size, used, avail, $5, $6  
}  
EOF

df -k | awk -f $awkscript

exit 0[/code]

Concrètement.

`Système de fichiers Taille Occupés Dispo. Capacité Monté sur
Sys. fich. 1K-blocks Util. Disponible Uti%
rootfs 8.74G 7.21G 1.08G 87% /
udev 10M 0 10M 0% /dev
tmpfs 138.29M 652K 137.66M 1% /run
/dev/disk/by-uuid/58a7bb9a-0a8a-4309-83a5-2079e912a18c 8.74G 7.21G 1.08G 87% /
tmpfs 5M 0 5M 0% /run/lock
tmpfs 496.58M 0 496.58M 0% /run/shm
/dev/sda6 8.54G 7.33G 789.23M 91% /home
tmpfs 691.46M 19.26M 672.19M 3% /home/loreleil/.cache
tmpfs 496.58M 668K 495.92M 1% /tmp
`[/quote]

Salut, wow super, je vais tester merci 🙂

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/11 "2016-02-21T21:11:17Z")

</div>

le bénéfice du script sh, qui écrit un script awk sur le disque, à chacun de ses appels, pour l’effacer à la fin, m’échappe ❓

un simple`df -k | awk 'une longue commande'`est bien mieux.

remarquez que le script awk “ne fait que” convertir des données en kO en [GM]O.

---

<div class="post-metadata">

**Author:** ![BelZeButh](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5fc32e/32.png) [@BelZeButh](https://www.debian-fr.org/u/BelZeButh)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/12 "2016-02-21T21:11:25Z")

</div>

Re,

[quote=“Watael”]… [mono]une longue commande[/mono]  
[/quote]

Qui serait ?

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:11 UTC](https://www.debian-fr.org/t/partition-et-bash/64544/13 "2016-02-21T21:11:25Z")

</div>

[quote=“BelZéButh”]Re,

[quote=“Watael”]… [mono]une longue commande[/mono]  
[/quote]

Qui serait ?[/quote]la même que celle qui est envoyée dans un fichier :`df -k | awk 'function showunit(size){...}; BEGIN{...} !/Filesystem/{...}'`
