Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка, запущен ли perl скрипт, pidof не только мой скрипт возвращает 
V
    Опции темы
CPlusPlusFAN
Дата 10.10.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Здравствуйте, у меня есть перл скрипт
Код

print <STDIN>;


, который запускается
Код

perl launch.pl


Затем запускаю скрипт
Код

`echo pidof "perl launch.pl"`;


, который должен мне вернуть pid моего перл скрипта, однако он возвращает pid'ы всех запущенных перл скриптов и моего тоже.

Также пробовал добавлять строчку
Код

#! /usr/bin/perl


и запускать соответственно
Код

./launch.pl


А затем скрипт
Код

`echo pidof "./launch.pl"`;


, так он мне вобще ничего не возвращает.

Подскажите, как лучше запускать перл скрипт и выполнять проверку на запуск, чтобы возвращался pid только моего перл скрипта (или ничего, если таковой не запущен).
PM MAIL ICQ Jabber   Вверх
marykone
Дата 10.10.2008, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 2
Всего: 67



pidof perl это проверка самого перла 

ps -ax | grep launch.pl так попробуйте ! 


--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
CPlusPlusFAN
Дата 10.10.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(marykone @  10.10.2008,  07:51 Найти цитируемый пост)
pidof perl это проверка самого перла 

ps -ax | grep launch.pl так попробуйте !  


Ага. Работает. Только не -ax, а ax. smile 
PM MAIL ICQ Jabber   Вверх
marykone
Дата 10.10.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 2
Всего: 67



Цитата(CPlusPlusFAN @  10.10.2008,  13:50 Найти цитируемый пост)
Только не -ax, а ax.

а сминусом не канает ? что за дистрибутив ?
пометь вопрос как решенный 



--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
nitr
Дата 10.10.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 5
Всего: 84



Более точный вариант:
Цитата
perl -MPOSIX -e 'print &POSIX::getpid'

т.е. в вашем скрипте
Код
#!/usr/bin/perl
use ......
use POSIX 'getpid';
...
my $pid_script = &getpid;
...


Добавлено через 3 минуты и 20 секунд
marykone, а где "-ax" работает без варнинга? Сколько не встречал *nix-систем, везде данный варнинг вылазил... ;)
Цитата

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html


Добавлено через 4 минуты и 54 секунды
Цитата(marykone @  10.10.2008,  07:51 Найти цитируемый пост)
ps -ax | grep launch.pl так попробуйте ! 

если в скрипте или выводе будет ошибка, то можно получить неверный PID smile , спросите на форуме Perl, имхо посоветуют POSIX::getpid()...


--------------------
PM   Вверх
CPlusPlusFAN
Дата 10.10.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(marykone @  10.10.2008,  16:26 Найти цитируемый пост)
а сминусом не канает ? что за дистрибутив ?

Варнинг вылазит. Ubuntu 8.04.1.


Цитата(marykone @  10.10.2008,  16:26 Найти цитируемый пост)
пометь вопрос как решенный

Сделано.
PM MAIL ICQ Jabber   Вверх
marykone
Дата 13.10.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 2
Всего: 67



Цитата(nitr @  10.10.2008,  22:17 Найти цитируемый пост)
marykone, а где "-ax" работает без варнинга? Сколько не встречал *nix-систем, везде данный варнинг вылазил... ;)

Цитата

root:>ps -ax |grep syslogd
  284  ??  Ss     1:09.01 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -s
22659  p3  S+     0:00.00 grep syslogd
root:>ps ax |grep syslogd
  284  ??  Is     1:09.01 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -s
22673  p3  S+     0:00.00 grep syslogd
root:>uname -a
FreeBSD aqua.HZ.dmz 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May  8 10:21:06 UTC 2005     [email protected]:/usr/obj/usr/src/sys/GENERIC  i386


Это сообщение отредактировал(а) marykone - 13.10.2008, 17:36


--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
krwlr
Дата 13.10.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 5
Всего: 51



Цитата(nitr @  10.10.2008,  22:17 Найти цитируемый пост)
Сколько не встречал *nix-систем, везде данный варнинг вылазил..

Цитата

krwlr[~]$ ps ax | grep syslogd
2108 ?        Ss     0:00 /usr/sbin/syslogd
2855 pts/0    S+     0:00 grep syslogd

Цитата

alex[~]$ uname -a
Linux zenwalk 2.6.25.4 #1 SMP PREEMPT Fri May 16 14:10:46 CEST 2008 i686 AMD Sempron™ 2200+ AuthenticAMD GNU/Linux



--------------------
убрал
PM   Вверх
nitr
Дата 14.10.2008, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 5
Всего: 84



krwlr, и что? Покажите листинг ps -ax. Варнинг будет 100%.

marykone, я во фри с 5.1.1 версии, -ax варнинг выдавал... Просто использовал -ax ещё со "старых" времен, по манам видел... А потом заметил варнинг smile
Цитата
[nitr@SamsungQ210 ~]$ ps -ax | grep syslogd
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
 5277 pts/1    R+     0:00 grep syslogd
[nitr@SamsungQ210 ~]$ ps ax | grep syslogd
 5314 pts/1    S+     0:00 grep syslogd
[nitr@SamsungQ210 ~]$ uname -a
Linux SamsungQ210 2.6.26-ARCH #1 SMP PREEMPT Tue Sep 9 10:15:21 UTC 2008 i686 Intel® Core™2 Duo CPU P8400 @ 2.26GHz GenuineIntel GNU/Linux
[nitr@SamsungQ210 ~]$ 



--------------------
PM   Вверх
gcc
Дата 12.12.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



не понял, как посмотреть запущин ли скрипт? чтобы паралельно два скрипта не запустились? запускаються через крон каждые 3 минуты

Добавлено через 59 секунд

Код

my $pid_script = &getpid;


что с этим делать?
PM WWW ICQ Skype GTalk Jabber   Вверх
nickless
Дата 13.12.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(gcc @  12.12.2008,  20:21 Найти цитируемый пост)
что с этим делать? 

Скрипт при старте получает свой PID, читает файл вроде /tmp/myscript.pid, если файл существует и в нём записан PID != $pid_script, значит другой скрипт еще работает, выходим с ошибкой, если файла нет, пишем свой PID в него, делаем что надо, перед окончанием удаляем файл. Просто и сердито...

Это сообщение отредактировал(а) nickless - 13.12.2008, 22:35


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
gcc
Дата 13.1.2009, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



есть модули удобные...

Код

  use File::Pid;
  
  my $pidfile = File::Pid->new({
    file => '/some/file.pid',
  });
  
  $pidfile->write;
  
  if ( my $num = $pidfile->running ) {
      die "Already running: $num\n";
  }

  $pidfile->remove;


PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 13.1.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



что-то не понял


Код

use strict;
use DBI;
use Fcntl ':flock';
use File::Pid;

  my $pidfile = File::Pid->new({
    file => '/var/run/ll.pid',
  });

#  my $pid = $pidfile->pid;
#  print $pid;

use POSIX 'getpid';

my $pid_script = &getpid;
print $pid_script;

  $pidfile->write;

  if ( my $num = $pidfile->running ) {
      die "Already running: $num\n";
  }
................................................................................

print '1ghjfgj'; # test
$pidfile->remove;        
exec qw(perl -0777 -i -pe), 's/$/\n' . $pos . '/', $0;
    exit;
}

__DATA__
76402


я запускаю 

Код

# ./ll.pl
404091ghjfgj# 
# ./ll.pl
Already running: 40410
40410# 
# ./ll.pl
404111ghjfgj# 
# ./ll.pl
Already running: 40412
40412# 


почему он пишет через один раз что скрипт уже запущен? скрипт выполняется быстро

pid все время один чтоли?


Это сообщение отредактировал(а) gcc - 14.1.2009, 03:12
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1171 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.