在說linux的系統(tǒng)時鐘之前,先弄清楚幾個概念
HZ: 即cpu一秒鐘發(fā)生多少次時間中斷(cat /boot/config-`uname -r` | grep '^CONFIG_HZ='(通常=1000))
Tick: 1/HZ,即每隔多少秒發(fā)送一次時間中斷
Jiffies: 系統(tǒng)自開機以來,已經(jīng)過了多少tick
系統(tǒng)時鐘的驅(qū)動方式
系統(tǒng)時鐘本質(zhì)上,就是通過cpu的時間中斷來實現(xiàn)的
對于單調(diào)遞增時鐘(CLOCK_MONOTONIC),每次時間中斷來的時候Jiffies + 1
對于wall clock時鐘(CLOCK_REALTIME),每次時間中斷來的時候wall time + Tick
還有另外一種時間描述,即clock_t,是用來描述進程指令的消耗時間
這種時間,不是時間中斷來驅(qū)動的(有另外一種驅(qū)動方式,但是是什么不知道,反正不是一個體系的東西,和wall clock不是一回事)
系統(tǒng)時鐘的設置
date(查看系統(tǒng)時鐘)
date -s 5/11/2015(設置日期)
date -s 15:35:30(設置時間)
date -s "5/11/2015 15:35:30"(一起設置時間和日期)
centos 7中的時區(qū)和時間設置
timedatectl status
timedatectl set-timezone Asia/Shanghai
linux系統(tǒng)的啟動和運行時間
uptime:
系統(tǒng)命令
cat /proc/uptime:
記錄系統(tǒng)運行的時間
計算系統(tǒng)啟動的時間:
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
計算系統(tǒng)的運行時間:
cat /proc/uptime | awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系統(tǒng)已運行:%d天%d時%d分%d秒\n",run_days,run_hour,run_minute,run_second)}'