| Summary: | [FR] wait_test() | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Michael Shigorin <mike> |
| Component: | libshell | Assignee: | Alexey Gladkov <legion> |
| Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
| Severity: | enhancement | ||
| Priority: | P2 | CC: | glebfm, inger, legion |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
(В ответ на комментарий №0) > Пример ситуации, когда понадобилось -- alterator-ovz: > > alt_new() > { > # ... > запускаем_длинную_команду_в_фоне \ > > $LOG_DIR/$in_profile 2>&1" & Почему после этого не сказать wait и после этого проверить файл ? > # а вот здесь можем вернуться слишком рано > # и за этим логом следить не предложат > for i in `seq 1 5`; do > [ -s "$LOG_DIR/$in_profile" ] && break > sleep 1 > done > # но мы хитрей :) > echo '()' > } Уже не помню, но про wait знал и тогда. (В ответ на комментарий №2) > Уже не помню, но про wait знал и тогда. Тогда закрой. Хорошо. |
Возможно ли добавить в libshell такую функцию для конечного периодического теста с таймаутом? (название, возможно, неоптимальное...) # $1 is a test (e.g. "-s" for "non-empty file") # $2 is an object to apply test to (e.g. a filename) # $3 is timeout (5 by default; e.g. "10") # $4 is a pause (1 sec by default; e.g. "0.1") wait_test() { [ -n "$1" -a -n "$2 ] || return tries=${3:-5} pause=${4:-1} for i in `seq 1 $tries`; do [ "$1" "$2" ] && break sleep $pause done } В некоторых ситуациях может хотеться поспать "перед", а не "после", но это можно компенсировать добавлением своего sleep перед вызовом данной функции. Пример ситуации, когда понадобилось -- alterator-ovz: alt_new() { # ... запускаем_длинную_команду_в_фоне \ > $LOG_DIR/$in_profile 2>&1" & # а вот здесь можем вернуться слишком рано # и за этим логом следить не предложат for i in `seq 1 5`; do [ -s "$LOG_DIR/$in_profile" ] && break sleep 1 done # но мы хитрей :) echo '()' }