Я запускаю этот цикл, чтобы проверять и печатать некоторые вещи каждую секунду. Однако, поскольку вычисления занимают, возможно, несколько сотен миллисекунд, время печати иногда пропускается за секунду.
Есть ли способ написать такой цикл, чтобы я гарантированно получал распечатку каждую секунду? (При условии, конечно, что вычисления в цикле занимают меньше секунды :))
while true; do
TIME=$(date +%H:%M:%S)
# some calculations which take a few hundred milliseconds
FOO=...
BAR=...
printf '%s %s %s\n' $TIME $FOO $BAR
sleep 1
done
sched(7)
API (POSIX: смотрите <sched.h>
и страницы, ссылки на которые есть), вы в принципе не можете иметь гарантии в реальном времени для этой формы.