[linux][cron]Запуск проги ровно в начале часа
Запускай её на минут раньше и жди нужного времени в самой программе, например.
Чуве, забей на линукскс, если тебе нужна точность.
А если это сторонняя программа?
Хотя ты прав насчёт того, что при таких жёстких требованиях надо забить на линух и юзать какую-нибудь RTOS.
---
...Я работаю антинаучным аферистом...
А где гарантии, что форк-екзек сработает за XXX мс?
![](/images/graemlins/smile.gif)
---
...Я работаю антинаучным аферистом...
Я очень не рюхаю в линуксах, но, может быть, ранлевелы инита могут как-то помочь?
Или сигналы попосылать.
---
...Я работаю антинаучным аферистом...
Всё равно никто не может гарантировать что система в этот момент не занимается сжатием видео с максимальным приоритетом. И ещё полчаса будет этим заниматься.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
В исходной задаче упоминается три секунды. Если программе это настолько критично, то ей уже ничего не поможет.
Непонятно, крон запускает задачи параллельно или последовательно? И если последовательно, как ему объяснить, что данная задача имеет более высокий приоритет?
Это он должен сообщить допустимую задержку.
---
...Я работаю антинаучным аферистом...
Хорошо, допустимая задержка: 1 секунда. Это что так мало?
Читай исходник.
БСДёвый, судя по всему, последовательно.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
---
...Я работаю антинаучным аферистом...
![](/images/graemlins/smile.gif)
Правь исходник.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
~> crontab -l
* * * * * /home/lynn/bin/a.sh
* * * * * /home/lynn/bin/c.sh
* * * * * /home/lynn/bin/d.sh
* * * * * /home/lynn/bin/b.sh
~> ps ax
...
15206 ? S 0:00 /USR/SBIN/CRON
15207 ? Ss 0:00 /bin/sh -c /home/lynn/bin/b.sh
15208 ? S 0:00 /USR/SBIN/CRON
15209 ? Ss 0:00 /bin/sh -c /home/lynn/bin/d.sh
15210 ? S 0:00 /USR/SBIN/CRON
15211 ? Ss 0:00 /bin/sh -c /home/lynn/bin/c.sh
15212 ? S 0:00 /USR/SBIN/CRON
15218 ? Ss 0:00 /bin/sh -c /home/lynn/bin/a.sh
...
~>
Тут даже не в задержке дело. Просто на машине у крона есть такие задания, которые могут выполняться более минуты! Если задания запускаются последовательно, то надо как-то объяснить крону, что моя задача приорететнее.
![](/images/graemlins/smile.gif)
for (j=jhead; j; j=jn) {
do_command(j->e, j->u);
jn = j->next;
free(j);
run++;
}
В do_command спрятан обычный switch(fork{...}.
Я не знаю, как у тебя.
Да, cron от Paul Vixie.
---
...Я работаю...
> которые могут выполняться более минуты!
И что?
> Если задания запускаются последовательно,
Тогда они всегда запускаются параллельно, иначе это не cron.
> то надо как-то объяснить крону, что моя задача приорететнее.
Изучить исходники и правильно составить crontab.
Или забить в cron.
---
...Я работаю...
cron - daemon to execute scheduled commands (Vixie Cron)
Я в исходники не смотрел, я просто запустил его.
ЗЫ. Содержание {a,b,c,d}.sh
#!/bin/sh
sleep 20
void
do_command(e, u)
entry *e;
user *u;
{
...
switch (fork {
case -1:
log_it("CRON",getpid"error","can't fork");
break;
case 0:
/* child process */
acquire_daemonlock(1);
child_process(e, u);
/* NOTE THE LINE ABOVE -- K. */
Debug(DPROC, ("[%d] child process done, exiting\n", getpid
/* NOTE THE LINE BELOW -- K. */
_exit(OK_EXIT);
break;
default:
/* parent process */
break;
}
Debug(DPROC, ("[%d] main process returning to work\n", getpid
}
Отсюда:
/* Copyright 1988,1990,1993,1994 by Paul Vixie
...
* Paul Vixie <vix.com> uunet!decwrl!vixie!paul
*/
#if !defined(lint) && !defined(LINT)
static const char rcsid[] =
"$FreeBSD: src/usr.sbin/cron/cron/do_command.c,v 1.22 2004/05/16 19:29:33 yar Exp $"
---
...Я работаю антинаучным аферистом...
![](/images/graemlins/smile.gif)
do_command же не ждет завершения каждый команды, а просто запускает
Напиши прогу в семь строк, которая запустит нужную ровно в нужное время. Добавь ещё две строчки, чтобы запустить нужную с реалтайм приоритетом. Скажи крону запускать твою прогу на полминуты раньше нужного времени, и тоже с реалтайм приоритетом (иссессно, прога должна постоянно вызывать sleep, или как там он у вас называется). И не мучайся =)
---
...Я работаю антинаучным аферистом...
Используй кнопку "превью", с её помощью ты сумеешь взглянуть на свой коммент свежим взглядом и отловить бОльшую часть семантических/синтаксических/орфографических ошибок
[/An absolutely senseless reply to the completely senseless comment]
man nice на предмет других кроновских программ
Оставить комментарий
tony33
Нужно, чтобы некая программка запускалась каждый час ровно в 0 минут 0 секунд.Проблема в том, что в это время у крона бывают и другие задания, которые он запускает раньше моей. В итоге моя прога может запуститься секунды на 3 позже...