You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04 下获取用户锁屏/解锁时间戳及活动时长的技术问询

Ubuntu 22.04 下获取用户锁屏/解锁时间戳及活动时长的技术问询

嗨,针对你在Ubuntu 22.04上想要获取用户锁屏/解锁时间戳,以及登录后实际活动时长的需求,我整理了几个实用的方案,你可以根据场景选用:

一、获取锁屏/解锁时间戳

通过systemd-logind日志查询

Ubuntu 22.04基于systemd,systemd-logind服务会全程记录系统的锁屏、解锁、休眠等关键事件。直接用以下命令就能筛选出相关记录:

journalctl -u systemd-logind | grep -E 'Locking|Unlocking'

输出结果会包含完整的时间戳、事件类型以及对应的用户信息。如果要针对特定用户查询,可以加上用户UID的过滤条件(把1000换成目标用户的UID,可通过id -u 用户名获取):

journalctl -u systemd-logind _UID=1000 | grep -E 'Locking|Unlocking'

通过GNOME Shell日志查询

Ubuntu 22.04默认使用GNOME桌面,锁屏/解锁事件也会被GNOME Shell单独记录,你可以用以下命令查看:

journalctl /usr/bin/gnome-shell | grep -E 'screen locked|screen unlocked'

二、计算登录后的实际活动时长

活动时长需要排除锁屏期间的闲置时间,我们可以结合锁屏/解锁的时间戳,用脚本自动计算累计时长。下面是一个针对当前用户的示例脚本,会统计今日的累计活动时长(如果当前处于解锁状态,会计算到脚本运行时刻):

#!/bin/bash
# 统计当前用户今日累计活动时长(排除锁屏时间)
journalctl -u systemd-logind _UID=$(id -u) --since "today" | grep -E 'Unlocking|Locking' | awk '
BEGIN {
    unlock_time = 0;
    total_active = 0;
}
/Unlocking/ {
    # 将日志时间戳转换为可计算的时间戳数值
    unlock_time = mktime(gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2}).*/, "\\1 \\2 \\3 \\4 \\5 \\6", 1, $1" "$2));
}
/Locking/ {
    if (unlock_time > 0) {
        lock_time = mktime(gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2}).*/, "\\1 \\2 \\3 \\4 \\5 \\6", 1, $1" "$2));
        total_active += lock_time - unlock_time;
        unlock_time = 0;
    }
}
END {
    # 处理当前处于解锁状态的情况
    if (unlock_time > 0) {
        current_time = systime();
        total_active += current_time - unlock_time;
    }
    # 转换为时分秒格式输出
    hours = int(total_active / 3600);
    minutes = int((total_active % 3600) / 60);
    seconds = total_active % 60;
    printf("今日累计活动时长: %d小时%d分钟%d秒\n", hours, minutes, seconds);
}
'

把这段代码保存为active_time.sh,执行chmod +x active_time.sh赋予权限后,运行./active_time.sh就能得到结果。

补充说明

  • last命令记录的是用户登录/注销的会话信息,和锁屏/解锁是完全不同的事件(锁屏时用户会话仍然处于登录状态),所以无法通过last获取锁屏记录。
  • 如果使用的是KDE等其他桌面环境,日志中的关键词可能会有所不同,比如KDE的锁屏事件关键词可能是Session locked,你需要调整grep的筛选条件。

备注:内容来源于stack exchange,提问作者Mahesh Garole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:53:14