Ruby: обнаружение случаев, когда машина Fedora включена - PullRequest
1 голос
/ 15 февраля 2011

похоже, что я посетил stackoverflow 100 раз раньше.Всегда находил хорошие решения, но теперь я застрял.

Я хочу следить за тем, как долго компьютер работает каждый день.Это часть программы, написанной на Ruby, работающей на машине Fedora.

Ранее я делал подобные вещи в Windows, где можно перехватывать связанные события питания с помощью WndProc.Тем не менее, с Fedora (или Linux в целом), я не нахожу хороших хуков для обнаружения включения и выключения / приостановки / спящего режима /....

Любые предложения очень ценятся.*

Спасибо, Джейрок

РЕДАКТИРОВАТЬ: Кажется, я не был ясен в том, что я хочу достичь.На самом деле хотите иметь информацию не только о текущем времени безотказной работы, но и о прошлом времени безотказной работы.Таким образом, я должен знать, что «компьютер работал x часов в течение последних 14 дней» или что-то подобное.

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

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Возможно, вы захотите проанализировать вывод команды last, которая регистрирует логины пользователей. Если псевдопользователь reboot «вошел в систему», вы знаете, что система была перезагружена. (Это действительно для Ubuntu; возможно, Fedora использует другое имя, например boot.)

Там может быть более прямой интерфейс; Google вокруг для ruby + utmp. Файл utmp, обычно в /var/run, записывает данные, которые сообщает команда last.

0 голосов
/ 15 февраля 2011

Вы бы использовали обратные пометки, такие как uptime StackOverflow рассматривает их как стили кода, хотя в этом поле ответа.

0 голосов
/ 15 февраля 2011

Я не знаю специфики ruby, но в linux есть время работы команды.

Я думаю, что в ruby ​​вам нужно использовать System

так было бы что-то вроде system 'uptime'

Затем вы можете проанализировать результаты этого

...