Script bash

Fermé
mini_moy - 17 févr. 2015 à 22:49
 mini_moy - 18 févr. 2015 à 09:52
Bonjour à tous,
Je suis une débutante sur shell et j'aurais besoin d'une petite aide,
j'ai crée une fonction qui archive et compresse un dossier qu'on lui entre en paramètre et j'aurais aimé créer un script qui vérifie auparavant si l'espace de stockage est suffisant si c'est le cas il effectue la fonction d'archive si ça ne l'est pas il indique: libérez de l'espace? sachant que je travaille sous Sun et non Linux
Je vous remercie par avance d'une éventuelle réponse...


2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 17/02/2015 à 23:13
'lut, cette ligne marchera dans tout environnement POSIX (
df
,
sh
et
awk
POSIX):
FREE_SPACE=$((1024 * $(df -kP . | awk 'BEGIN{RS="";FS=" "}{print $11}')))

Explication:
  • df -kP
    sort le résultat de
    df
    au format POSIX en précisant la taille de bloc: 1024, car la taille par défaut dépend de l'implémentation, bien que supposé être 512 (GNU df, je te regarde)
  • awk
    extrait le 11e paramètre, le nombre de blocs de 1024 octets libres.
  • le shell multiplie par 1024

Le point en paramètre de
df
spécifie le chemin menant à la partition dont on veut l'espace libre -- ça peut être un sous-dossier,
df
remonte au mointpoint le plus proche.
from human import idiocy
del idiocy
1
Merci beaucoup pour ta réponse, elle ne fonctionne pas pour moi
J'avais ce message qui s'affichait: df: unknown option: P
Usage: df [-F FSType] [-abegklntVv] [-o FSType-specific_options] [directory | bl ock_device | resource]
bash: 1024 * : syntax error: operand expected (error token is " ")
J'ai donc modifié ce que tu m'as dis par
FREE_SPACE=$((1024 * $(df -k $mon_support | tail -1 | tr -s ' ' | cut -d ' ' -f 4)))
et ça fonctionne. Encore merci
0