Tout d'abord voici le programme sur lequel je bute.
#!/usr/bin/perl -w
use strict;
my @dblist = `/usr/bin/mysql -e "SHOW DATABASES" -s | grep ^syslog`; #
liste les bases dont le nom commence pae syslog
my $dbname;
foreach $dbname (@dblist) {
my $pid_mysql;
my @listps = `ps -ef`;
grep ".$dbname.",@listps;
$pid_mysql = `ps -ef | grep -i "$dbname" | grep -v grep | awk '{print
$2}'`; # c'est ici que se situe le problème
}
Cette commande récupère le pid relatif au contenu de $dbname. Mais en fait,
grep analyse la variable $dbname et non son contenu si bien que le terme que
je recherche n'est pas trouvé et je récupère tous les pid au mieu de ceux
qui m'interresse.
Si un esprit éclairé venait à passer par là ......
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis -esp2008-
Bonjour,
grep ".$dbname.",@listps;
A quoi sert cette ligne ? S'il n'y a qu'un seul nom de processus contenant $dbname, on peut le récupérer comme ça: ($pid_mysql) = grep /$dbname/,@listps; # et éventuellement récupérer le pid en lui-même ensuite: $pid_mysql = split /s+/, $pid_mysql;
Mais en suivant ce raisonnement la ligne suivant n'est qu'un simple print, je ne suis pas sûr que c'était exactement cela la question.
Bonne chance,
-- Denis
Bonjour,
grep ".$dbname.",@listps;
A quoi sert cette ligne ?
S'il n'y a qu'un seul nom de processus contenant $dbname, on peut le
récupérer comme ça:
($pid_mysql) = grep /$dbname/,@listps;
# et éventuellement récupérer le pid en lui-même ensuite:
$pid_mysql = split /s+/, $pid_mysql;
Mais en suivant ce raisonnement la ligne suivant n'est qu'un simple print,
je ne suis pas sûr que c'était exactement cela la question.
A quoi sert cette ligne ? S'il n'y a qu'un seul nom de processus contenant $dbname, on peut le récupérer comme ça: ($pid_mysql) = grep /$dbname/,@listps; # et éventuellement récupérer le pid en lui-même ensuite: $pid_mysql = split /s+/, $pid_mysql;
Mais en suivant ce raisonnement la ligne suivant n'est qu'un simple print, je ne suis pas sûr que c'était exactement cela la question.