Отложите, если ваш путь - это хороший способ сделать то, чего вы хотите достичь. Возможное объяснение:
strace uptime -s
показывает, что он читает /proc/uptime
, я проверил на Debian и Raspbian. Кажется, он также читает текущее время (я не могу сказать наверняка, это разумное предположение) и вычитает, чтобы сказать, в какой момент в прошлом система была запущена.
Эти два события чтения разделены некоторым интервалом. Нет никакой гарантии, что интервал будет одинаковым при каждом запуске команды. Так что результат вычитания будет немного "плавать".
Затем это значение как-то округляется, потому что конечный результат должен содержать целое число секунд. Не имеет значения, является ли округление "вниз" или "вверх", или "наполовину" и т.д. Что имеет значение: есть определенная дробная часть, где результат округления "скачет" мгновенно с N
до N+1
. Если результат вычитания "плавает" вблизи этого критического значения, вы получите N
иногда, N+1
другой раз.
Случайно одна из ваших Raspberry была запущена в такие доли секунды, uptime
ее работы ведет себя так, а другим не повезло. Любой из них может быть или не быть "счастливчиком" после перезагрузки.
Я думаю, что если бы вы напрягли свои системы и сумели достаточно замедлить uptime
, вы бы получили другие результаты даже на этих пяти других Raspberry.
Не нашли лучшего способа обнаружить потерю питания / перезагрузку. (...) Должен быть лучший способ сделать это. Нет RTC в этой вещи.
Возможно, поработайте с /etc/rc.local
. Он предназначен для запуска всего один раз при запуске системы.