The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Ограничение времени исполнения в shell"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Ограничение времени исполнения в shell"  
Сообщение от Agp email(??) on 11-Май-08, 00:37 
Здравствуйте
Подскажите пожалуйста есть ли способ ограничить время выполнения команды по времени, желательно в shell, или на худой конец в perl. Есть сценарий который ходит по каталогам и выполняет некоторые операции. Иногда эти операции могут подвиснуть, по независимым причинам. Хотелось бы ограничить время на эти операции, типа не успелось за пять минут, так и хрен с ним, идём в следующий каталог. Саму подвисшую операцию конечно неплохо прибить.
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Ограничение времени исполнения в shell"  
Сообщение от ффф on 11-Май-08, 14:38 
один процесс - родительский (он же таймер) запускает в фоновом режиме саму программу - когда  время вышло убивает сначала дочку потом себя
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Ограничение времени исполнения в shell"  
Сообщение от Agp email(??) on 12-Май-08, 09:12 
Ага. Можете запостить какой-нибудь пример как делать таймер? и как определить имя запускаемого дочернего процесса?
Себя, родительский процесс, убивать не надо.

>один процесс - родительский (он же таймер) запускает в фоновом режиме саму
>программу - когда  время вышло убивает сначала дочку потом себя
>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Ограничение времени исполнения в shell"  
Сообщение от distant.admin email on 12-Май-08, 15:28 
>Ага. Можете запостить какой-нибудь пример как делать таймер? и как определить имя
>запускаемого дочернего процесса?
>Себя, родительский процесс, убивать не надо.
>
>>один процесс - родительский (он же таймер) запускает в фоновом режиме саму
>>программу - когда  время вышло убивает сначала дочку потом себя
>>

Примерно так:

#!/usr/local/bin/perl -w

my $pid = fork();
if (not defined $pid) {
    print "resources not avilable.\n";
}
if ($pid == 0) {
    print "CHILD0 == \$pid: $pid and \$\$: $$ \n";
    sleep 20;
    print "CHILD1 == \$pid: $pid and \$\$: $$\n";
    exit(0);
}
if (! $pid == 0){
    print "PARENT == \$pid: $pid and \$\$: $$\n";
    if (defined $pid){
        sleep 10;
        print "kill CHILD $pid\n";
        kill $pid;
    }
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Ограничение времени исполнения в shell"  
Сообщение от yuuum on 23-Май-08, 13:05 
>Здравствуйте
>Подскажите пожалуйста есть ли способ ограничить время выполнения команды по времени, желательно
>в shell, или на худой конец в perl. Есть сценарий который
>ходит по каталогам и выполняет некоторые операции. Иногда эти операции могут
>подвиснуть, по независимым причинам. Хотелось бы ограничить время на эти операции,
>типа не успелось за пять минут, так и хрен с ним,
>идём в следующий каталог. Саму подвисшую операцию конечно неплохо прибить.

есть порт во фре:
http://www.freebsd.org/cgi/url.cgi?ports/sysutils/timelimit/...
будет работать и под линукс(исходники по ссылке)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Ограничение времени исполнения в shell"  
Сообщение от madskull (??) on 26-Май-08, 16:03 
>Здравствуйте
>Подскажите пожалуйста есть ли способ ограничить время выполнения команды по времени, желательно
>в shell, или на худой конец в perl. Есть сценарий который
>ходит по каталогам и выполняет некоторые операции. Иногда эти операции могут
>подвиснуть, по независимым причинам. Хотелось бы ограничить время на эти операции,
>типа не успелось за пять минут, так и хрен с ним,
>идём в следующий каталог. Саму подвисшую операцию конечно неплохо прибить.

(Задача решена? А то подняли тему через две недели, думай теперь... :) )

На самом деле все просто:


my_process & p1=$! # рабочий процесс
sleep 5 & p2=$! # типа таймер
while [ -d /proc/$p1 -a -d /proc/$p2 ]; do sleep 1; done  # ждем хоть кого-нить...
{ kill $p1; kill $p2; } &>/dev/null # и убиваем всех

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру