Чтение времени включения и выключения ПК? - PullRequest
0 голосов
/ 21 октября 2018

я пишу небольшую рутину, чтобы отследить мой цикл сна.Обычно, когда я просыпаюсь, я включаю свой компьютер в течение нескольких минут, поэтому считывание, когда система включается и когда она выключается, было бы замечательно.Эта программа здесь выполняет ту же функцию https://www.neuber.com/free/pctime/

Я попытался поискать в библиотеке библиотеку или функцию, которая может вызывать эти системные события, но большинство результатов - включение и выключение компьютера с помощью команды, поэтому мой вопросis:

Каков наилучший способ узнать время включения и выключения ПК?

Спасибо

1 Ответ

0 голосов
/ 21 октября 2018

Если вы работаете в Linux (я предполагаю, что Systemd здесь), вы можете написать сервис, который выполняет код при запуске / завершении работы.Этот код записывает текущую метку времени в файл CSV вместе с индикатором «запуск» или «выключение».

Вот скрипт Python3, который в качестве первого аргумента принимает тип метки времени для входа в систему «updownlog.txt»":

import os
import sys                         
import time                


def main():              
    logfile = "updownlog.csv"
    write_header = False

    if len(sys.argv) != 2:
        sys.exit("Error: script takes exactly one argument")                    

    if sys.argv[1] != "shutdown" and sys.argv[1] != "startup":
        sys.exit("Error: First argument should be 'startup' or 'shutdown'")

    typ = sys.argv[1]

    if not os.path.exists(logfile):
        write_header = True

    with open("updownlog.csv", "a") as f:
        now = time.time()

        if write_header:
            f.write("type,timestamp\n")

        f.write("{},{}\n".format(typ, now))


if __name__ == "__main__":
    main()

Далее вам нужно будет создать системную службу, запускающую этот скрипт.Я беззастенчиво копирую решение, предлагаемое в этом ответе на UnixSX : все заслуги перед "Джоном 9631"!Если вы все еще используете систему, основанную на init.d, в этом потоке тоже есть отличные ответы.

Итак, создайте служебный файл для вашей регистрации:

vim /etc/systemd/system/log_start_stop.service

и скопируйте в файлcontent:

[Unit]
Description=Log startup and shutdown times

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart="/home/Sungod3k/log.py startup"
ExecStop="/home/Sungod3k/log.py shutdown"

[Install]
WantedBy=multi-user.target

Затем включите службу с помощью команды:

systemctl enable log_start_stop

Конечно, это еще не скажет вам, есть ли у вас дефицит сна, поэтому вам понадобитсявыполнить некоторую постобработку, например, с Python или R, или даже awk.

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