Linux中的那些时间,你知道几个
本帖最后由 probedog 于 2024-11-15 15:23 编辑在Linux系统中,存在几种不同的时间概念,它们各自有不同的用途和意义:「系统时间(System Time)」:
这是计算机的当前时间,通常与墙上时钟时间相对应。系统时间由操作系统维护,并影响所有基于时间的操作,如日志记录、定时任务等。
「硬件时钟(Hardware Clock)」:
硬件时钟是计算机主板上的一个独立时钟,通常由CMOS电池供电。它在系统断电后继续运行,用于在系统启动时设置系统时间。
「协调世界时(UTC, Coordinated Universal Time)」:
UTC是一种全球统一的时间标准,不受夏令时影响。Linux系统可以配置为使用UTC时间,这样所有的时间记录都是基于UTC。
「本地时间(Local Time)」:
本地时间是系统时间根据特定时区调整后的时间。如果系统配置为使用本地时间而不是UTC,那么显示的时间将根据系统所在时区进行调整。
「日志时间戳(Log Timestamp)」:
日志文件中的每条记录通常都有一个时间戳,指示该记录被创建或记录的时间。这个时间戳基于系统时间生成。
「实时时钟(Real-time Clock)」:实时时钟是硬件时钟的另一种说法,它在系统运行时提供时间信息,并且通常与硬件时钟同步。「进程时间(Process Time)」:这是进程自启动以来所运行的总时间,包括用户态和内核态的时间。
「墙钟时间(Wall Clock Time)」:墙钟时间通常指的是实际流逝的时间,与系统时间相对,它不包括系统休眠或停止的时间。
「NTP时间(NTP Time)」:NTP(Network Time Protocol)时间是指通过NTP服务与互联网上的标准时间源同步的时间。NTP服务确保系统时间的准确性。「定时任务时间(Cron Job Time)」:这是由cron守护进程管理的定时任务执行的时间,它基于系统时间或UTC时间(取决于cron配置)。
「应用程序时间(Application Time)」:某些应用程序可能使用它们自己的时间源或时间逻辑,这可能与系统时间不同步。
「时间同步时间(Time Synchronization Time)」:这是系统通过时间同步服务(如NTP)与外部时间源同步的时间点。在Linux系统中,时间的准确性对于系统的正常运行和日志记录的可靠性至关重要。管理员需要确保系统时间与UTC或本地时间正确同步,并且硬件时钟也应保持准确。此外,对于分布式系统或多时区环境,正确处理时间差异是必要的。
其实一般实时时钟还是有必要的 UTC是一种全球统一的时间标准,不受夏令时影响。 NTP(Network Time Protocol)时间是指通过NTP服务与互联网上的标准时间源同步的时间。 实时时钟是硬件时钟的另一种说法,它在系统运行时提供时间信息 使用 gmtime() 和 localtime() 可将 time_t 时间类型转换为 tm 结构体 time_t在 <time.h> 中定义为 typedef long time_t;,实际是一个长整型。其值表示从 UTC(协调世界时)1970 年 1 月 1 日 00 时 00 分 00 秒(也称为 Linux 系统的 Epoch 时间)到当前时刻的秒数
struct timespec常用于需要纳秒级时间精度的场景,如性能测试、精确计时等
绝对时间格式常用于日志记录、文件命名、时间戳展示等场景,方便用户直观地理解具体的时间点
相对时间在计划任务安排、定时器设置等场景中经常使用,方便用户快速指定相对当前时间的一个时间点。
为了能表示更久远的时间,可用 64 位或更长的整形数来保存日历时间
RTC是什么时间? 在Linux系统中,有多种与时间相关的概念和机制,比如系统时间,定义:系统时间是指从1970年1月1日00:00:00 UTC(即Unix**)开始计算的秒数,通常称为“Unix时间戳”或“Epoch时间” 硬件时间是指由计算机主板上的实时时钟(RTC)芯片维护的时间,通常以年月日时分秒的形式存储。用途:在系统关机时保持时间的连续性,系统启动时会从RTC读取时间。 一般来说,单调时间是一个从系统启动开始计算的递增时间,不受系统时间调整的影响 UTC只是一种时间表示方式,和Linux系统没有直接关系。 用途:用于测量时间间隔,如程序运行时间、超时等 启动时间:定义:启动时间是指系统启动的时间点,通常以Unix时间戳表示。用途:用于记录系统启动的时间,计算系统运行时间等。 进程时间,进程时间是指进程占用的CPU时间,包括用户态时间和内核态时间 墙上时间是指实际的时间,即我们日常生活中使用的时间。用于记录事件发生的实际时间。
页:
[1]