The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Случайная задержка в shell-скрипте, выполняемом из crontab, auto_tips (??), 27-Июл-22, (0) [смотреть все] +3

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


8. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +4 +/
Сообщение от OpenEcho (?), 28-Июл-22, 11:58 
Plain C:
```
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void main () {
  srand(time(NULL));
  int r = rand() % 3600;
  printf("\nSleeping for %d seconds\n", r);
  sleep(r);
}
```

Go: (go build -ldflags "-s -w" this_source.go) << будет работать везде т.к. статика
```
package main

import "fmt"
import "math/rand"
import "time"

func main() {
    rnd := time.Now().UTC().UnixNano()
    rand.Seed(rnd)
    rs  := rand.Intn(3600)
    fmt.Println("Sleeping for: ",rs," second(s)")
    time.Sleep(time.Duration(rs) * time.Second)
}
```


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

18. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +/
Сообщение от Аноним (18), 29-Июл-22, 16:14 
> srand(time(NULL))

Это точно нормальный вариант? У десятка задач будет одинаковое время запуска (с точностью до секунды)... и одинаковый random seed...
Тогда уж лучше getpid().

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

20. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +/
Сообщение от OpenEcho (?), 29-Июл-22, 18:10 
>> srand(time(NULL))
> Это точно нормальный вариант?

Точно:

> srand(time(NULL));

makes use of the computer's internal clock to control the choice of the seed.  Since time is continually changing, the seed is forever changing.  Remember, if the seed number remains the same, the sequence of numbers will be repeated for each run of the program.

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

24. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +/
Сообщение от Аноним (24), 30-Июл-22, 00:28 
Ну вот запустил крон 10 штук процессов в одну и ту же секунду. Все 10 процессов выполнили time и получили одинаковое значение. И у всех процессов будет одинаковый начальный random seed (например, у меня сейчас 1659129796). И все 10 потом стартанут через одинаковую паузу...

Точно надо было этого добиться?

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

25. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  –1 +/
Сообщение от OpenEcho (?), 30-Июл-22, 13:48 
> Ну вот запустил крон 10 штук процессов в одну и ту же
> секунду.

Можно ткуть в ту самую строчку, где в тех.задании сказанно про число 10?
ОП, хочет запускать ОДИН шел скрипт. Не надо придумывать то, что не спрашивали и не надо быть телепатом, чтоб угадать наперед все что можно случиться, - это первое правило в любом серьезном бизнесе - "делай то, что сказанно". Нужна функция случайной задержки в пределах заданного времени, В СКРИПТЕ шела, чтобы запустить что-то позже, опять же, что то "ОДНО". Все. Одноразово.

О каких 10 процессах речь? Зачем усложнять там, где это - НЕ НУЖНО


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

26. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  –1 +/
Сообщение от Аноним (26), 30-Июл-22, 16:54 
Про 10 параллельно запускаемых задач нет ни слова. Это была моя попытка проиллюстрировать почему решение получилось не очень на конкретном примере. Неудачная попытка.

В решении (и в задании) ОПа написано
> Случайная задержка в shell-скрипте
> задержка будет случайная

У тебя получилась скорее РАЗНАЯ (и при этом ПРОГНОЗИРУЕМАЯ, тов. майор) задержка, но не СЛУЧАЙНАЯ! Можно достаточно точно предсказать в какое время каждый день скрипт будет отрабатывать. Так себе случайность, на месте ОПа я бы твоё решение не принял и отправил на доработку как несоответствующее заданию.
А вот на месте тов. майора федеральной службы - всячески бы топил за твой вариант.

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

67. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +/
Сообщение от Аноним (66), 19-Ноя-22, 15:26 
Нафига козе этот баян, если такое простое действо можно/нужно на скриптоте?
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

68. "Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)"  +/
Сообщение от OpenEcho (?), 20-Ноя-22, 13:17 
> Нафига козе этот баян, если такое простое действо можно/нужно на скриптоте?

Есть такое слово  "независимость",  - гарантия того, что код не сломается с годами, как в примере питон2->питон3 ;)

Хотя для ОП случая вполне достаточно

<code>
    echo $(($RANDOM %3600))
</code>

на не секьюрных машинах

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

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

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




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

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