Вопрос: Время в тиках между сегодняшним днем ​​и завтра?


Есть ли простой способ определить время в тиках, используя Дата  между настоящим и некоторым временем завтра.


2
2018-02-01 16:13


Источник


Мне нужно это, чтобы прокормить RTC и выпустить компьютер из режима гибернации.
Как долго клещ? - Benjamin Barenblat
@BenjaminBarenblat - Это полностью зависит от системы времени, используемой операционной системой. - Ramhound
Соответствующий: Преобразование jiffies в миллисекунды - terdon
Я думал, что времени в секундах было достаточно для пробуждения RTC? Вы уверены, что вам это нужно в тиках? - Jan Fabry


Ответы:


С головы до ног - я бы посмотрел на UNIX def «Время эпохи», выяснить время начала и конца эпохи интереса, вычесть, а затем масштабировать это на что угодно.

Теперь о вашем конкретном вопросе об использовании команды DATE (1), справочной странице UNIX для DATE (1) в Руководство по общим командам BSD имеет этот пример:

Наконец, команда:

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

может использоваться для синтаксического анализа результатов с даты и выражения в эпоху Epoch.

В моей системе OSX я получаю:

whmcclos@mbp:~
[3] date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"
1391275286

date -r seconds команда, вероятно, окажется полезной для проверок здравомыслия со значениями времени эпохи, которые вы вычисляете:

whmcclos@mbp:~
[5] date -r 1391275286
Sat Feb  1 09:21:26 PST 2014

Вот еще один подход, который может сработать для вас ...

Другая возможная реализация для выполнения того, что вы пытаетесь сделать, будет с UNIX at команда, предполагая, что эти фоновые задания выполняются, в то время как ваш вкус xNIX «спит». В моей системе OSX появляются команды, указанные с помощью at команда выполняется даже тогда, когда OSX «спит» - у меня есть включен режим «power nap», если это имеет к этому какое-то отношение, но предлагается для вас:

Во-первых, в OSX at по умолчанию отключена команда, поэтому я сначала включил ее в соответствии со справочной страницей ATRUN (8) следующим образом:

Execute the following command as root to enable at run:

    launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Затем я выполнил тест сна следующим образом:

[61] date
Sat Feb  1 11:10:17 PST 2014
whmcclos@mbp:~
[62] at 11:11am today
touch $HOME/created-at-11:11am
job 9 at Sat Feb  1 11:11:00 2014
whmcclos@mbp:~
[63] date
Sat Feb  1 11:10:40 PST 2014

на данный момент, я поставил ноутбук для ноутбука OSX, вышел на кухню и сделал салат, вернулся, и вот результаты:

whmcclos@mbp:~
[64] echo "awakened now"; date
awakened now
Sat Feb  1 11:15:59 PST 2014
whmcclos@mbp:~
[65] ls -l ~/created-at-11\:11am
-rw-r--r--+ 1 whmcclos staff 0 Feb  1 11:11 /Users/whmcclos/created-at-11:11am

Таким образом, возможно, что реализация ваших конкретных at команда позволит то, что вы пытаетесь сделать.


2
2018-02-01 17:14





Вы должны быть очень осторожны при использовании структур времени ядра (тики и jiffies должны были использоваться только планировщиком для многозадачности и внутренних процессов ядра) ,

Linux использует jiffies, а не ticks (Windows, Unix и BSD используют тики), и количество времени зависит от архитектуры. На платформе x86 или AMD64 Linux имеет 100 Jiffies в секунду (по умолчанию это можно изменить). Кроме того, нет никакой гарантии, что Jiffy составляет ровно 10 мс, различные факторы могут менять его каждый раз, и в конечном итоге это может привести к значимой разнице.

По мере усложнения последние ядра безболезненны, их ядра не «просыпаются» на регулярной основе, чтобы выполнять многозадачность и все такое. Вместо этого каждый раз, когда происходит «пробуждение», ядро ​​вычисляет, когда ему нужно просыпаться дальше, и назначает таймер прерывания в это время. В этих системах нет такой вещи, как тик или jiffy с последовательным распределением времени.


4
2018-02-01 17:37