Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Жив ли процесс?

373
02 февраля 2006 года
unmoved
216 / / 28.11.2004
Как определить есть ли процесс в системе по его номеру в Perl, есть такой код:
$pid_exsist=`ps ax | grep 1696`;
print STDERR "$pid_exsist\n";
if ($pid_exsist == 1)
{
print STDERR "ok\n";
};
Но это не работает, в чем проблема???
15K
06 февраля 2006 года
borodatyi
16 / / 06.02.2006
Цитата:
Originally posted by unmoved
Как определить есть ли процесс в системе по его номеру в 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";
}
2
08 февраля 2006 года
squirL
5.6K / / 13.08.2003
Цитата:

То есть я бы сделал так :

$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";
}
15K
08 февраля 2006 года
borodatyi
16 / / 06.02.2006
Цитата:
Originally posted by squirL
 
Код:
if($pid_exsist){


выделенное условие всегда будет true.



а вы проверяли ? я - да )). Это условие будет true, если в

 
Код:
$pid_exsist=`ps ax | grep 1696|grep -v grep`
будет не 0 или не "", то есть не нулевая строка. Так что мой пример работает отлично и правильно ))

Ваш пример, конечно отже работает, но в моем случае вы не правы.
2
08 февраля 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by borodatyi
а вы проверяли ? я - да )). Это условие будет true, если в
 
Код:
$pid_exsist=`ps ax | grep 1696|grep -v grep`
будет не 0 или не "", то есть не нулевая строка. Так что мой пример работает отлично и правильно ))

Ваш пример, конечно отже работает, но в моем случае вы не правы.



угу... что то я сегодня туплю...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог