如何找到我今年在笔记本电脑上花费的总时间?

Modified on: Sat, 09 Jun 2018 05:05:23 +0800

我很想知道2016年我在笔记本电脑上工作的总时间。

last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep  -v '-'

以这种格式给出了笔记本电脑的总运行时间:

(01:33) (04:40) (01:31) (1+06:41) (02:47) (00:30)

现在如何添加它?

最佳答案

这是一个awk + ​​awk版本:

last ... | awk '/reboot/{print $NF}' |
    awk -F '[(+:)]' '
        {
            d += $(NF - 3); h += $(NF - 2); m += $(NF - 1)
        }
        END {
            carry = m / 60; h += carry;
            carry = h / 24; d += carry;
            printf "%d days, %d hours, %d minutes\n", d, h % 24, m % 60
        }'

last的最后一列的格式为(<days>+hours:minutes),其中days+将被删除期限不到1天。

此处,第一个awk命令输出reboot条目的最后一列,即感兴趣的持续时间。

对于第二个awk命令:

  1. FS[(+:)],即括号 + 或< / em> :。因此,(h:m)被拆分为hm(第一个和最后一个字段为空),(d+h:m)分为dhm(再次,第一个和最后一个字段为空)。
  2. 然后我们将倒数第二场用于分钟,第三场用于小时,第四场用于几天。如果天不存在,则倒数第四个字段将是第一个空字段。因此,在这种情况下,我们只需添加0
  3. 然后,如果分钟和小时分别高于60和24,我们会提高小时和天数。请注意,awk执行浮点除法,因此hd现在可能包含小数部分。
  4. 然后我们将数字打印为整数(%d),因此忽略任何小数部分。
  5. 醇>
作者:muru

相关问答

添加新评论