【问题标题】:Process start timestamp on macOSmacOS 上的进程开始时间戳
【发布时间】:2017-05-18 00:55:33
【问题描述】:

如何在 macOS 上获取进程的开始时间? ps -o lstartps -o start 打印格式化日期而不是 Unix 时间戳。

理想情况下,这可以跨 Unix 移植(即显然没有 /proc)。

【问题讨论】:

    标签: macos shell unix


    【解决方案1】:

    lstart使用locale指定的格式,如果使用LC_ALL=C,可以获得一致、简单的格式:

    $ TZ=UTC LC_TIME=C ps -o lstart= -p $$
    Thu May 11 01:03:52 2017
    $ LC_TIME=C ps -o lstart= -p $$
    Thu May 11 10:03:52 2017
    

    然后有几个工具可用于将格式化的日期转换为时间戳。对于便携性,perhaps Perl:

    $ (export LC_TIME=C TZ=UTC; ps -o lstart= -p $$ | perl -ne 'use Date::Parse; printf "%s\n", str2time($_)')
    1494882318
    

    【讨论】:

    • 这是否处理 DST 问题以及其他我没有想到的问题?在“回退”时间似乎会混淆,因为在这种情况下,自然语言日期有两个可能的时间戳。
    • @taway 如果时区可能是个问题,您也可以将 TZ 设置为 UTC
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2021-01-26
    • 2010-11-13
    相关资源
    最近更新 更多