The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Ограничение времени исполнения в shell, !*! Agp, 11-Май-08, 00:37  [смотреть все]
Здравствуйте
Подскажите пожалуйста есть ли способ ограничить время выполнения команды по времени, желательно в shell, или на худой конец в perl. Есть сценарий который ходит по каталогам и выполняет некоторые операции. Иногда эти операции могут подвиснуть, по независимым причинам. Хотелось бы ограничить время на эти операции, типа не успелось за пять минут, так и хрен с ним, идём в следующий каталог. Саму подвисшую операцию конечно неплохо прибить.
  • Ограничение времени исполнения в shell, !*! ффф, 14:38 , 11-Май-08 (1)
    один процесс - родительский (он же таймер) запускает в фоновом режиме саму программу - когда  время вышло убивает сначала дочку потом себя
    • Ограничение времени исполнения в shell, !*! Agp, 09:12 , 12-Май-08 (2)
      Ага. Можете запостить какой-нибудь пример как делать таймер? и как определить имя запускаемого дочернего процесса?
      Себя, родительский процесс, убивать не надо.

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

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

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

        #!/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;
            }
        }

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

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

  • Ограничение времени исполнения в shell, !*! madskull, 16:03 , 26-Май-08 (5)
    >Здравствуйте
    >Подскажите пожалуйста есть ли способ ограничить время выполнения команды по времени, желательно
    >в 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 # и убиваем всех




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

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