Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Завершить команду после определенного периода времени / 10 сообщений из 10, страница 1 из 1
08.06.2007, 16:21:25
    #34584581
cooluser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
Господа!

А есть ли в bash стандартное решение, которое позволяет решить такую простую задачу:

Запускаем скрипт и указываем время, по истечении которого скрипт и все порожденные им процессы необходимо прибить, пусть даже по -9

Что то вроде:
exec_and_kill myprogram 10min
...
Рейтинг: 0 / 0
08.06.2007, 16:33:43
    #34584620
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
список порожденных процессов заранее известен?
...
Рейтинг: 0 / 0
08.06.2007, 16:37:42
    #34584632
cooluser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
miksoftсписок порожденных процессов заранее известен?
неа. ну допустим в самом простом случае скрипт не пораждает никаких процессов. только он сам и работает, чО делать?
...
Рейтинг: 0 / 0
08.06.2007, 17:26:14
    #34584810
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
см. команду at
...
Рейтинг: 0 / 0
08.06.2007, 21:31:42
    #34585248
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
в принципе, можно сделать это прямо в самом скрипте, через перехват SIGALRM
Например, ждём ввода от пользователя всего 5 секунд:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#!/bin/sh

timeout= 5 
trap 'exit' ALRM
( sleep $timeout && kill -ALRM "$$" ) & {
read a
}
echo "a=$a"
...
Рейтинг: 0 / 0
09.06.2007, 08:41:04
    #34585515
cooluser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
Спасибо но это не то.

Необходимо именно запустить внешний скрипт, даже точнее процесс, это может быть и бинарник, и через определенное время гарантированно его прибить.

По поводу команды AT - это шедулер, тоже не то

Вообще я удивлен, что в nix нет способа решить мою простую задачу быстро...
...
Рейтинг: 0 / 0
09.06.2007, 10:12:27
    #34585620
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
ничего сложного: пишем шельник, который запустит, убьет и сам завершится после этого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#!/bin/sh
#runner.sh

./program &
killpid=$!
sleep  10 
kill - 9  $killpid


./runner.sh &
...
Рейтинг: 0 / 0
09.06.2007, 13:19:57
    #34586039
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
cooluserПо поводу команды AT - это шедулер, тоже не топочему же не то? назначаешь на время "через 10 минут" команду kill - чем "не то" ?
...
Рейтинг: 0 / 0
11.06.2007, 11:21:15
    #34587859
Frame Relay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
Вот тут обсуждалась подобная задача:
Как заставить прогу работать в заданном интервале времени (в фоне)?
Особенность — завершение работы для прог со встроенной возможностью запуска в фоне как демон (пример — wget -b). Для них этот кусок кода не подходит:
Код: plaintext
./program &\nkillpid=$!\n
Переменная $! возвратит pid процесса-запускача для демона, но не pid самого демона.
Короче, внимательно прочитайте по ссылке выше. Проверено. Пример с использованием sed и awk работает.
...
Рейтинг: 0 / 0
11.06.2007, 11:47:08
    #34587916
Frame Relay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завершить команду после определенного периода времени
Вдогонку:
Вышеприведенная ссылка работает только для тех прог, которые при запуске выдают текстовое сообщение с pid-ом запущенного демона. Это сообщение парсится для выделения нужного pid-а.

Если при подобном запуске никаких pid-ов не выдаётся, то нужно запомнить pid запускача ($!) и по нему выловить все pid-ы подчинённых процессов.

Всё сказанное мной относится к тем прогам, которые могут запускаться как демоны соответствующим ключом (не &). Пример — wget с ключом -b.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Завершить команду после определенного периода времени / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]