Жив ли процесс?
$pid_exsist=`ps ax | grep 1696`;
print STDERR "$pid_exsist\n";
if ($pid_exsist == 1)
{
print STDERR "ok\n";
};
Но это не работает, в чем проблема???
Цитата:
Originally posted by unmoved
Как определить есть ли процесс в системе по его номеру в Perl, есть такой код:
$pid_exsist=`ps ax | grep 1696`;
print STDERR "$pid_exsist\n";
if ($pid_exsist == 1)
{
print STDERR "ok\n";
};
Но это не работает, в чем проблема???
Как определить есть ли процесс в системе по его номеру в Perl, есть такой код:
$pid_exsist=`ps ax | grep 1696`;
print STDERR "$pid_exsist\n";
if ($pid_exsist == 1)
{
print STDERR "ok\n";
};
Но это не работает, в чем проблема???
Проблема в твоем коде :)):
1.
Код:
$pid_exsist=`ps ax | grep 1696`;
это не верно, т.к. с большой вероятностью грепнется и сам процесс grep 1696.
2.
Код:
if ($pid_exsist == 1)
ты вобще в курсе, что теперь лежит в $pid_exsist?
Там лежит строка - результат выполнения `ps ax | grep 1696` - например :
"29499 pts/1 S+ 0:00 grep grep"
а ты сравниваешь эту строку с 1.
То есть я бы сделал так :
$pid_exsist=`ps ax | grep 1696|grep -v grep`;
print STDERR "$pid_exsist\n";
if($pid_exsist){
print STDERR "ok\n";
}
Цитата:
То есть я бы сделал так :
$pid_exsist=`ps ax | grep 1696|grep -v grep`;
print STDERR "$pid_exsist\n";
[color=red]if($pid_exsist){[/color]
print STDERR "ok\n";
}
выделенное условие всегда будет true.
нам нужно в $pid_exists получить 1 или 0. поэтому надо использовать system() (perldoc -f system) которая возвращает код возврата последней команды. я бы сделал так:
Код:
$pid_exists = system("ps ax | grep -v grep | grep $pid_num >/dev/null") ;
if (!$pid_exists)
{
print "pid $pid_num exists";
}
if (!$pid_exists)
{
print "pid $pid_num exists";
}
Цитата:
Originally posted by squirL
выделенное условие всегда будет true.
Код:
if($pid_exsist){
выделенное условие всегда будет true.
а вы проверяли ? я - да )). Это условие будет true, если в
Код:
$pid_exsist=`ps ax | grep 1696|grep -v grep`
Ваш пример, конечно отже работает, но в моем случае вы не правы.
Цитата:
Originally posted by borodatyi
а вы проверяли ? я - да )). Это условие будет true, если в
будет не 0 или не "", то есть не нулевая строка. Так что мой пример работает отлично и правильно ))
Ваш пример, конечно отже работает, но в моем случае вы не правы.
а вы проверяли ? я - да )). Это условие будет true, если в
Код:
$pid_exsist=`ps ax | grep 1696|grep -v grep`
Ваш пример, конечно отже работает, но в моем случае вы не правы.
угу... что то я сегодня туплю...