在说linux的系统时钟之前,先弄清楚几个概念
HZ: 即cpu一秒钟发生多少次时间中断(cat /boot/config-`uname -r` | grep '^CONFIG_HZ='(通常=1000))
Tick: 1/HZ,即每隔多少秒发送一次时间中断
Jiffies: 系统自开机以来,已经过了多少tick
系统时钟的驱动方式
系统时钟本质上,就是通过cpu的时间中断来实现的
对于单调递增时钟(CLOCK_MONOTONIC),每次时间中断来的时候Jiffies + 1
对于wall clock时钟(CLOCK_REALTIME),每次时间中断来的时候wall time + Tick
还有另外一种时间描述,即clock_t,是用来描述进程指令的消耗时间
这种时间,不是时间中断来驱动的(有另外一种驱动方式,但是是什么不知道,反正不是一个体系的东西,和wall clock不是一回事)
系统时钟的设置
date(查看系统时钟)
date -s 5/11/2015(设置日期)
date -s 15:35:30(设置时间)
date -s "5/11/2015 15:35:30"(一起设置时间和日期)
centos 7中的时区和时间设置
timedatectl status
timedatectl set-timezone Asia/Shanghai
linux系统的启动和运行时间
uptime:
系统命令
cat /proc/uptime:
记录系统运行的时间
计算系统启动的时间:
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
计算系统的运行时间:
cat /proc/uptime | awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒\n",run_days,run_hour,run_minute,run_second)}'
网友评论