Il y a plusieurs questions et réponses sur askubuntu sur la façon de voir l'espace disque depuis la ligne de commande.
Naturellement, df
est l'outil incontournable pour cela.
Cependant, je veux qu'un script à la connexion déclenche une alerte si l'espace disque libre est inférieur à un certain seuil.
Malheureusement, df
semble utiliser des colonnes de taille arbitraire et je ne sais pas comment extraire uniquement la valeur de la colonne qui m'intéresse.
Par exemple:
$ df /dev/mapper/root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/root 2563092 1649968 763212 69% /
$ df /dev/mapper/root | tail -n 1
/dev/mapper/root 2563092 1649968 763212 69% /
$ df /dev/mapper/root | tail -n 1 | cut -d ' ' -f 9
763212
Vraiment, je veux la quatrième colonne, mais je dois demander la neuvième.
Existe-t-il un moyen plus simple d'extraire la valeur de la colonne de la sortie de df
, ou une autre façon d'accéder à cette valeur.
Si vous utilisez Ubuntu 14.04 ou une version ultérieure, df
ne peut afficher que les valeurs que vous souhaitez:
$ df --output=avail /
Avail
15127808
De man df
:
--output[=FIELD_LIST]
use the output format defined by FIELD_LIST, or print all fields
if FIELD_LIST is omitted.
...
FIELD_LIST is a comma-separated list of columns to be included. Valid
field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail',
'ipcent', 'size', 'used', 'avail', 'pcent' and 'target' (see info
page).
Comme indiqué par Drew Noakes , cette capacité a été ajoutée dans GNU coreutils
8.21, et n'est donc pas disponible dans les anciennes versions d'Ubuntu.
Pour sélectionner des champs, awk
est un bien meilleur outil que cut
, et vous pouvez construire sur la réponse de Jan pour cela après avoir choisi les champs que vous voulez que df
affiche.
Je viens de réaliser que ce n'est pas ce qui était demandé, cela montre une alerte si l'espace utilisé est supérieur à un seuil prédéfini. Je vais cependant le laisser pour plus de référence.
Vous pouvez utiliser quelque chose comme le script ci-dessous
#!/bin/bash
X=
X=$(du -sc | awk 'NR < 2' | awk '{ print $1 }')
if [ $X -gt 999000 ]; then
message="Already using `du -sch | awk 'NR <2' |awk '{ print $1 }'` KB"
echo $message | mail -s "File System Full Warning" [email protected]
fi
X contient le nombre de Ko utilisés, s'il est supérieur à 999 000, il envoie un message d'avertissement par e-mail.
J'utiliserais un awk
pour traiter uniquement la deuxième ligne (saute la première ici) et vous obtiendrais votre colonne:
$ df /dev/mapper/sil_acababdfabcf1 | awk 'NR==2 {print $4}'
11903752