![如何获取用户上次登录日期时间作为符合 ISO 8601 的日期或时间戳?](https://linux22.com/image/227611/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E4%B8%8A%E6%AC%A1%E7%99%BB%E5%BD%95%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E4%BD%9C%E4%B8%BA%E7%AC%A6%E5%90%88%20ISO%208601%20%E7%9A%84%E6%97%A5%E6%9C%9F%E6%88%96%E6%97%B6%E9%97%B4%E6%88%B3%EF%BC%9F.png)
我正在 macOS (Ventura 13.6.3) 上运行 zsh (版本 5.9 x86_64-apple-darwin22.0)。
我想知道给定用户在过去 X 天内是否登录过。为了实现此目的,我想获取用户的上次登录日期时间,如果没有登录,则获取 null。我尝试使用last
命令来执行此操作。我的问题是,当我执行
last -1 "john_smith"
我得到这个字符串:
john_smith ttys001 Wed Dec 17 19:19 still logged in
我可以Dec 17
使用 摆脱这个字符串last -1 "john_smith" | awk '{print $4, $5}'
。但这并不能解决我的问题,因为Dec 17
不包含年份。不知道是不是2023
-12-17 或1971
-12-17。
有没有什么方法可以强制last
生成正常的符合 ISO 8601 的日期(或时间戳),或者至少在其标准输出中添加年份,这样我就可以了Dec 17, 2023
?或者,我可以使用任何其他命令来代替last
为给定用户获取此数据吗?
更新
我找不到在last
zsh v. 5.9 上获取完整登录日期的方法,最终使用了另一个命令(找到/Users
该命令下的所有文件夹的修改时间超过或等于 123 天,功劳归于本文):
find /Users -type d -maxdepth 1 -mindepth 1 -mtime +123d
答案1
根据man last
:
-y Report the year in the session start time.
所以你可以运行:
last -1y "john_smith"
并在日期中注明年份。