想显示一下当前系统上的时间该怎么显示?有一个命令叫做date,来看date命令,如下图,
第一个星期几对吧?然后是月日小时分钟秒,最后一个是年对吧?CST指的是它的时间格式,我这个可以先姑且不用管它。这是我们的时间,当然这个时间由于我们是虚拟机,它很可能跟我们的统时间未必一致,这是虚拟机自己内在的问题,倒不是说我们系统有什么别的问题,或者时间走错了,倒不是这个。需要注意的是,date不但能够显示时间,还可以用来修改时间。data用于时间管理,当然在说时间管理之前,我们还得说一说linux的时间实现方式。
我不知道大家有没有留意过,就算我们的电脑关机了,下一次开机以后那个时间仍然是正确的。
我指的是Windows,这是为什么呢?我们怎么去衡量时间的?时间是个什么东西?大家知道,所谓二维指的是什么?有长和宽是吧?指的是平面结构,那三维指的是?立体,那四维呢?其实第四维就是时间轴。那时间到底是什么?我们能不能穿越?其实指的无非就是穿越时空,当然,你不能看电视,跟那不是同一概念,对吧?那肯定听说过虫洞或者黑洞吗?是吧,黑洞是什么?虫洞是什么?当然,我们不用探讨这些天文问题,就问时间是什么?这个概念,天天在说是吧?好像不是能特别解释的清楚。
但不管怎么讲,我们要进行时间计量的话,该怎么进行实现?那就意味着我们时光流逝一刻,我只要把这个流逝的长度给它记录下来,是不是就行?那怎么能够做的比较精确?像早期的钟表都是机械施工,中间的误差是非常大的,一般一天下来可能慢个一分钟,两分钟都有可能。而现在,计时器是靠什么计时的?靠什么?我们现在有很多表,我们称为叫电子表是吧?或者叫石英表,那到底是什么玩意儿?它是靠晶体振荡器来完成时间计时的,那种振荡器大概每秒钟可以振荡很多次,而且这种次数对于时间长度的衡量是非常非常精确的,能精确到什么程度?比如说专业级别的这种晶体振荡器用来使用的表,它一般来讲万年走错的时差也不会超过一秒。那现在主板上用于计量时间的那个设备就是个振荡器,就是个石英振振荡器或者叫晶体振荡器,但这种振荡器要想振荡起来,必须靠电才能震荡的,所以我们主板上都有一个纽扣电池,不知道有没有见到过?有没有这样的经历,有些手机你关机了,把电池一抠再装上,你会发现时间重置了。有没有发现啊?这些手机就是因为它的主板上没有带电池的原因,所以我们必须得自己修改时间。那它后来是怎么走的呢?没带纽扣电池,但是手机上是不是有电池啊?你把手机电池一抠它就没电了,所以就不能走了。但是我们的电脑关机了,你把电源拔了,他是不是照样可以走呀,这是为什么呢,主板上有块电池,这块电池当然有很多别的作用,能维持这个时钟继续走的也是它的一个重要作用之一,都一定要记得。这个时间我们可以把它称为叫硬件时间,或者称为叫实时时钟,叫RTC,我把它称为叫实时时钟 real time clock。每一次操作系统开机的时候,它都是从那个硬件时钟当中读取的当前时间,然后设置为当前系统时间。能理解了吗?这里面Windows主机每一次开机以后,你发现时间都是正确的,虽然Windows关机了,但是它仍然是正确的,本地的那个时钟虽然看上去很准,但它未必真的准,因为电池扣下来又装上去,中间可能不知道,是不是有可能会走错?那一旦发生这种情况怎么办?有没有留意过现在事实上在Windows里边,它会设置所谓的叫时间服务器。
网络时间服务器对吧,那这个时间服务器称为叫做ntp,我们称为叫网络时间协议,network time protocol。我们可以做一台主机,这台主机上的时间始终走的非常准。那我们的这些客户机呢?都可以以它的时钟作为我们的时钟,我们时钟不准,它通过网络读取别人的时间设定,然后改变本地时间来完成,但是这个在上网以后才行,或者是有时间服务器以后才行,但是这个我们先不管它。
需要注意的是,linux和Windows有一个不同的地方。我们的linux在开机的时候,它会通过rtc读取当前时间,但是一旦读取成功了,就不再使用这个时间了,以后我们的操作系统自身,就是我们内核自身,会通过软件的方式模拟震荡器在在系统内部来维持一个时钟,所以linux开机以后,它有两个时钟,一个叫硬件时钟,一个叫系统时钟,它有两个时间。只要我们操作系统在开机,在运行当中,我们内核在CPU的作用下就会自动进行计时的,所以这两个时钟很可能走的不一样,硬件始终在纽扣电池的供电下,它走的很准,但是我们的系统由于CPU非常繁忙,计时可能会出现误差的,这很有可能,但不管怎么讲,我们的系统时钟和硬件时钟对linux而言是不同的时间。那因此我们使用date命令所看到的时间是系统时间,而非硬件时间,想看硬件时间,可以使用clock命令,
或者使用hwclock叫硬件时间,hardware clock,如下图,
它俩时间还是比较接近的是吧?计时方式,一个是12时,这里显示为AM。PM指的是后半天,AM指的是前半天,这两个时间目前来讲还是一致的,但是如果我们修改了系统时间而没修改硬件时间,它俩时间很可能就不一致了。这个还需要注意,所以这两个时钟未必是同步的,你可以只改硬件,不改系统,也可以只改系统,不改硬件,它俩时间都未必一致。就算它俩刚开始一致,随后走着走着也可能会不一致了。那刚才我们使用date命令来查看了当前系统的时间以及日期等,
那我们如何去使用data修改当前使用时间?好,那顺便我们在此处就来看一看如何去修改,假如说一个命令我不会用,我忘了它该怎么去完成某种功能,该怎么办?我们来获得命令帮助,如何获得命令的使用帮助?获得命令使用帮助的方式可能不尽相同,有许多种,比如之前提到过,Linux命令分成内部命令和外部命令对吧?对于内部命令而言,它的帮助是这样获得的,内部命令有一个特有的方式,我们使用help命令,help本身也是内部命令,help加命令名就可以获得一个内部命令的使用帮助。比如 help command,比如看我help一下CD,如下图,
cd的使用方式给你介绍出来,当然都是英文的啊,Change the current directory to DIR.The variable $HOME is the default DIR. 什么之类的,这就是内部命令的使用帮助,help一下ls,如下图,
很可能就没法用了,看到了吗?这就是内部命令的使用帮助获得方式。另外很多内部命令很可能也支持-h选项,或者你使用-h它,但是它告诉你是它也能够使用帮助,但是这个不是正确的使用方法,知道就行,那再看外部命令怎么获得帮助?如何获得帮助?刚刚说过help ls不行了,那怎么办?ls --help,注意我们使用ls对于外部命令来讲,它都有一个长选项叫杠杠help,大多数的外部命令都支持,注意,不是所有的,一般来讲大多数的都使用杠杠help,Command --help 这是获得它的简要帮助信息的,如下图,
支持哪些选项?以及使用什么样的执行格式也都有详尽的说明。好了,那无论是内部命令还是外部命令。他们都有一个公用的使用帮助方式,我们把它称为叫手册,叫命令手册,也就所谓叫manual,那我们要查看一个命令的手册的话,就是用man命令,使用man,后面跟上一个命令,
就表示打开查看一个命令的命令帮助手册,命令使用手册就像我们买一个电器,买一个设备,是不是都有使用说明啊?就类似于那个使用手册,几乎所有命令都带有使用手册。各位应该明白,既然是使用手册了,它通常都应该是个文件,是不是?而对在我们的linux上,它通常是一个文本文档,但这个文档是压缩存放的,所以我们使用man ls的时候。man ls的时候,它就能够打开ls的那个对应手册文件了,但这个文件在什么地方?以后再说,如下图,
就打开这个手册了,先告诉name,这个命令是什么?以及它的简要使用说明或者功能说明,
SYNOPSIS,它的使用格式说明,description,它的使用描述,有些地方可以带个options,它的各种选项等等,所以它有很多全大写的,这表示分段的说明,手册的分段说明,后面还有什么?作者,REPORTING BUGS,如果当前这个命令发现有bug的话,那么将这个bug报告给谁?给你邮箱地址看到了吗?COPYRIGHT,这是版权,Copyright © 2006 Free Software Foundation, Inc.这叫自由软件基金会,说白了,自有软件基金会就是GNU,它也称为叫自由软件基金会,简写为fsf。然后,SEE ALSO指的是什么呢?如果想获得进一步的信息,请查看,就这意思,另外进行参照,就这意思。所以我们将来要找一些内容的话,找对应的段就行了,如果说某些命令有使用帮助的话,它可能还会出现像examples,也叫使用方法,使用事例等等。比如说还有我们的cd命令,你也可以man cd,但是需要注意,对于内部命令而言,你man的时候它man的不是cd,而man的是这个内部命令所属的shell,man cd,它显示的是bash的帮助,告诉你man是bash的内置命令,然后bash是什么呢?然后给你解释,如下图,
看到了吗?所以内部命令一般很少使用慢去查看,使用help是最简洁的方式。但是有没有发现man ls,有没有发现这个ls后面加了个括号一啊?是不是?看这个,LS(1) ,而且后面有个说明,叫user commands看到了吗?这是什么玩意?好了,那接下来我们要解释man了,要记得man是有章节的,man分章节。第一,后面显示个一就表示那是第一章节的,man的章节有八个,注意,它的常见章节有八个,第一个章节就刚才显示为1的,1表示这是用户命令,就刚才看到的user command,用户命令,什么叫用户命令啊?就是所有用户都可以使用的命令,包括普通用户也是,这是1,第一章节。第二章节表示这叫系统调用,第二章节内容所显示的都是系统调用。比如各位来看,我们man一下read,man read,如下图,
它告诉你这是个内容命令,仍然在第一章节看到了吧?但是我man 2 read,如下图,
那这里是不是显示read(2)了,告诉你这是个系统调用,调用格式,那看man后面可以加数字的,加数字什么意思呢?就是显示第几个章节中的内容,如果没指定章节,它显示哪一个?一二三四五六七往后排,哪一个先出现,就显示哪一个,不是所有命令第一章节都有。谁先出现,显示谁的?你比如man mount,没有给任何章节吧,回车应该显示几?第一次出现在哪个章节中就显示哪个章节,如下图,
所以如果多个章节中都有,它就显示第一次出现的,从小往大进行排序,那因此,多个章节中都有的话,我们就要自己指定后面的章节了。问题是我们怎么知道一个命令在哪些章节中有呢?那我们如何去查看章节?有个命令叫做whatis,后面跟上command可以显示这个命令的摘要信息,以及出现在哪些章节当中了,这个命令很好玩啊,叫what is?比如你看whatis read,如下图,
它说read在这几个章节中有,当然,加p这个我们不用管了,只看1和2,所以这这表示它第一和第二章节中都有,同样的道理,我使用whatis看一下ls,如下图,
是不是只有第一章节中有?1p可以不用看,这就是如何查看一个命令出现在什么章节当中了。第二章节中其实解释的是系统调用。
那然后第三个章节,除了系统调用之外,还有什么调用啊?库调用是吧,第三个章节当中是显示的是库调用,并非所有命令都有库调用,只有库才有库调用,如果碰巧一个命令叫某个名字,一个库也叫某个名字,它俩才会同时出现的,能理解这个意思吧,所以命令并不是库,库也不是命令,
之所以会同时出现,像刚才一个read既有用户命令它又是系统调用,为什么呢?只是它俩碰巧重名了而已。它俩并非是一码事,好,第三个章节是库调用。
第四个章节叫特殊文件,什么是特殊文件?其实设备文件都叫特殊文件,什么是设备文件?之前说过,在dev目录下,有什么块设备和字符设备,还记不记得,每一个块设备都有一个文件,每个字符设备也都有,设备文件是一类比较独特的文件,它在系统上,在你的磁盘上,真正的数据区域里面没有存储任何内容,它只是作为设备的访问入口存在的,那不是一个真正的文件。所以我们称为叫特殊文件,那因此,这里都是解释那些特殊文件是什么?我们来看,我们man tty,看有没有?如下图,
各位应该明白,这是第四个章节的tty,是不是,那tty就表示解释terminal,就是我们终端到底是什么的?我们之前说过终端,告诉你叫controlling terminal,用于控制终端的。对应的设备文件是dev下的tty看到了吧?而且告诉你这是一个字符文件,而且它的主号码是什么次号码是什么等等。当然,这些号码是什么以后会有解释,现在先不用管它,都是初步认识,现有一个大概的概念,好,这是第四个章节。
再看第五个章节,第五个章节中显示是叫文件格式,叫文件格式,什么是文件格式?很多的命令为了定义它的执行特性,可以使用选项,那有些命令它的选项可能不需要用户每一次都指定,或者是这个命令,我希望它开机自动启动,怎么执行呢?如果ls,你用了ls /root,开机就自动执行一次,而且想给它加个选项,但这种执行我们不是通过命令方式来实现,怎么办呢?对于非常复杂的执行文件,它通常都有一个叫做配置文件的文件,在这个配置文件中保存了以往可以通过选项指定的程序的执行特性或者执行属性。这能理解吗?所以这个配置文件当中类似于变量一样,或者什么等于什么的,这种方式来来定义这个程序的执行属性和特征。那问题是这个命令的这个文件到底有什么格式?它怎么使用呢?支持哪些选项?每个选项支持使用什么的取值啊等等。这些我们都需要额外定义的,举个简单例子,大家还记得我们的passwd命令吗?这个用来改用户密码的,那改了密码以后保存在什么地方或者用户的这些相关属性保存什么地方?其实跟用户账号相关的属性有两个文件,一个在etc下叫shadow,一个在etc下叫passwd,跟命令是一个名字,所以这个文件是有格式的,我们来看,cat passwd,如下图,
这里显示第五章节的,告诉你这是用户的密码文件,而且告诉你这冒号隔了几个段,第一段叫什么?第二段叫什么?都有详细解释的,明白吗?所以说这叫文件格式,就是解释某一个命令的对应的配置文件的语法的。说白了就是配置文件的语法,这是第五章节。
第六个叫游戏,这跟游戏相关的,linux是有游戏的,只不过都是一些休闲益智类的游戏,肯定不是DOTA,科学研究发现那种玩游戏时间长了会变笨变傻的,而且身体也会渐渐垮掉了是吧?这是现实表明,所以对于it专业人士而言,玩的游戏都是这种益智类的休闲小游戏,什么贪吃蛇呀,推箱子之类的,扫雷,玩一会就可以了,它这里对游戏的说明,所以这个我们不关心了,或者你可以自己手动装一遍linux,它里边默认带的有游戏,只不过我没装而已,好,这是第六个章节。
第七个叫杂项,不变归类的杂项,叫Miscellaneous,我们称叫杂项,不便归类的命令。
第八个章节实际上是我们将来用的比较多的叫做管理命令,这是管理员才有权限使用命令,通常,它是位于/sbin,/usr/sbin,/usr/local/sbin下的命令。而这里的用户命令,通常指的是于/bin,/usr/bin,/usr/local/bin等等,这些路径下的命令,这一类命令,管理员也可以用,普通用户也可以用。因为他们会修改硬件参数或者硬件工作特性,以及其他的系统级别的配置。之前使用那个mount命令。它就是一个挂载类的命令,它就是管理员的命令。好了,我想知道man命令怎么使用怎么办?那就是man man,想获得man自己的使用手册,如下图,
man formats and displays the on-line manual pages. 这里告诉我们man的使用格式,man还有一些选项,什么-f啊,-k啊,都不太常用,我就不管它了。但是章节的相关概念一定要记清楚。好,那我们接下来解释man对一个命令的描述,我们就以mount为例好了或者以date为例,如下图,
date的使用格式后面,它使用中括号括起来一个内容,在这里使用格式说明当中,中括号括起来的内容表示是可省略,叫做可省略,可以不用,像刚才我们使用data这些都是不是都没加呀?还有你看这些中间加个竖线的,这表示二选一或多选一,只能使用一个,不能同时使用的,叫多选一。除了这些之外,它可能还有别的,有的地方可能还会出现这种尖括号,<>,尖括号这表示必须给出的内容,它跟中括号刚好相反,中括号是可省的,而尖括号则表示必须给出的内容。非可选的,有时候可能在后面还会看到点点,...,可以出现多个,可以使用多次,你比如[option]...什么意思呢?
可以有多个选项,明白这意思吗?这表示可以出现多次,[]叫必选,<>叫是可选,...表示可以出现多次,可以重复多次,就这个意思,!表示多选一,也有花括号对吧?{},花括号其实没有特殊意义,它只是表示分组的,比方说有时候多选一的时候,只是对谁而言,比如说多选一的时候,针对哪一部分内容,他们之间是可选的,是多选一的,限定一个范围的,它是用来分组的,没有特殊意义。好,那我们再对man手册当中那些章节做一下说明,有时候在man中,可能会出现name,name表示什么意思?命令名称,简要使用说明对吧,还有一个叫SYNOPSIS,这表示用法说明,SYNOPSIS是用法说明,这表示命令名称及功能的简要说明,用法说明包括可用的选项,当然,它只是你列出来选项,没说选项是什么意义啊,DESCRIPTION,这指的是什么呢?这是描述,就是详尽描述,命令功能的详尽说明,包括每一个选项的意义,当然,有些命令可能把选项单独列出来,使用options来进行定义,就可能包括可能更精确一点,那有些命令可能直接有一个options,那它不在DESCRIPTION里面描述了,而是直接在这里说明每一个选项有的意义。有的还有个FILES,这表示命令相关的配置文件,bugs解释过了,这是报告bug给谁的,就不用再说了。对我们而言,有一种叫examples,使用示例,这段对我们而言很关键,有些命令你看了很多选项,你也不知道该怎么用,于是使用示例中会有说明,告诉该怎么用,像man lvcreate,如下图,
在最后面是不是有examples?也说明lvcreate怎么用,而且给你解释是什么意思?所以使用示例是很好的帮助。SEE ALSO,刚才已经解释过了,叫另外参照,其实有了man,对linux而言,我们几乎不需要任何额外资料了,任何时候我们使用命令的时候不会用了直接man就可以了,甚至这些选项更容易,你也不用记,只要有man,但是前提是能看得懂。
好,那我们就以date为例来看一下它的使用,如下图,
来看date的使用说明,date [OPTION]... [+FORMAT],后面还可以使用加号跟上,这表示什么意思呢?date指定一个选项,以后还可以使用format指定,比如说,我只想显示秒钟,你想默认的显示什么呢?年月日什么什么都有了,我只想显示秒动你去指定格式的,那问题是都有哪些格式?怎么指啊?它后面会有说明的,看到吗?它说format有哪些呢?看这里,FORMAT controls the output. The only valid option for the second form specifies Coordinated Universal Time. Interpreted sequences are:,看到没有,哪些百分号开头的都是,这就是format。好再往前,date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]],你可以使用date,使用[-u|--utc|--universal]指定这样一个时间去修改系统时间,可以使用date命令修改时间,[]表示可选,所以可以不用指了,后面也可以指定时间,这表示修改当前时间到某个时刻的,怎么改呢?MM表示月,DD表示日,hh表示小时,mm表示分钟,CC|YY表示年,月日小时分钟年,可以使用两位的年,也可以使用四位的年,比方像今年24,或者你写成2024都可以,[.ss],注意这个点不可少,如果你还要跟上秒的话就点儿秒钟,有没有发现都是两位啊?必须是两位,那如果是0,如果是1就写成01,然后回车,改好了,看到了吗?如下图,
就这么简单,当然,大多数都可以省略的,再看下使用格式,[MMDDhhmm[[CC]YY][.ss]],可以只指定月日小时分钟,年可以不用,秒也可以不用,年不指定的话就是当前一年,秒钟不止就是零零,简单吧,那由此知道它该怎么来用了。
先说man的使用格式,大家发现使用man,打开手册页以后,它有很长的内容,对不对?那如何进行翻页?怎么看后面内容?当然,叫翻屏更合适一点,这不是页,是屏,怎么实现翻屏的?怎么向后翻向前翻?像尾部翻屏,以后把它称为叫向后了,向后翻,一屏使用空格键,space,敲空格键,向前翻一屏,使用b键,向后翻一行,使用回车键enter,向前翻一行,是用k键。但是这样一来,就不得不一页一页看了对不对?如果说现在明确想找一下它的事例想看一看,怎么办?
那实际上,它还支持查找功能,那怎么查找呢?它有两种方式,第一,光使用斜杠加上关键字加回车,/keyword ,第二种方式,我们使用问号加敲回车,?keyword ,但它也有区别,一个是自文件首部向尾部搜索,一个是反过来,/keyword是自前向后,?keyword是字后向前。它是从当前位置开始的,有时候可能是这样子,搜索了字符有多个文本?无论是向前还是向后,一搜不当紧,它有多个,那该怎么办呢?敲n键。n键表示下一个,大n是前一个,N键表示前一个,对于斜杠和问号来讲,它的意义是不一样的,是不是方向不一样了?因为问号本来和斜杠的方向就不一样,在里边找一个叫time的这个关键词,我怎么找?回车后面反量显示,我们敲n,n小写,n大写n都倒回去了,如下图,
当前所有显示的这个默认是不区分大小写的。这是它的几个基本使用方法,我们要退出使用q,q表示退出。
我们继续来看它,format这一项格式怎么使用的?比如像这里,我们随便找一个吧,像这里百分号大写的d(%D)表示什么呢?显示日期格式是月日年。那怎么用呢?date +%D,如下图,
月日年看到了吗?那如果我们只想显示秒钟怎么办?只显示年怎么办?只显示时怎么办?
我让你显示时间怎么办?自己试一试,看能不能找到的办法,动手试试,是不是很简单啊?比方说我显示年该怎么办?百分号大写的y是吧?或者小写y都行,比如说date +%y 回车,如下图,
小y只显示两位年份,不但如此,它还可以这样用,比如说今年是什么年?date +"this year is %Y" 如下图,
前面单词还能原样不动的进行显示,直接显示这么一句话,还可以带标点符号,
date +"this year is %Y." ,如下图,
不但如此,还可以换行,今天是什么天?那怎么显示天?date +%d ,如下图,
比方在这里再写个今天是哪一天是不是可以?date +"this year is %Y.today is %d.",如下图,
那大家发现这两行是不是在同一行里边了?也可以让它换行,将这两行显示在不同行当中也可以的,那怎么办呢?在这里百分号n,表示一个新行,看到了吗?来给它加个百分号n,就表示从这个地方开始,它会换一个新回车看到吗?date +"this year is %Y.%ntoday is %d.",如下图,
那如果显示时间,怎么显示,就是小时分钟秒,date +%T,如下图,
懂了吧,这叫小时分钟秒。而使用date +%F,会显示什么?这是什么意思?来看F是什么?
%F full date; same as %Y-%m-%d,是这种格式的,如下图,
年月日,当然这种格式我们也可以这样写,那刚才我们说年怎么写的?大Y是吧?月是小m,日是小d,date +%Y-%m-%d,如下图,
也是年月日效果是不是,一样的,就显示几点几分,怎么写?date +%H:%M,如下图,
大S是什么?大S是秒钟,那小S呢?unix元年计时法从一九七零年1月1号零点零分零秒至此刻为止,所经过的秒数,你可能觉得很奇怪,它为什么要这样计时?但是它这里有说明看到没有?是utc时间,格林威治天文台知道吧,也有人叫做格林尼治是吧?格林威治天文台,那个时间本初子午线所经过的时间,那一刻,为标准时间对不对?然后有东时区和西时区对吧?然后进行偏移计时的,那这个时间就是从格林威治天文台那个时间的零点零分零秒,就是一九七五年1月1号至此刻为止,所经过的时长,大家想象一下,无论你是东八区还是西三区,从格林威治天文台时间一九七零年1月1号零点零分零秒至此刻,所经过的时长一样不一样?一样,但是当地时间一样不一样,不一样,理解什么意思了吗?如果我们现在在数据库中记录数据的话,这是哪一天发生的一笔交交易,大家都应该知道我们现在全球经济一体化对不对?任何我们网站访问可能随时访问国外的网站,如果我们都以当地时间计时的话,进入到数据库里面,可能都是混乱的,能理解了吗?所以我们记录这个时间,并且在显示的时候换算成当地时间,它的时长一致,精确时间是一样的,但是显示的当地时间不一样,因此在很多数据库里边要记录时间的话,通常都使用这种方法来精确记录时间。所以你千万不要以为你看上去是11点13分,那这个时候时间就一定是11点13分,不是这么回事的,我们是东八区偏移时间的,那因此这个东西我们就把它称为叫时间戳,它也是一种时间计时法,那我们来看,我们使用date +%s的显示结果,如下图,
再过两秒钟,显示结果就不一样了,如下图,
看到吗?再过两秒钟可能就不一样了。我们用这个结果,你除以一年是365天是吧?闰年是366天,所以想得到经过的多少年通过直接用除法得到的结果不准确,但不管怎么讲,至少可以算出从一九七零年1月1号到今天为止,经过多少天了是没错的,因为一天只可能是八六四零零秒,没错吧,所以用这个除以八六四零零得到的结果,一定是从一九七零年1月1号起到今天所经过的天数,这应该是没有错的,当然它所经过的天数,今天是不算的,因为今天没过去,好,这就是我们date。我们使用date改一下时间看看,如下图,
我们使用clock来看一下我们硬件时间,如下图,
改了么,没有,所以我们说它是两套时间,对不对?系统改动的时间跟硬件时间,现在以系统为准,硬件是错的,对不对?那就以系统为准,把硬件时间改成系统时间,是不是这意思?那怎么办?hwclock这个命令就可以实现了,使用-w就表示将系统时间同步到硬件去,所谓同步到硬件去,就意味着改硬件,而不是改系统,能理解吧,所以你看让w改一下,再使用clock,hwclock -w,如下图,
那么硬件时间改了吗?看懂了吧,这是hwclock -w,好了,现在硬件时间准了,我改系统时间,现在改个错的,比如说现在是11月15号12点,date 11151132,如下图,
看现在系统时间是错的,但硬件时间是对的,那因此这个时候就需要把系统时间改为硬件时间,
也就是意味着把硬件时间同步到系统上来,对吗?那这时候怎么办呢?仍然使用hwclock,我们使用杠s,读取硬件时钟到系统里边,hwclock -s,来看看,如下图,
对了吗?没问题吧?顺便说另外一个概念,叫hwclock默认情况下,它是显示硬件时钟的而-w表示什么意思?-s这又是什么意思?-w表示将系统时间写到硬件中去,-s表示将硬件写到系统上来,是不是这样子?就表示以谁为准,w就表示以系统为准,s就表示以硬件为准。但是它有一个更长的选项,有详细说明的,来看man一下,如下图,
hwclock -s or hwclock --hctosys,硬件时钟到系统,以硬件为准,hwclock -w or hwclock --systohc,是系统时钟到硬件没错吧?--systohc是它的常选项,所以你使用-w或者--systohc都行,而我们要想显示时间,通常是-r,这表示读取时间,其实不加-r选项效果是一样的。注意,将来我们配置服务器的时候,是非常常见的操作用法,所以务必记住这些命令的使用。
有没有发现我们一个命令搞定了,比敲点鼠标点,下一步下一步要快得多吧?开始慢慢学脚本的时候,会发现可以把一大堆命令放到一个文件里边一并执行,速度非常快。好,这就是我们man命令的使用和hwclock以及date命令的使用。