首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取电脑开机和关机时间?

读取电脑开机和关机时间?
EN

Stack Overflow用户
提问于 2018-10-21 20:21:32
回答 1查看 129关注 0票数 1

我正在写一个小程序来跟踪我的睡眠周期。通常,当我醒来的时候,我会在几分钟内打开我的电脑,所以当系统开机和关机时读出数据将是很棒的。此程序在此处执行相同的函数https://www.neuber.com/free/pctime/

我尝试在googling上搜索可以调用这些系统事件的库或函数,但大多数结果都是用命令打开和关闭PC的,所以我的问题是:

获得电脑开机和关机时间的最佳方法是什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-10-21 21:56:40

如果您使用的是Linux (这里假设为Systemd ),则可以编写一个在启动/关闭时执行代码的服务。该代码将把当前的时间戳写入CSV文件,以及一个指示符“启动”或“关闭”。

下面是一个Python3脚本,它将记录到“updownlog.txt”的时间戳类型作为第一个参数:

代码语言:javascript
复制
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()

接下来,您需要创建触发此脚本的系统服务。我厚颜无耻地抄袭了this answer on UnixSX提供的一个解决方案:都归功于“John9631”!如果你还在使用基于init.d的系统,在这个帖子里也有很好的答案。

因此,为您的日志创建服务文件:

代码语言:javascript
复制
vim /etc/systemd/system/log_start_stop.service

并拷贝入文件内容:

代码语言:javascript
复制
[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

然后使用以下命令启用该服务:

代码语言:javascript
复制
systemctl enable log_start_stop

诚然,这还不能告诉你是否有睡眠不足,所以你需要做一些后处理,例如使用Python或R,甚至awk

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52915262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档