Linux系统命令time给出的用户时间,系统时间,实际时间分别是什么含义

Linux系统命令time给出的用户时间,系统时间,实际时间分别是什么含义,第1张

用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;

实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;

系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。

Linux命令的使用时linux运维中的核心基础,因此你需要知道常见的命令的功能选项,这样你才能够更好的处理遇到的问题。关于Linux命令学习这块,你学习刘遄老师的书籍《linux就该这么学》,相信你会把linux命令掌握得非常的透彻。

1 TIMEDATECTL命令 该命令是作为systemd系统和服务管理器的一部分分发的工具,可以用它来查看和更改系统时钟的配置,包括更改当前的日期和时间、设置时区以及可以激活与远端服务器系统时钟的自动同步,是红帽企业版 7 版本新增的命令。 1.1 展示当前日期和时间 可以使用timedatectl命令来展示当前日期和时间,并且有系统和硬件时钟的配置的详细信息。 [root@strong ~]# timedatectl Local time: Sat 2019-09-21 15:02:27 CST Universal time: Sat 2019-09-21 07:02:27 UTC RTC time: Sat 2019-09-21 07:02:27 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a 1.2 更改当前时间 更改当前时间,命令格式为:timedatectl set-time HH:MI:SS。 该命令同时更改系统时间和硬件时钟,执行结果与使用命令date --set 和hwclock --systohc的效果相同。 [root@strong ~]# timedatectl set-time 20:00:00 [root@strong ~]# timedatectl Local time: Sat 2019-09-21 20:00:04 CST Universal time: Sat 2019-09-21 12:00:04 UTC RTC time: Sat 2019-09-21 12:00:05 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a [root@strong ~]# timedatectl set-time 2019-09-15 [root@strong ~]# timedatectl Local time: Sun 2019-09-15 00:00:03 CST Universal time: Sat 2019-09-14 16:00:03 UTC RTC time: Sat 2019-09-14 16:00:03 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a 仅仅更改日期,时间会变为00:00:00,故更改日期时需把对应的时间加上,例如:timedatectl set-time "2019-09-21 15:16:00"。 1.4 更改时区 1.4.1 列出所有时区 [root@strong ~]# timedatectl list-timezones 1.4.2 更改时区 [root@strong ~]# timedatectl set-timezone Asia/Shanghai 2 DATE命令 该命令在所有Linux系统都可用,用于设置和查看当前日期和时间,常用于脚本中以格式化的形式用于展示系统时间的详细信息。 2.1 展示当前日期和时间 1)不带任何格式展示 [root@strong ~]# date Sat Sep 21 15:24:57 CST 2019 默认展示的是本地时间,以UTC的方式展示,需使用date --utc或date -u。 [root@strong ~]# date --utc Sat Sep 21 07:25:50 UTC 2019 2)格式化展示 客制化日期和时间的展示格式,使用命令:date +"格式"。 常用的格式为: 控制格式 描述 %H 以HH格式展示小时; %M 以MM格式展示分钟; %S 以SS格式展示秒; %d 以DD格式展示天数; %m 以MM格式展示月; %Y 以YYYY格式展示年; %Z 时区; %F 以YYYY-MM-DD格式展示日期,和%Y-%m-%d等价; %T 以HH:MM:SS格式展示时间,和%H:%M:%S等价; [root@strong ~]# date Sat Sep 21 15:37:18 CST 2019 [root@strong ~]# date +"%Y-%m-%d %H:%M:%S" 2019-09-21 15:38:00 2.2 更改当前时间 更改当前时间,命令格式为:date --set HH:MM:SS。 [root@strong ~]# date --set 15:40:20 Sat Sep 21 15:40:20 CST 2019 2.3 更改当前日期 更改当前日期,命令格式为:date --set YYYY-MM-DD。 [root@strong ~]# date --set 2019-09-25 Wed Sep 25 00:00:00 CST 2019 仅仅更改日期,时间会变为00:00:00,故更改日期时需把对应的时间加上,例如: [root@strong ~]# date --set "2019-09-21 15:42:35" Sat Sep 21 15:42:35 CST 2019。 3 CLOCK命令 该命令是用于访问硬件时钟的工具,也称为Real Time Clock(RTC),对应的设置保存在/etc/adjtime文件中。硬件时钟独立于 *** 作系统,即使系统关闭,它仍然工作,用于从硬件时钟展示时间。 3.1 展示当前日期和时间 [root@strong ~]# hwclock Sat 21 Sep 2019 03:51:24 PM CST -0.368709 seconds 3.2 设置日期和时间 设置日期和时间的命令为:hwclock --set --date "dd mmm yyyy HH:MM" [root@strong ~]# hwclock --set --date "21 Sep 2019 16:02:25" [root@strong ~]# hwclock Sat 21 Sep 2019 04:02:35 PM CST -0.342764 seconds 3.3 同步日期和时间 可以使用hwclock命令在硬件时钟和当前系统时间直接互相同步。 3.3.1 系统时间同步到硬件时钟 [root@strong ~]# hwclock --systohc 3.3.2 硬件时钟同步到系统时间 [root@strong ~]# hwclock --hctosys

RTC时间 *** 作:

1.rtc时间是由rtc硬件控制的,所以在linux中想要修改和获取rtc时间就只能通过驱动的接口来获取和修改。

intrtc_test(void)

{

structrtc_timertc

intfd=-1

intret=-1

fd=open("/dev/rtc0",O_RDWR)

if(fd<0){

return-1

}

ret=ioctl(fd,RTC_RD_TIME,&rtc)

if(ret<0){

return-1

}

printf("\nCurrentRTCdata/timeis%d-%d-%d,%02d:%02d:%02d.\n",rtc.tm_mday,rtc.tm_mon+1,

rtc.tm_year+1900,rtc.tm_hour,rtc.tm_min,rtc.tm_sec)

ret=ioctl(fd,RTC_SET_TIME,&rtc)

if(ret<0){

return-1

}

return0

}

2.除了上面这种方式 *** 作rtc时间以外,linux中也有一个命令可以简化rtc时间 *** 作,hwclock,比如,可以通过system("hwclock-w")系统调用来把xtime设置到rtc硬件。

墙上时间(realtime、xtime):

linux系统中主要使用的就是xtime,它是系统运行的基础,很多程序都是依赖于xtime来运行的,接下来将介绍将如何 *** 作xtime。

1.获取、设置微秒级别的时间:

#include

#include

structtimeval

{

inttv_sec

inttv_usec

}

intgettimeofday(structtimeval*tv,structtimezone*tz)

intsettimeofday(conststructtimeval*tv,conststructtimezone*gz)

功能描述:

gettimeofday()获取当前时间,有tv指向的结构体返回。

settimeofday()把当前时间设成由tv指向的结构体数据。当前地区信息则设成tz指向的结构体数据。

2.获取秒级别的时间

typedeflongtime_t

time_ttime(time_t*t)

如果t是non-null,它将会把时间值填入t中

3.内核2.6版本后新增的clockapi接口

获取纳秒级别的时间

structtimespec{

time_ttv_sec/*秒s*/

longtv_nsec/*纳秒ns*/

}

intclock_getres(clockid_tclk_id,structtimespec*res)

intclock_gettime(clockid_tclk_id,structtimespec*tp)

intclock_settime(clockid_tclk_id、conststructtimespec*tp)

编译连接时采用-lrt才能编译通过。

clk_id可选参数:

CLOCK_REALTIME

系统全局的实时时钟.设置此时钟需要合适的权限.

CLOCK_MONOTONIC

只能被读取,无法被设置,表示monotonic时间起点.

CLOCK_PROCESS_CPUTIME_ID

从cpu每进程的高分辨率计时器.

CLOCK_THREAD_CPUTIME_ID

线程的特定cpu时间时钟.

系统启动时,会首先从rtc中读取rtc时间,并设置给xtime,而当ntp对系统时间进行更新时,首先设置xtime,然后调用hwclock设置到rtc硬件中。xtime根据需要的精度,可以通过上面几个接口来选择使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7370027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存