Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

月末なのでMacのSleepのログから勤怠情報を導き出そうとする

More than 1 year has passed since last update.

お疲れ様です。月末ですね。皆さまにおかれましては、きっちり勤怠登録を毎日おこなっているか、そもそも勤怠登録なんてない強い会社にお勤めかと思われますが、念のため、日別でMacのSleep開始、終了を記録したログ(=おおむね、PCを開いて、閉じた時間=出退勤時間?)を出力するシェルスクリプト書いたので置いておきいます。毎日勤怠登録はするべきです。

参考:Macで蓋を空けたり閉じたりした時間をログから拾う方法
https://qiita.com/AkihiroTakamura/items/5da0c1532fc509876560

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.5
BuildVersion:   18F203

コード

machine_activity_time
#!/bin/bash -e

IFS=$'\n'
logs=$(/usr/bin/pmset -g log | grep "Kernel Idle sleep preventers")
last_line_cnt=`echo "$logs" | /usr/bin/wc | /usr/bin/awk '{print $1}'`

cnt=0
prev_line=''
prev_log_date=''
for line in $logs;
do
    cnt=`expr $cnt + 1`
    log_date=`echo $line | cut -d ' ' -f 1`

    # 一行目
    if [ "$prev_line" = "" ];
    then
        echo $line | cut -d ' ' -f -3
        prev_log_date=$log_date
        prev_line=$line
        continue
    fi

    # 最終行
    if [ $cnt -eq $last_line_cnt ];
    then
        echo $line | cut -d ' ' -f -3
        continue
    fi

    if [ "$prev_log_date" != "$log_date" ];
    then
        echo $prev_line | cut -d ' ' -f -3
        echo $line | cut -d ' ' -f -3
    fi

    prev_log_date=$log_date
    prev_line=$line
done

実行結果

$ machine_activity_time
2019-05-21 01:37:16 +0900
2019-05-21 23:16:29 +0900
2019-05-22 00:56:57 +0900
2019-05-22 21:20:55 +0900
2019-05-23 00:05:38 +0900
2019-05-23 21:15:01 +0900
2019-05-24 09:59:55 +0900
2019-05-24 23:31:12 +0900
2019-05-25 00:35:10 +0900
2019-05-25 23:11:47 +0900
2019-05-26 01:13:30 +0900
2019-05-26 22:24:40 +0900
2019-05-27 00:22:30 +0900
2019-05-27 23:43:01 +0900

15日くらいしか残ってないし、あてになるような、ならないような感じなので、ちゃんと勤怠登録はしようと思いました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away