The OpenNET Project / Index page

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

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

"Timeout (linux) аналог в freebsd"  +/
Сообщение от strike1984 on 13-Ноя-13, 08:52 
Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
Задача запускать другие команды на несколько секунд.
P.S. То ли гуглю неудачно, но сходу ничего не нашел.
Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Timeout (linux) аналог в freebsd"  +/
Сообщение от Сергей (??) on 13-Ноя-13, 10:08 
> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?

A /bin/sleep не подойдет...


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Timeout (linux) аналог в freebsd"  +/
Сообщение от strike1984 on 13-Ноя-13, 10:42 
>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>  A /bin/sleep не подойдет...

Тогда дополнительно придется kill pid или killall program

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Timeout (linux) аналог в freebsd"  +/
Сообщение от Pahanivo (ok) on 13-Ноя-13, 11:14 
>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>  A /bin/sleep не подойдет...

походу товарисч имел ввиду:
man timeout
Start COMMAND, and kill it if still running after NUMBER seconds

> Тогда дополнительно придется kill pid или killall program

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

запускаем, сохраняем pid, грохаем по pid через sleep N ...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Timeout (linux) аналог в freebsd"  +/
Сообщение от lavr email on 13-Ноя-13, 11:24 
>>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>>  A /bin/sleep не подойдет...
> походу товарисч имел ввиду:
> man timeout
> Start COMMAND, and kill it if still running after NUMBER seconds
>> Тогда дополнительно придется kill pid или killall program
> эээ насколько я понимаю, это сделано не для того чтобы "запускать на
> несколько секунд", а чтобы подвисший процесс грохался автоматом с случие подвисания
> через определенный таймаут.
> запускаем, сохраняем pid, грохаем по pid через sleep N ...

угу, чтобы ничего не менять и оставить как в Linux: coreutils (gtimeout) из портов
или timelimit из портов

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

5. "Timeout (linux) аналог в freebsd"  +/
Сообщение от lavr email on 13-Ноя-13, 11:15 
>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>  A /bin/sleep не подойдет...
> Тогда дополнительно придется kill pid или killall program

/usr/ports/sysutils/coreutils

ничего не придется менять кроме timeout --на--> gtimeout

ps. timeout является частью coreutils, ставите порт и получаете (g)timeout

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

9. "Timeout (linux) аналог в freebsd"  +/
Сообщение от strike1984 on 13-Ноя-13, 14:04 
>>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>>  A /bin/sleep не подойдет...
>> Тогда дополнительно придется kill pid или killall program
> /usr/ports/sysutils/coreutils
> ничего не придется менять кроме timeout --на--> gtimeout
> ps. timeout является частью coreutils, ставите порт и получаете (g)timeout

Спасибо, timelimit отлично справился с задачей.
gtimeout так и не нашелся на 9.1

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Timeout (linux) аналог в freebsd"  +/
Сообщение от lavr email on 13-Ноя-13, 14:12 
>>>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>>>  A /bin/sleep не подойдет...
>>> Тогда дополнительно придется kill pid или killall program
>> /usr/ports/sysutils/coreutils
>> ничего не придется менять кроме timeout --на--> gtimeout
>> ps. timeout является частью coreutils, ставите порт и получаете (g)timeout
> Спасибо, timelimit отлично справился с задачей.
> gtimeout так и не нашелся на 9.1

так в портах же (как и timelimit):

#  grep timeout /usr/ports/sysutils/coreutils/pkg-plist
bin/gtimeout
#

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

3. "Timeout (linux) аналог в freebsd"  +/
Сообщение от fx (ok) on 13-Ноя-13, 10:42 
>  A /bin/sleep не подойдет...

верное утверждение.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

7. "Timeout (linux) аналог в freebsd"  +/
Сообщение от Andrey Mitrofanov on 13-Ноя-13, 12:35 
> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
> Задача запускать другие команды на несколько секунд.

Ну, я на bash-е делал: запуск осн.команды в bg, запуск 'sleep $TO;kill $PID_JOB_1', потом wait и сбор/интерпрпетайия результатов(RC1/RC2). Код давать?:*D

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Timeout (linux) аналог в freebsd"  +/
Сообщение от Andrey Mitrofanov on 13-Ноя-13, 12:46 
>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>> Задача запускать другие команды на несколько секунд.
> Ну, я на bash-е делал: запуск осн.команды в bg,

Имелось в виду: это--^ ~ $job_1_command & ~

> запуск 'sleep $TO;kill $PID_JOB_1'

, а это ~ { sleep $timeout; kill $PID_OF_JOB_1; } & ~ job#2

> , потом wait

- того из этих двух, который _первым завершится.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Timeout (linux) аналог в freebsd"  +/
Сообщение от strike1984 on 13-Ноя-13, 14:10 
>>> Всем доброго дня. Есть ли во freebsd команда timeout как в linux?
>>> Задача запускать другие команды на несколько секунд.
>> Ну, я на bash-е делал: запуск осн.команды в bg,
> Имелось в виду: это--^ ~ $job_1_command & ~
>> запуск 'sleep $TO;kill $PID_JOB_1'
> , а это ~ { sleep $timeout; kill $PID_OF_JOB_1; } & ~
> job#2
>> , потом wait
> - того из этих двух, который _первым завершится.

Спасибо. timelimit решил данную задачу, но если код не очень далеко, то было бы интересно глянуть, так как задач еще много)

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Timeout (linux) аналог в freebsd"  +/
Сообщение от Andrey Mitrofanov on 13-Ноя-13, 15:43 
>[оверквотинг удален]
>>>> Задача запускать другие команды на несколько секунд.
>>> Ну, я на bash-е делал: запуск осн.команды в bg,
>> Имелось в виду: это--^ ~ $job_1_command & ~
>>> запуск 'sleep $TO;kill $PID_JOB_1'
>> , а это ~ { sleep $timeout; kill $PID_OF_JOB_1; } & ~
>> job#2
>>> , потом wait
>> - того из этих двух, который _первым завершится.
> Спасибо. timelimit решил данную задачу, но если код не очень далеко, то
> было бы интересно глянуть, так как задач еще много)

<pd> Сим передаю в public domain. Я.

lastjobpid() { jobs -l |awk '$1~/\+$/{print$2}'; }
# Run:
#  { sleep $TT1 && $CC & } 2>/dev/null; time timeoutjob $TT2; echo $RC1+$RC2
# Returns: RC1 & RC2 globals - the guarded process & watchdogs' RC-s
#  [TT1;TT2;CC]=(1,10,true),(1,10,false),(10,1,yes) => [RC1+RC2]=(0,143),(1,143),(143,0)
timeoutjob() { {
  local PID=`lastjobpid` PID2;                  #the guarded pid
  sleep $1 && kill $PID &  PID2=`lastjobpid`    #the watchdog
    [ "$2" ] && $2   #asyncing [short lived job] by running while wait()
  wait $PID; RC1=$?;
  kill $PID2; wait $PID2; RC2=$?
  } >&/dev/null
#-echo "..... $PID2 . $PID + $RC1 . $RC2"   #FixME##leaves `sleep 60` sub-process behind##
}

#... Запуск того процесса:

{ $$$ТА_ПРОГРАММА$$$ >>"$dbg" 2>&1 <<<"$content" & } 2>/dev/null
timeoutjob 60 periodic_jobs #12-15s max. - normal per run, not 1000s+!

# Дальше ещё надо [глобальные] RC1+RC2 попроверять.


periodic_jobs - я ещё коперативную многозадачность прикрутил пока ТА_ПРОГРАММА работает, успеваю другие дела поделать. "60" - тот самый таймаут. B-g job-ов только эти два, других в скрипте нет. timeoutjob пускать сразу после перевода в bg job-а#1

Не образец стиля, но, выдранное из работающего _демона: 1) работает; 2) мож, и поломал чего, пока копипастил; 3) см.также fixme - у меня в wont fix.

А, да: linux (sles10/rhel6.3), bash, "обычные" утилиты.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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