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 :

Document développé en BASH


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut Document développé en BASH
    Bonsoir,

    J'ai besoin d'aide s'il vous plait j'ai un exercice a faire si vous pouvez m'aider je suis débutant en programmation Bash.

    le but de l'exercice :
    Proposer un outil développé en BASH permettant d'opérer une gestion de cache sur un espace disque , la commande produite devra permettre de libérer une partie de l'espace occupé suivant l'algorithme LRU .

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    proposes déjà un algorithme, et une tentative de script.

    un point n'est pas clair pour moi, est ce que la commande doit réaliser l'ensemble des opérations de gestion de cache (création, ajout, suppression, recherche) ou simplement une commande de suppression basé sur LRU? De même s'agit il d'un cache maintenu dans un seul fichier, ou un cache maintenu sous la forme de plusieurs fichiers dans un dossier (un fichier par enregistrement de cache).

    Dans le premier cas ce que tu pourrai faire serait une commande comprenant plusieurs verbes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ./managecache create --File /tmp/fichier.cache
    ./managecache edit --File /tmp/fichier.cache --size=100M
    ./managecache add --File /tmp/fichier.cache "Data"
    ./managecache purgeold --File /tmp/fichier.cache
    Pour le fichier de cache, il pourrait avoir la structure:
    La libération d'espace pourrait se reformuler alors: "trouver la ligne la plus ancienne du fichier".

    Si c'est un cache sur la base d'un dossier contenant plusieurs fichiers, ce qui t'a été demandé pourrait se reformuler comme "trouver le fichier le plus ancien du dossier et le supprimer".

    Ce sont juste des idées, à toi de les mettre en forme par un script que tu posteras ici et que nous t'aiderons à corriger

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut le script
    le but du script est de chercher le fichier le plus ancien dans un repertoire et le supprimer voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #!/bin/bash
    # declaration des variable
    option="$1"
    repertoire="$2"
    tailledemande=$3
     
    #la fonction qui calculerla taille 
    calcul_taille(){
    	total=0
    	taille_bloc=1024
    	repertoire=$1
    	option=$2
     
    	if [ $option == "-l" ] # "-l pour calculé la taille logique"
    	then
    		for f in "$repertoire"/*
    		do
    			if [ -f "$f" ]
    			then
    				t_f=$(du -b $f | cut -f 1)
    				let total=($total+$t_f)
    			fi
    		done
    	else	
    		nb_bloc=$(du -s "$repertoire" | cut -f 1) # sinon on calcul la taille en bloc 
    		let total=$nb_bloc*$taille_bloc
    	fi
     
    	echo $total
    	return 0
    }
     
    #fonction qui affiche le plus ancien fichier utilisé
     
    calcul_fichier(){
    	min=$(date +%s)
    	file=""
    	repertoire=$1
     
    	for f in "$repertoire"/*
    	do
    		if [ -f "$f" ]
    		then
    			date_f=$(stat -c "%X" "$f")
     
    			if [ $date_f -lt $min ]
    			then
    				min=$date_f
    				file="$f"
    			fi 
    		fi
    	done
     
    	echo $f
    }
     
     
    #test si le premier parametre est bien une option -l ou -b
    if [ "$option" != "-l" -a "$option" != "-b" ]
    then
    	echo  "option usage: $0 <option> <repertoire> <tailledemande>"
    	exit 1
    fi
     
    #test si le deuxieme parametre est un repertoire
    if ! [ -d "$repertoire" ]
    then
    	echo "directory usage: $0 <option> <repertoire> <tailledemande>"
    	exit 2
    fi
     
    #test si le troisieme parametre est une taille de type entier
    if ! [[ $tailledemande = +([1-9])*([0-9]) ]]
    then
    	echo "size usage: $0 <option> <repertoire> <tailledemande>"
    	exit 3
    fi
     
     
    #la boucle qui permet de calculer la taille du repertoire en fonction de l'option saisie et de supprimer les fichiers anciens tant que la taille du repertoire est superieur à la taille demande
    taille_repertoire=$(calcul_taille "$repertoire" "$option")
    echo "Avant : $taille_repertoire octets"
    let taille_voulue=$taille_repertoire-$tailledemande
    taille_repertoire=$(calcul_taille "$repertoire" "$option")
     
    while [ $taille_repertoire -gt $taille_voulue ]
    do
    	fichier=$(calcul_fichier "$repertoire")
     
    	if [ -f "$fichier" ]
    	then
    		echo "fichier le plus ancien $fichier supprimé"
    		rm "$fichier"
    		taille_repertoire=$(calcul_taille "$repertoire" "$option")
    	fi
    done
     
    echo "Après : $taille_repertoire octets"
     
    exit 0

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    ok
    est ce la version définitive du script ou as tu des soucis dessus? souhaites du des conseils dessus?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    Oui je voudrais savoir si c'est juste ou pas , et avoir plus de conseil svp ,
    et si il y'a d'autre methodes d'ecrire cette algorithme je reste a votre disposition pour toutes autres questions merci

Discussions similaires

  1. Document développé en Bash
    Par alex-alex dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/10/2015, 00h11
  2. Réponses: 3
    Dernier message: 10/01/2009, 09h18
  3. Réponses: 1
    Dernier message: 13/03/2007, 20h55
  4. Développer un traitement automatique de documents
    Par Promeneur dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 22/11/2006, 10h22
  5. [Processus de développement] La documentation
    Par layouni dans le forum Méthodes
    Réponses: 16
    Dernier message: 13/01/2006, 10h39

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