bonjour,
je suis sous linux red hat 9.0 et j'aurai aimer savoir comment compiler un programme perl qui s'apel hello.pl et qui se situe ds /tmp/hello.pl ...
merci de votre aide
bonjour,
je suis sous linux red hat 9.0 et j'aurai aimer savoir comment compiler un programme perl qui s'apel hello.pl et qui se situe ds /tmp/hello.pl ...
merci de votre aide
Bonjour,
Perl est un langage interprété. Il n'est donc pas nécessaire de passer par une phase de compilation pour utiliser les scripts perl.
Plusieurs solutions sont disponibles :
marche à tous les coups
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl /mon_rep/mon_script.pl
Sinon, s'assurer que le script est bien avec les attributs "executable" (les x dans rwxr-xr-x quand on fait un), et ensuite l'invoquer simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ls -l /mon_rep/mon_script.pl
J'allais oublier ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part /mon_rep/mon_script.pl
Il faut aussi que ton script commence bien par le shebang :
Bonne continuation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #!/usr/bin/perl -w
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
merci bcp de ton aide
j'arrive a lancer mon prog mais en faite il ne m'affiche rien comme valeur CPU , voici ce qu'il me repond :
Charge Ã* 1 min 0.00
Charge Ã* 5 min 0.00
Charge Ã* 15 min 0.00
car pour l'instant j'essaye d'afficher juste les la charge.....
merci de m'aider
... poste ton code ...
Il a l'air de fonctionner, mais le problème semble logique ... BUG !!!!
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
voici les lignes de mon programme:
comment puis-je faire pour voir la valeur de ces charges correctemt?!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #! /usr/bin/perl -w use strict ; open LOAD, "</proc/loadavg"; my($loadavg)=<LOAD>; chomp $loadavg; close LOAD; my @charges = split (" ", $loadavg); print "Charge à 1 min $charges[0]\n" ; print "Charge à 5 min $charges[1]\n" ; print "Charge à 15 min $charges[2]\n" ;
merci infiniment...
Essaie avec ça (subtile modification) ...
Parce que chez moi, le code que tu fournis fonctionne impeccable Peut être parce que c'est celui que j'avais fourni dans un autre fil il y a quelques jours 8)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #! /usr/bin/perl -w use strict ; open LOAD, "</proc/loadavg" or die "Impossible d'acceder a loadavg" ; my($loadavg)=<LOAD>; chomp $loadavg; close LOAD; my @charges = split (" ", $loadavg); print "Charge a 1 min $charges[0]\n" ; print "Charge a 5 min $charges[1]\n" ; print "Charge a 15 min $charges[2]\n" ;
Sur quel système fonctionnes-tu ? (OS, version/distribution, version de perl, ...)
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
merci bcp de votre aide ca fonctionne
MERCI INFINNIMENT
Envoyé par Gaël Donat, sur un autre sujet
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
oups desoler
en faite j'ai presque fini car voici mon dernier probleme, voici meminfo :
total: used: free: shared: buffers: cached:
Mem: 526200832 186093568 340107264 0 54358016 66412544
Swap: 1069277184 0 1069277184
MemTotal: 513868 kB
et mon programme qui est ici :
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 #! /usr/bin/perl -w use strict ; # Recuperation du contenu du fichier open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire"; my($meminfo)=<LOAD>; chomp $meminfo; close LOAD; # affiche les valeur de meminfo my @charges = split (" ", $meminfo); # Traitement print "taille de ma memoire $charges[0]\n" ; print "taille de la memoire utiliser $charges[1]\n" ; print "taille de la memoire libre $charges[2]\n" ; print "\n" ;
me repond ceci :
taille de ma memoire total:
taille de la memoire utiliser used:
taille de la memoire libre free:
en faite il m'affiche la premiere or moi je veux le deuxieme....
ca doit etre simple mais je ne voi pa trop ..
merci
avec
Tu lis tout le fichier d'un coup, mais tu ne garde que la première ligne dans $meminfo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part my ($meminfo)=<LOAD>
Il te faut lire la première ligne dans une variable (et non une liste comme c'est le cas ici avec les parenthèses), puis lire la seconde ligne dans $meminfo.
Ensuite, une fois que tu as la ligne souhaitée dans $meminfo, tu peux récupérer les valeurs des colonnes.
Cependant, je te recommande de regarder attentivement ta description du pseudo-fichier /proc/meminfo, car les infos qui t'intéressent ne sont absolument pas dans les colonnes 0, 1 et 2 que tu utilises.
Et aussi :
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
bonjour ,
je vous ecrit car j'ai essayer toutes les solutions possble ce w-e pour lire ces maudits chiffres mais je n'y suis pa arrive alor j'en suis retombee au point de depart c'est a dire que j'ai toujours la reponse suivante :
taille de ma memoire total:
taille de la memoire utiliser used:
taille de la memoire libre free:
et le programme est le meme ..
mais il ne m'affiche pas le memoire total, utliser et libre...
total: used: free: shared: buffers: cached:
Mem: 261390336 210886656 50503680 0 56795136 84643840
Swap: 536731648 0 536731648
MemTotal: 255264 kB
MemFree: 49320 kB
MemShared: 0 kB
Buffers: 55464 kB
moije voudrais qu'il m'affiche ceci pour
memoire total : 261390336
memoire utiliser : 210886656
memoire libre : 50503680
je suis vraiment desoler mais j'ai deja esssyer diffrente solution
merci beaucoup.....
Ainsi que je te l'ai déjà signalé, il ne faut pas lire tout ton fichier d'un coup, dans une liste dont on ne garde que le premier élément (la première ligne).
C'est pourtant ce que signifie la variable seule entre parenthèses dans l'affectationIl te faut donc, soit traiter ligne par ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part my ($meminfo)=<LOAD>soit traiter sous forme de liste en négligeant la première ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $ligne_oubliee=<LOAD>; my $meminfo=<LOAD>;Ensuite, après ton split de $meminfo dans $charges, il faut faire attention aux champs que tu utilise. Ce n'est en aucun cas les champs 0, 1, 2 de charges, mais, si l'on se réfère au format de /proc/meminfo, il s'agit des champs 1, 2 et 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part my ($ligne_oubliee,$meminfo)=<LOAD>;
A adapter, donc ...
Tout est dans les spécifs ...
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
un idiome pratique pour ignorer des valeurs dans une affectation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my (undef, $seconde_valeur, undef, $quatrieme_valeur) = @tableau ;
--
Jedaï
salut je vien de finir mon programme qui marche parfaitement (meme sous crontab) ... avec votre aide..
Il marche mais ce que je veux faire c'est faire 2 seuilles (seuille1 et seuille2)
seuille1 serait 70 % de $charge[1]
seuille2 serait 90 % de $charge[1]
et donc en general
si seuille1 >= 70% de $charge[1]
afficher ("CRITICAL");
si seuille2 >= 90% de $charge[1]
afficher ("DANGER!!!!!!!!!");
je vous soumet mon propre programme:
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 #! /usr/bin/perl -w use strict ; open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire"; my $ligne_oubliee=<LOAD>; my $meminfo=<LOAD>; chomp $meminfo; close LOAD; # affiche les valeur de meminfo my @charges = split (" ", $meminfo); # Traitement print "taille de ma memoire $charges[1]\n" ; print "taille de la memoire utiliser $charges[2]\n" ; print "taille de la memoire libre $charges[3]\n" ; print "\n" ;
merci enormement
Et je te laisse trouver tout seul pour la zone Rouge (mais je t'aide un peu ... un else ajouté au if, avec un autre if bien senti, à l'intérieur ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if ($charge[2] >= (0.7 * $charge[1]) { print "Zone Orange\n"; }
[Edit]
Et comme l'a fort justement indiqué jedaï, tu peux avantageusement remplacer :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my $ligne_oubliee=<LOAD>; my $meminfo=<LOAD>;
[/Edit]
Code : Sélectionner tout - Visualiser dans une fenêtre à part my (undef, $meminfo)=<LOAD>;
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
Les balises codes mike21, crisse de tabernouche !!!!!!
@ ++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag
Je ne répond à aucune question technique par MP.
salut,
je vien (grace a votre aide) de faire un programme qui est le suivant :
#! /usr/bin/perl -w
use strict ;
open LOAD, "</proc/meminfo" or die "Impossible d'acceder a memoire";
my (undef, $meminfo)=<LOAD>;
chomp $meminfo;
close LOAD;
my @charges = split (" ", $meminfo);
print "taille de ma memoire total $charges[1]\n" ;
print "taille de la memoire utiliser $charges[2]\n" ;
print "taille de la memoire libre $charges[3]\n" ;
print "\n" ;
if ($charges[2] >= (0.7 * $charges[1])) {
open FILE, '>/tmp/test_mij' or die "/tmp/test_mij : $!\n";
print FILE "CRITICAL!!!\n";
close FILE;
}
else {
if ($charges[2] >= (0.9 * $charges[1])) {
open FILE, '>/tmp/test_mij' or die "/tmp/test_mij : $!\n";
print FILE "MEMEOIRE INSUFFISANTE ,DANGER !!!\n";
close FILE;
}
}
mais ce programme m'affiche toujours CRITICAL mais ce n'est pas ce que je veux, en faite je voulais qu'il affiche CRITICAL des que le seuil attein 70 % et qu'il envoi le 2ieme mess des qu'il atteint 90 % de la mem total..
merci
Evidemment, à force de lire des bétises, je finis par en écrire, moi-même .
La structure algorithmique de ton test doit être une des suivantes, qui sont équivalentes :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Si charge > seuil2 Alors Afficher (Alerte Rouge) Sinon Si charge > seuil1 Alors Afficher (Alerte Orange) Finsi Finsi
A toi de recoder ça, maintenant 8)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Si charge > seuil1 Alors Si charge > seuil2 Alors Afficher (Alerte Rouge) Sinon Afficher (Alerte Orange) Finsi Finsi
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
voici ce que j'ai fait :
if ($charges[2] >= (0.7 * $charges[1])) {
print "CRITICAL!!!\n";
}
else {
if ($charges[2] >= (0.9 * $charges[1])) {
print "MEMEOIRE INSUFFISANTE ,DANGER !!!\n";
}
}
pourtant j'ai bien choisi la premiere solution mais ca ne fonctionne pas!!
je suis desole mais ca ne marche pas..
Parce que tu as inversé les deux tests de seuil !!!
Regarde bien mon premier algorithme. On teste d'abord par rapport au seuil2, soit la valeur la plus élevée, pour afficher l'alerte rouge, et ensuite par rapport au seuil2 (tes 70%) ...
Voila l'erreur
[Edit]
Et aussi ...
nontidju !!!!
[/edit]
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager