Je te fais confiancemusher0 wrote:Bon, ben... retour à l'établi !
Cordialement,
Médor.
Voici l'explication :augras wrote:Je suis étonné : après avoir lancé le script quand je compare l'indication de mémoire utilisée avec celle donnée par lxtask, ce dernier indique environ 300 Mo de moins !
EDIT : je crois que je me suis mal exprimé et que l'on ne comprend pas ce que je voulais dire ! Le script m'indique après nettoyage par exemple 800 Mo utilisés alors que lxtask m'indique 500 Mo. On est pas à quelques Mo mais là il est anormal que 2 outils aient une telle différence dans le calcul de la mémoire vive utilisée.
Ici avec free je n'ai généralement, comme sur ma capture précédente, que 7 Mo de libre sur 238 Mo de ramLa commande free wrote: ...
Dans l'exemple ci-dessus, le système dispose en tout de 4054 Mo de mémoire.
Sur ce total, 3893 Mo sont utilisés et 161 Mo sont inutilisés.
A première vue, toute la mémoire est consommée et la machine est donc dans un état critique.
Pourtant, çe n'est pas du tout le cas.
Attention à ne pas confondre mémoire inutilisée et mémoire disponible !
Le système consomme un maximum de mémoire pour optimiser au mieux ses performances via l'utilisation de caches, et il n'y a donc que très peu de mémoire inutilisée (colonne free).
Mais la mémoire utilisée par les caches (colonnes buffers et cached) peut être libérée à tout moment.
La deuxième ligne indique la quantité de mémoire réellement consommée par les applications (colonne used) et la mémoire réellement disponible (colonne free) :
-/+ buffers/cache: ........ 390 ....... 3663
En cessant d'utiliser les caches, le système ne consommerait donc plus que 390 Mo de mémoire alors que 3663 Mo seraient disponibles.
Finalement, ce serveur a encore beaucoup de mémoire disponible en réserve !
...
Code: Select all
FreeMem () {
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- .... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" >> $MMLBR
if [ ${LANG:0:2} = "fr" ];then
echo "(En Mo) total utilisé libre partagé tampons" > /tmp/mevlibr
echo "`free -m | awk -F" " 'NR=="2" { print "Mém.";for (i=2; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
echo "`free -m | awk -F" " 'NR=="3" { print "±tampons";for (i=3; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
echo "`free -m | awk -F" " 'NR=="4" { print "Éch. ";for (i=2; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
else
free -m | awk -F" " 'NR=="1" { print "(In Mb)";for (i=2; i<=NF; i++) print $i" " }'| tr "\n" " " > /tmp/mevlibr
echo >> /tmp/mevlibr
free -m | tail -n 3 >> /tmp/mevlibr
fi
cat /tmp/mevlibr >> $MMLBR;rm -f /tmp/mevlibr
echo . >> $MMLBR
}
... et c'est tout !replaceit - v1.0.0 - PLD Software (C) - http://pldaniels.com/replaceit 2001
Usage: replaceit --input=<filename> [--wholeline] "<replace>" "<with>" [["[+-]<string to be present>" | "<-string to be non-present>"] ...]
--input : Name of file to apply the replacements to
--wholeline : Replace the entire line with <with>, rather than partial replacement
<replace> : String we're searching for
<with> : What we wish to replace <replace> with
<[+-]string> : A string which should be also detected on the line
-<string> : A string which we DO NOT want detected in the line
<}string> : This string must appear AFTER the section to replace
<{string> : This string must appear BEFORE the section to replace
example: ./replaceit --input=myfile.c "_MY_DEFINE" "_YOUR_DEFINE" "-#define" "};"
Code: Select all
# En "one-liner"
clear;echo;A="`grep wap /proc/meminfo | tr -s ' ' | tr '\n' ' '`";echo -e "$A" | awk '{ print " "$4" "$7" "$1"\n "$5" "$6" - "$8" "$9" = "$2" "$3 }';echo
# En code lisible !
clear
echo;A="`grep wap /proc/meminfo | tr -s ' ' | tr '\n' ' '`" # Et ch'te mous !
echo -e "$A" | awk '{ print " "$4" "$7" "$1"\n "$5" "$6" - "$8" "$9" = "$2" "$3 }' # Et ch'te pétris !
echo
Code: Select all
echo;cat /proc/meminfo | head -n 4 | tr -s ' ' | tr '\n' ' ';echo;echo
Code: Select all
./cleanup_memory3: line 31: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
./cleanup_memory3: line 40: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)
Oups, Évidemment, chercher un fichier dans un dossier qui n'existe pas...jplt wrote:Je viens de lancer cleanup_memory3a :
La fenetre se ferme instantanement.Code: Select all
./cleanup_memory3: line 31: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory) ./cleanup_memory3: line 40: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory) awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory) Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)
J'ai testé sous tahrpup 6.0.
Code: Select all
./cleanup_memory3
./cleanup_memory3: line 31: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
./cleanup_memory3: line 40: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory
Code: Select all
#!/bin/ash
# /root/my-applications/bin/cleanup_memory3b
#
# D'après : 'Simple tool for puppy linux to clean caches',
# par Joe Arose, alias "big_bass", créé pour son "Puppy Slaxer-4.12".
#
# Mise en forme et ajouts par musher0, 20 mai 2013;
# rév. 30 janv. et 02-06 févr. 2015.
# Merci à jplt et à Médor de leurs suggestions sur le forum Puppy.
#
# V. 3a : L'usage accru des chaînes en mémoire économise 1,4 secondes. musher0
# V. 3b : Enlevé référence au dossier "~/my-applications/Systeme" (merci à
# jplt), et adopté une mise en forme plus claire pour ces lignes-ci. musher0
#
#################
# variables
MAPPS="/root/my-applications";MMLBR="$MAPPS/mem_libr.txt";Z=""
RMPL="replaceit --input=$MMLBR";LIGN=".-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-."
case ${LANG:0:2} in # param. pour less
fr)MEV="'q' pour quitter =-=-=-= Mémoire vive libérée";AV="Avant";AP="Après"
Prem="(En Mo) total utilisé libre partagé tampons" ;;
*)MEV="'q' to quit =-=-=-= Freed RAM";AV="Before";AP="After"
Prem"(In Mb) total used free shared buffers" ;;
esac # langues, 1
FreeMem ()
{
COUP="$Prem
`free -m | tail -n 3`
"
}
FreeMem # L'avant
COUP="$LIGN $AV $LIGN
$COUP"
a="`grep mFree /proc/meminfo | awk '{print $2}'`"
BEAU="$COUP"
sync ; echo 3 > /proc/sys/vm/drop_caches;wait # Action
FreeMem # L'après
COUP="$LIGN $AP $LIGN
$COUP"
b="`grep mFree /proc/meminfo | awk '{print $2}'`"
echo -e "$BEAU$COUP." > $MMLBR;
# Param. urxvt
c="`expr $b - $a`";c="`expr $c / 1000`" # calculs
d="`grep wapC /proc/meminfo | awk '{print $2}'`" # État du fichier d'échange
case ${LANG:0:2} in # Titre
fr)[ $d -eq 0 ] && INCHANG="fichier d'échange non utilisé" || INCHANG="fichier d'échange UTILISÉ";TITR="MEV libérée : ± $c Mo ; $INCHANG."
# Traduction
$RMPL "-/+ buffers:" " ± tampons :";$RMPL Swap Éch.;$RMPL "Mem:" Mém. ;;
*)[ $d -eq 0 ] && INCHANG="swap file not in use" || INCHANG="swap file IN USE";TITR="Freed RAM: ± $c Mb; $INCHANG." ;;
esac # langues, 2
Geom="g 73x12-250+300";BL="white";CLR="fg $BL -bg AntiqueWhite4 -cr $BL"
TRNSP="tr -tint grey79 -sh 99";FNT="fn xft:Monaco:pixelsize=13:autohint=true"
urxvt -$Geom -$CLR -$TRNSP -$FNT -T "$TITR" -b 12 +sb &>/dev/null -e less -L -~ -P "$MEV" $MMLBR # Afficher
rm -f $MMLBR # Nettoyer
[ "`pidof -s aepanel`" ] && Z="aepanel" && kill -s 15 "`pidof -s $Z`" && sleep 0.1s && $MAPPS/ae/aepanel-menu.sh & # si aepanel actif.
### 30 ###
Il suffit d'ajouter une chaîne de caractères quelconque au nom du script pour que# V. 3c : Ajouté % de MEV récupérée dans barre de titre. 6 févr. 2015, musher0
# V. 4 : Ajouté fonction CHRONO|suivi (suggestion d'augras) pour lancement par
# ______ PSchedule. Changé "." à "¤" pour faciliter répérage dans fichier
# ______ d'historique. 7 févr. 2015, musher0
Code: Select all
more ~/my-documents/tmp/suivimev.his
Code: Select all
*/15 * * * * /root/my-applications/bin/cleanup_memory toto
Je n'ai jamais essayé de créer une tâche cron.jplt wrote:Je vais de ce pas créer une tache cron,pour ceux qui serait intéréssé, script s'ececutant toutes les 15 minutes :
Code: Select all
*/15 * * * * /root/my-applications/bin/cleanup_memory toto