首页 > 其他分享 ># **七、时间管理**

# **七、时间管理**

时间:2024-02-22 10:13:23浏览次数:32  
标签:00 01 管理 -- 硬件 时间 date 时钟

七、时间管理

1.linux时间介绍:

linux时钟分为系统时钟和硬件时钟,系统时钟是指当前linux kernel中的时钟,而硬件时钟则是主板上有电池供电的时钟,这个硬件时钟可以在bios里面进行设置,当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。

linux中的所有命令都是采用的系统时钟设置。在linux中,用于时钟查看和设置的命令主要有date、hwclock 、和clock。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持alpha硬件体系。

2.linux时间设置命令

2.1date
date
显示或设置系统时间与日期
概要
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
主要用途
转换时间到选定的格式,默认为当前。
设置系统时间。
参数
format:输出的时间格式。

format可用的转义序列如下:

  • %%      百分号
    %a      当地缩写的工作日名称(例如,Sun)
    %A      当地完整的工作日名称(例如,Sunday)
    %b      当地缩写的月份名称(例如,Jan)
    %B      当地完整的月份名称(例如,January)
    %c      当地的日期和时间(例如,Thu Mar  3 23:05:25 2005)
    %C      世纪,和%Y类似,但是省略后两位(例如,20)
    %d      一月中的一天(例如,01)
    %D      日期,等价于%m/%d/%y
    %e      一月中的一天,格式使用空格填充,等价于%_d
    %F      完整的日期;等价于%+4Y-%m-%d
    %g      ISO标准计数周的年份的最后两位数字
    %G      ISO标准计数周的年份,通常只对%V有用
    %h      等价于%b
    %H      小时,范围(00..23)
    %I      小时,范围(00..23)
    %j      一年中的一天,范围(001..366)
    %k      小时,使用空格填充,范围(0..23),等价于%_H
    %l      小时,使用空格填充,范围(1..12),等价于%_I
    %m      月,范围(01..12)
    %M      分钟,范围(00..59)
    %n      换行符
    %N      纳秒,范围(000000000..000000000)
    %p      用于表示当地的AM或PM,如果未知则为空白
    %P      类似于%p,但用小写表示
    %q      季度,范围(1..4)
    %r      当地以12小时表示的时钟时间(例如,11:11:04 PM)
    %R      24小时每分钟;等价于%H:%M
    %s      自协调世界时1970年01月01日00时00分以来的秒数
    %S      秒数,范围(00..60)
    %t      水平制表符
    %T      时间;等价于%H:%M:%S
    %u      一周中的一天(1..7),1代表星期一
    %U      一年中的第几周,周日作为一周的起始(00..53)
    %V      ISO标准计数周,该方法将周一作为一周的起始(01..53)
    %w      一周中的一天(0..6),0代表星期天
    %W      一年中的第几周,周一作为一周的起始(00..53)
    %x      当地的日期表示(例如,12/31/99)
    %X      当地的时间表示(例如,23:13:48)
    %y      年份后两位数字,范围(00..99)
    %Y      年份
    %z      +hhmm格式的数值化时区格式(例如,-0400)
    %:z     +hh:mm格式的数值化时区格式(例如,-04:00)
    %::z    +hh:mm:ss格式的数值化时区格式(例如,-04:00:00)
    %:::z   数值化时区格式,相比上一个格式增加':'以显示必要的精度(例如,-04,+05:30)
    %Z      时区缩写(如EDT)
    
    默认情况下,日期用零填充数字字段;以下可选的符号可以跟在'%'后面:
    
    -      (连字符) 不要填充相应的字段。
           _      (下划线) 使用空格填充相应的字段。
           0      (数字0) 使用数字0填充相应的字段。
    
    +      用数字0填充,未来年份大于4位数字则在前面加上'+'号。
           ^      允许的情况下使用大写。
    
######      允许的情况下将默认的大写转换为小写,默认的小写转换为大写。

在任何标志之后都有一个可选的字段宽度,如小数;然后是一个可选的修饰符,在可用的情况下,使用E来使用当地语言环境的替代表示,
使用O来使用当地语言环境的替代数字符号。
选项
长选项与短选项等价

-d, --date=STRING          解析字符串并按照指定格式输出,字符串不能是'now'。
--debug                    注释已解析的日期,并将有疑问的用法发送到标准错误。
-f, --file=DATEFILE        类似于--date; 一次从DATEFILE处理一行。
-I[FMT], --iso-8601[=FMT]  按照ISO 8601格式输出,FMT可以为'date'(默认),'hours','minutes','seconds','ns'。
                           例如:2006-08-14T02:34:56-06:00
-R, --rfc-email            按照RFC 5322格式输出,例如: Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=FMT             按照RFC 3339格式输出,FMT可以为'date', 'seconds','ns'中的一个,
                           例如:2006-08-14 02:34:56-06:00
-r, --reference=FILE       显示文件的上次修改时间。
-s, --set=STRING           根据字符串设置系统时间。
-u, --utc, --universal     显示或设置世界协调时(UTC)。
--help                     显示帮助信息并退出。
--version                  显示版本信息并退出。
返回值
返回状态为成功除非给出了非法选项或非法参数。
例子

# 格式化输出:

date +"%Y-%m-%d"
2009-12-07

# 输出昨天日期:

date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

# 2秒后输出:

date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

# 传说中的 1234567890 秒:

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%M:%S"

# 或者

date -d@1234567890 +"%F %T"

# 输出结果

2009-02-13 23:02:30

# 时间格式转换:

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"

# 输出结果

2009/12/12 00:00.00

# apache格式转换:

date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"

# 输出结果

2009-12-05 00:00.37

# 格式转换后时间游走:

date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"

# 输出结果

2007-12-05 00:00.37

# 时间加减操作:

date +%Y%m%d                   # 显示年月日
date -d "+1 day" +%Y%m%d       # 显示前一天的日期
date -d "-1 day" +%Y%m%d       # 显示后一天的日期
date -d "-1 month" +%Y%m%d     # 显示上一月的日期
date -d "+1 month" +%Y%m%d     # 显示下一月的日期
date -d "-1 year" +%Y%m%d      # 显示前一年的日期
date -d "+1 year" +%Y%m%d      # 显示下一年的日期

# 设定时间:

date -s                         # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523                # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01                # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"   # 这样可以设置全部时间
date -s "01:01:01 20120523"     # 这样可以设置全部时间
date -s "2012-05-23 01:01:01"   # 这样可以设置全部时间
date -s "20120523 01:01:01"     # 这样可以设置全部时间

# 有时需要检查一组命令花费的时间:

start=$(date +%s)
nmap wangchujiang.com &> /dev/null
end=$(date +%s)
difference=$(( end - start ))

# 显示执行时间

echo $difference seconds.

# 当你考虑输出带有时间的字符串时,例如(Current time: 2019/05/19):

# 通常使用的方法:

echo "Current time: $(date +"%Y/%m/%d")"

# 另一种方法:

suffix='Current time:'

# 注意如果换成单引号就不能替换变量了。

date +"${suffix} %Y/%m/%d"
注意
该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 date或info coreutils 'date invocation'。


2.2 hwclock

显示与设定硬件时钟

补充说明
hwclock命令 是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
语法
hwclock(选项)
选项
--adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟;
--debug:显示hwclock执行时详细的信息;
--directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟;
--hctosys:将系统时钟调整为与目前的硬件时钟一致;
--set --date=<日期与时间>:设定硬件时钟;
--show:显示硬件时钟的时间与日期;
--systohc:将硬件时钟调整为与目前的系统时钟一致;
--test:仅测试程序,而不会实际更改硬件时钟;
--utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作;
--version:显示版本信息。
实例
设置硬件时间要依赖于操作系统时间,具体方法如下:

hwclock –systohc
hwclock --systohc –-utc
不加任何参数使用hwclock,可以查看当前的硬件日期和时间。

hwclock
查看clock文件,确认是否设置了UTC:

cat /etc/default/rcS 
UTC=yes
在其他一些版本的Linux(如RebHat)中可以这样查看:

cat /etc/sysconfig/clock
ZONE="America/Los_Angeles"
UTC=false
ARC=false


2.3 clock
用于调整 RTC 时间
补充说明
clock命令用于调整 RTC 时间。 RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟。
###### 语法

clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期时间>"]
[--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]
选项
--adjust  第一次使用"--set"或"--systohc"参数设置硬件时钟,会在/etc目录下产生一个名称为adjtime的文件。当再次使用这两个参数调整硬件时钟,此文件便会记录两次调整间之差异,日后执行clock指令加上"--adjust"参数时,程序会自动根 据记录文件的数值差异,计算出平均值,自动调整硬件时钟的时间。
--debug  详细显示指令执行过程,便于排错或了解程序执行的情形。
--directisa  告诉clock指令不要通过/dev/rtc设备文件,直接对硬件时钟进行存取。这个参数适用于仅有ISA总线结构的老式电脑。
--getepoch  把系统核心内的硬件时钟新时代数值,呈现到标准输出设备。
--hctosys  Hardware Clock to System Time,把系统时间设成和硬件时钟一致。由于这个动作将会造成系统全面更新文件的存取时间,所以最好在系统启动时就执行它。
--set--date  设置硬件时钟的日期和时间。
--setepoch--epoch=<年份>  设置系统核心之硬件时钟的新时代数值,年份以四位树字表示。
--show  读取硬件时钟的时间,并将其呈现至标准输出设备。
--systohc  System Time to Hardware Clock,将系统时间存回硬件时钟内。
--test  仅作测试,并不真的将时间写入硬件时钟或系统时间。
--utc  把硬件时钟上的时间时为CUT,有时也称为UTC或UCT。
--version  显示版本信息。
实例
获取当前的时间

clock # 获取当前的时间
显示UTC时间

clock -utc #显示UTC时间


2.4 图形界面设置时区命令timeconfig
2.5 时间同步
实例一:同步时间
#ntpdate 210.72.145.44       (210.72.145.44是中国国家授时中心的官方服务器)

实例二: 定时同步时间
#crontab -e 添加脚本例子如下:
*/20****      /usr/sbin/ntpdate 210.72.145.44      //每20分钟执行一次
30 5***       /usr/sbin/ntpdate 210.72.145.44      //每天早晨56点半执行

注意:前面五个*号代表五个数字,数字的取值范围和含义如下:分钟(0-59) 小时(0-23)  日期(1-31) 月份(1-12) 星期(0-6) //0代表星期天设定完毕后,可使用#crontab -| 查看上面的设定

标签:00,01,管理,--,硬件,时间,date,时钟
From: https://www.cnblogs.com/nwq1101/p/18026695

相关文章

  • 接私活利器!推荐一个基于SpringBoot3的后台管理框架
    大家好,我是Java陈序员。今天,给大家推荐一个后台管理框架,适合二次定制开发、接私活、源码学习等场景。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍Admin3——一个轻巧的后台管理框架,项目后端基于Java17、SpringBo......
  • SciTech-BigDataAIML-OpenAI的Sora视频生成 + 档案管理
    如何基于three.js(webgl)引擎架构,实现3D密集架库房,3D档案室(3d机器人取档、机器人盘点、人工查档、设备巡检)https://www.cnblogs.com/yeyunfei/p/18023685前言:这是最好的时代,也是最坏的时代;是充满挑战的时代,也是充满机遇的时代。是科技飞速的时代,也是无限可能的时代。......
  • 网络安全事件管理
    一、背景信息化技术的迅速发展已经极大地改变了人们的生活,网络安全威胁也日益多元化和复杂化。传统的网络安全防护手段难以应对当前繁杂的网络安全问题,构建主动防御的安全整体解决方案将更有利于防范未知的网络安全威胁。国内外的安全事件在不断增长,安全信息管理市场也在不断发......
  • 1.3 使用pip管理Python扩展库
    常用pip命令使用方法pip命令示例说明pipfreeze[>packages.txt]列出已安装模块及其版本号,可使用重定向符>把扩展库信息保存到文件packages.txt中pipinstallSomePackage[==version]在线安装SomePackage模块,可以使用方括号内的形式指定扩展库版本pipinstallSo......
  • delphi 每年、月、周、日的开始与结束的时间
    delphi每年、月、周、日的开始与结束的时间2022-07-1911:00:00网络Delphi1900 本文整理自网络,侵删。StartOfAYear...StartOfTheYear...EndOfAYear...EndOfTheYear...每年、月、周、日的开始与结束的时间{参数是指定的年、月、周、日}DateUtils.Start......
  • C++内存管理
    C++内存管理目录C++内存管理内存模型堆与栈的区别其他说明new和deletemalloc/free和new/delete区别new运算符的原理new/delete的使用要点判断内存申请成功delete与delete[]区别参考资料内存模型内存类型作用生命周期常量存储区存放常量,不允许修改全局/静态存储......
  • 导包和包管理
    目录一、什么是包二、main函数和main包三、包管理1.main包2.创建自定义包3.导包四、init函数和包的初始化1.实例-验证包的初始化顺序(1)修改rectprops.go(2)修改geometry.go(3)运行结果(4)再修改geometry.go五、实现导包而不用1.错误导包2.错误屏蔽器3.空白标识符避错一、什么......
  • 操作系统实训_基于多级目录的文件管理系统
    title:操作系统实训_基于多级目录的文件管理系统author:fxydate:2022-07-0719:18:00tags:实训category:实训readmore:truedescription:SDUT操作系统实训,基于多级目录的文件管理系统,c++1、实训报告:github实训报告2、代码://基于多级文件目录的文件管理系统#includ......
  • Java人力资源管理系统源码(含数据库)-springboot+vue+mysql
    EHR人力资源管理系统是一种利用现代技术,如云计算、大数据等,来实现企业人力资源信息电子化、流程自动化的系统。它覆盖了人力资源管理的各个方面,从招聘、考勤、绩效到薪酬、社保公积金等,为企业提供一站式的解决方案。​1.招聘管理:-职位发布:系统支持在线发布职位信息,吸引候选人......
  • SRM数字化采购管理平台-招投标管理系统-供应链协同|招投标|询比价(源码及功能分析)
    前言:通过数字化手段,采购管理可以更加高效、准确和透明。数字化采购管理系统可以集成各个流程环节,实现数据共享和协同工作,提高采购效率和成本控制能力。同时,数字化采购管理也有助于加强与供应商之间的沟通和协作,优化供应链管理,提升企业的竞争力。1.供应商准入:1)定义:评估供应商的......