Récupérer la RAM d'un PC depuis Perl

Fermé
-manu- - 20 oct. 2005 à 12:58
 Artis - 29 sept. 2007 à 02:04
Bonjour

Je cherche à récupérer la RAM présente sur mon PC depuis un script Perl.
Est-ce possible ?

Je n'ai pas trouvé la commande correspondante partout où j'ai cherché. J'ai vu qu'on pouvait aussi lancer des commandes sytème depuis le Perl, peut-être est-ce un moyen de s'en sortir mais je sèche un peu là...

Merci pour votre aide.
A voir également:

5 réponses

hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50
20 oct. 2005 à 15:03
Salut,
Il faut dire précisément ce que tu veux obtenir de la RAM. La mémoire utilisée ou simplement la taille de la RAM...
Effectivement tu peux utiliser la fonction system("commande_systeme") dans PERL et à partir de là tu executes ta commende systeme. Pour la RAM tu peux executer un simple top qui peut te donner qqs infos sur la RAM.
J,espere que ça répond à ta question.
0
Je veux simplement obtenir la taille totale de la RAM (512 Mo, par exemple).

Alors l'autre souci c'est que je ne connais absolument rien à Perl et que je n'ai pas vraiment le temps de m'y mettre (on est en pleine recette !).
Donc si tu pouvais me préciser la commande exacte pour faire ça et stocker la taille de la RAM dans une variable je dresserai une statue à ton effigie.

Merci beaucoup pour ton aide.
0
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50
20 oct. 2005 à 18:39
Salut,
Voici un script en PERL qui devarit faire ce que tu demandes:

#!/usr/bin/perl -w

@donnees=split(/ /,`free -m| grep Mem`);
@donnees_ram=();
$j=0;
for ($i=0; $i<@donnees; $i++){
if ($donnees[$i] ne ''){
$donnees_ram[$j]=$donnees[$i];
$j=$j+1;
}
}
$ram=$donnees_ram[1];

Donc la taille de la RAM est stockée dans la variable $ram. pour l'afficher tu peux ajouter `a la fin du script:
print "la taille de la RAM est: $ram\n";

NB:Laisse tomber la statue, c'est toujours un plaisir pour moi d'aider les autres! et si tu veux des commentaires pour ce script n'hesites pas.
Bon travail.
0
J'ai placé ce code dans un fichier test.pl, et voici le message que j'obtiens quand je le lance :


'free' is not recognized as an internal or external command,
operable program or batch file.
Use of uninitialized value in concatenation (.) or string at C:\temp\test.pl line 14.
la taille de la RAM est:


Qu'est-ce à dire ?
Merci.
0
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50 > -manu-
21 oct. 2005 à 14:48
Salut,
Sous quelle distribution tu roules, moi je l'ai essayé sous redhat et ça marche!
essair d'executer la commande systeme a partir de ta console:
free -m| grep Mem et regarde ce que ça fait. ou fais simplement free. Commande qui donne des states sur ta memoire RAM.
0
-manu- > -manu-
21 oct. 2005 à 14:57
Je suis sous Windows XP.
Et quand je lance ta commande sous DOS, voilà ce que j'obtiens :


'free' is not recognized as an internal or external command,
operable program or batch file.


Malheur de malheur ça n'est pas si simple...
Merci encore pour ton aide !
0
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50 > -manu-
21 oct. 2005 à 15:25
Je comprend pourquoi tu n'obtiens rien avec free, car c'est une commande system UNIX. je ne sais pas comment faire avec XP, il faudrait faire une petite recherche pour trouver la commande sur XP (sur GOOGLE)qui fait la même chose et executer ensuite le script tel qu'il est. Il faut changer juste la fonction equivalent XP de `free -m| grep Mem`. En qqs mots, cette commande donne la ligne des states de la memoire RAM. en gros: taille, taille utilisée, taille restante...
Moi j'ai mis cette ligne dans un tableau où chaque case comprend une valeur et j''ai selectionné la 1ere case qui donne la taille de la RAM. Donc, tout ce qui reste à faire c'est de trouver cette fameuse fonction qui donne les states de la RAM et le reste est simple. Bonne recherche, si je trouve qqs chose de mon côté je te le dirai. le problème c'est que je ne connais rien en XP!!!
0
maghniatlemcen Messages postés 8 Date d'inscription vendredi 9 septembre 2005 Statut Membre Dernière intervention 8 novembre 2006
21 oct. 2005 à 09:51
bonjour;
je suis debutant en programmation mysql.
Mon pb est je veux creer un script perl pour copier une table d'une bases de donnees et connaitre dans le même script l'origine de cette table...
0
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50
21 oct. 2005 à 15:32
Salut,
Qu'est-ce que tu veux dire par: origine de cette table.
0
00dexter00 Messages postés 5 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 1 mars 2007
23 févr. 2007 à 06:32
Salut, désolé de faire remonter un aussi vieux post, mais il ya deux trucs que je ne comprends pas :
#!/usr/bin/perl -w

@donnees=split(/ /,`free -m| grep Mem`);
@donnees_ram=();
$j=0;
for ($i=0; $i<@donnees; $i++){
if ($donnees[$i] ne ''){
$donnees_ram[$j]=$donnees[$i];
$j=$j+1;
}
}
$ram=$donnees_ram[1]; 

Dans la fonction split(), on fait `free -m| grep Mem`, on peut exectuer du bash directement sans passer par d'autres fonction ?
Et puis qqn pourrait m'expliquer cette ligne là " if ($donnees[$i] ne '') " ?

Merci beaucoup de votre aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour 00dexter00.
La quote inversé permet en effet de lancer un processus.

Donc @donnees=split(/ /,`free -m| grep Mem`);
Signifie lancer le processus "free" avec l'optiom -m, capturer les résultat comprenants "Mem". La le processus se termine retournant cette valeur à perl sous forme d'une chaine, qu'il va séparer lorsqu'il va rencontrer un espace, puis mettre tout dans un tableau.

Voilà voilà...

Si tu veux plus d'informations sur le lancement de processus, va faire un tour sur
http://articles.mongueurs.net/magazines/linuxmag55.html
c'est très bien expliqué.
0