Unix入门经典之在指定时间运行程序(11章)

在指定时间运行程序

       在指定时间运行程序的前提,是要俩姐计算机种时间是怎么来的。

11.1

       系统时钟计算机中有两个时钟:硬件时钟与系统时钟。
       硬件时钟:由纽扣电池供电,记录的是1970年1月1日开始截至至今的秒数。以世界标准时间(UTC, Universal Time)或者说是格林威治时间(GMT, Greenwich Mean Time)为止。由于不记录年份,所以不存在Y2K问题,但是对于32位系统,会存在2038问题,也就是使用一个32位数字来记录描述,到达2038年时,该数字会不够用。

       系统时钟:用户实际看到和使用的时钟,与系统或者用户设置的时区有关,又被称为内核时钟或者软件时钟

11.1.1 使用date检查或者设置系统时钟。

在这里插入图片描述
       cst可以理解为美国、澳大利亚、古巴、中国的标准时间都可,在当前语境下,为中国标准时间China Standard Time UT+8:00。
       该版本书为:Date CCYYMMDDhhmm.ss,但对于我学习所使用的ubuntu18来讲,会提示错误。
在这里插入图片描述 这个时候,建议info date,可以产看当前所使用的版本设置时间的具体协议。
Unix入门经典之在指定时间运行程序(11章)_第1张图片
       从上面可以看出对于具体使用的Linux版本协议为Date MMDDhhmmCCYY.ss
在这里插入图片描述

11.1.2 利用hwclock同步硬件时钟

       同样,首先查看硬件时钟(其实当前还不太理解,这里的输出和硬件有什么关系)
在这里插入图片描述       根据系统时钟同步硬件时钟。
在这里插入图片描述

       同步的协议,默认是同步到utc时间,可以尝试同步到本地硬件时间。 可以看到有一个8个小时的时差,已经体现出来了。
在这里插入图片描述

11.1.3 利用NTP(Network Time Protocol, 网络时钟协议)同步系统时钟

       Ntpdate可以从一个基于网络的时间服务器来初始化系统时针。该服务器可以是局域网内部,服务器供应商以及公开访问的NTP服务器。服务器使用信任级别(trust level)来确定权威时间的服务器。数字越小,可信度越高,最高为1,而且考虑到传输中的延迟。

11.2 安排将来运行的命令

11.2.1利用cron执行程序

       cron程序使得Unix用户能够在指定的时间/或日期执行命令、脚本和应用程序。与cron程序相对应的进程名称为crond,它在系统开机之后,就自动启动,并在后台潜伏。可以使用ps(process status)确认cron的状态。
在这里插入图片描述       cron程序的使用cronc程序的使用是用户书写“配置信息文件”,然后后台潜伏的crond按照系统时钟以及“配置信息文件”按部就班的逐一进行。配置文件位于/etc/目录下,与之相关的文件如下截图所示,我们只需关注crontab文件即可。
在这里插入图片描述
       例如我们想要实现每小时对当前用户下的/Doduments进行备份到/backups下。可以打开crontab文件,追加如下内容:
Unix入门经典之在指定时间运行程序(11章)_第2张图片

20 * * * * zteng cp -r ~/Documents ~/backups
第20分钟 每小时 每天 每月 每周 用户名 指令

       一些更加复杂的时间书写语法如下:比如
20 0,2,4,6,8,10 1-5 1-12/2 * zteng Cp -r ~/Documents ~/backups
       上面写法的意思是在每个两个月里面的第1-5天里面的0,2,4,6,8,10中的第20分钟都执行一下复制的操作。
       如果想将cron的输出集中收集起来,可以加上重定向符。
20 0,2,4,6,8,10 1-5 1-12/2 * zteng Cp -r ~/Documents ~/backups >> log.file
2)注释应该传达一些重要的信息,包括:
1、添加/修改记录项的用户的名字。
2、如果出现问题,应该如何联系该用户。
3、添加或修改记录项的日期。
4、记录项(或修改)的目的,指定它所作用的文件。

11.2.2 at 命令的使用

       at 命令适用于在某一特定的时间点,仅执行一次的操作。当前时间为21:13,在21:15时,希望系统能自动执行一次复制操作。Ctrl + D为结束符。
在这里插入图片描述 atq可以查看当前存在的at job
Unix入门经典之在指定时间运行程序(11章)_第3张图片atrm 1 可以删除对应id的job。
       时间不止上述的21:15的形式有效,下面的形式皆有效。
at 5pm
at 5:15pm
at noonat teatime (下午茶时间,一般指4点)
at now + 5 minutes
at 4pm + 3 days (指在3天后的下午4点)
at 1 weeks控制

11.2.3at的访问控制

/etc/at.deny (若存在但为空,则全放开,慢慢添加黑名单) 这种方式时默认情况。
/etc/at.allow(若存在但为空,则慢慢申请,慢慢添加白名单)

你可能感兴趣的:(读书笔记,linux)