分类 "linux" 下的文章

1.设置下本地的时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.使用yum安装ntpdate

[root@localhost ~]# yum install ntpdate -y

3.使用ntpdate命令与时间服务器同步一下时间

/usr/sbin/ntpdate time.windows.com

4.写入硬件设备

[root@localhost ~]# /sbin/hwclock --systohc  --localtime

用法:
 hwclock [功能] [选项...]

功能:
 -h, --help           显示此帮助并退出
 -r, --show           读取硬件时钟并打印结果
     --set            将 RTC 设置为 --date 指定的时间
 -s, --hctosys        从硬件时钟设置系统时间
 -w, --systohc        从当前系统时间设置硬件时钟
     --systz          基于当前时区设置系统时间
     --adjust         根据自上次时钟设置或调整后的系统漂移
                        来调整 RTC
 -c, --compare        定期将系统时钟与 CMOS 时钟相比较
     --getepoch       打印内核的硬件时钟纪元(epoch)值
     --setepoch       将内核的硬件时钟纪元(epoch)值设置为
                        --epoch 选项指定的值
     --predict        预测 --date 选项所指定时刻读取到的 RTC 值
 -V, --version        显示版本信息并退出

选项:
 -u, --utc            硬件时钟保持为 UTC 时间
     --localtime      硬件时钟保持为本地时间
 -f, --rtc <文件>     代替默认文件的特殊 /dev/... 文件
     --directisa      直接访问 ISA 总线,而非 /dev/rtc
     --badyear        忽略  RTC 年份(由于 BIOS 损坏)
     --date <时间>    指定要设置的硬件时钟时间
     --epoch <年>     指定作为硬件纪元(epoch)值起始的年份
     --noadjfile      不访问 /etc/adjtime;需要使用 --utc 或 --localtime 选项
     --adjfile <文件> 指定调整文件的路径;
                        默认为 /etc/adjtime
     --test           不更新,只显示将进行什么操作
 -D, --debug          调试模式

linux系统含两种时间,一种是系统时间,另一种是硬件时间。

date命令将日期设置为2018年8月07日

[root@localhost ~]#  date -s 08/07/18

将时间设置为14点20分50秒

[root@localhost ~]# date -s 14:20:50

将时间设置为2014年6月18日14点16分30秒(MMDDhhmmYYYY.ss)

[root@localhost ~]# date 0618141614.30

hwclock/clock 命令查看、设置硬件时间

设置硬件时间: hwclock --set --date="08/07/18 14:55" (月/日/年时:分:秒)或者# clock --set --date="08/07/18 14:55" (月/日/年时:分:秒)

接下来要做的就是同步系统时间与硬件时间:

hwclock --hctosys 或者 # clock --hctosys hc代表硬件时间,sys代表系统时间,即系统时间同步硬件时间

时区设置

设置北京时间:

tzselect:执行tzselect命令-->选择Asia-->选择China-->选择east China - Beijing, Guangdong, Shanghai, etc-->然后输入1

设置完成后执行:TZ='Asia/Shanghai'; export TZ 并将这行命令添加到:.profile  

以上完成后,显示即为标准中国时间

以下有更简便的方法来修改时间

修改配置文件来修改时区:

  1、修改vi /etc/sysconfig/clock ZONE=‘Asia/Shanghai’

  2、rm /etc/localtime

  3、链接到上海时区文件: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

yum install crontab不可用?

之前一直记得使用crontab -e就可以添加定时任务了,但是提示没有这个命令,于是就想到了

[root@localhost ~]# yum install crontab
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: ftp.iij.ad.jp
 * extras: mirrors.aliyun.com
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
 * updates: mirror.bit.edu.cn
没有可用软件包 crontab。
错误:无须任何处理

会发现找不到可用的服务包,然后在stackoverflow.com找到了答案:

On CentOS 7 you need to use cronie:

yum install cronie On CentOS 6 you can install vixie-cron, but the
real package is cronie:

yum install vixie-cron and yum install cronie In both cases you get
the same output:

.../...
================================================================== Package Arch Version Repository Size
================================================================== Installing: cronie x86_64 1.4.4-12.el6 base
73 k Installing for dependencies: cronie-anacron x86_64
1.4.4-12.el6 base 30 k crontabs noarch 1.10-33.el6 base 10 k exim x86_64 4.72-6.el6 epel 1.2 M

Transaction Summary
================================================================== Install 4 Package(s)

Note that on 6.x yum install crontabs will also install cronie,
cronie-anacron, and exim. Be sure to remember the service is crond and
it will need to be started (and chkconfig enable on)

然后借此机会记录一下,免得以后忘记了

cron安装

就是CentOS 7 使用

yum install cronie

而 CentOS 6 需要更多一个

yum install vixie-cron cronie
或者
yum install crontabs

crontab基本使用

查看crontab服务状态

[root@localhost ~]# service crond status
[root@localhost ~]# systemctl status crond.service

开启crontab

[root@localhost ~]# service crond start
[root@localhost ~]# systemctl start crond.service

关闭crontab

[root@localhost ~]# service crond stop
[root@localhost ~]# systemctl stop crond.service

重启crontab

[root@localhost ~]# service crond restart
[root@localhost ~]# systemctl restart crond.service

开机运行

[root@localhost ~]# systemctl enable crond.service

crontab基本格式

# *  *  *  *  *  command
# |  |  |  |  |
# |  |  |  |  +---- week    星期(0 - 7) (星期天=0 or 7)
# |  |  |  +------- month   月份(1 - 12)
# |  |  +---------- day     日期(1 - 31)
# |  +------------- hour    小时(0 - 23)
# +---------------- minute  分钟(0 - 59) 每分钟用*或者 */1表示

crontab命令编辑

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //查看当前用户cron服务的详细内容    
crontab -r //删除当前用户的cron服务  
crontab -e //编辑当前用户的cron服务

编辑当前用户

crontab -e
0 */1 * * * command

查看某个用户

crontab -l -u root

删除某个用户

crontab -r -u root

crontab常用示例


30 21 *  *  *  systemctl restart httpd.service
表示每晚21:30重启apache。

45 4 1,10,22  *  * systemctl restart httpd.service
表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 systemctl restart httpd.service
表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * systemctl restart httpd.service
表示在每天18 : 00至23 : 00每隔30分钟重启apache。

0 23 * * 6 systemctl restart httpd.service
表示星期六晚上11点重启apache。

* */1 * * * systemctl restart httpd.service
每一小时重启apache

* 23-7/1 * * * systemctl restart httpd.service
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed systemctl restart httpd.service
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * systemctl restart httpd.service
表示一月一号的4点重启apache 

cron信息记录在哪里

  1. 每次编辑完某个用户的cron信息后, cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的, 只可以用crontab -e 来编辑。
  2. cron启动后每过一分钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
  3. 那如何要控制到秒级别呢??
[root@localhost cron]# clear
[root@localhost cron]# pwd
/var/spool/cron
[root@localhost cron]# ll
总用量 0
[root@localhost cron]# crontab -e
no crontab for root - using an empty one
* 2 * * * sdfsadfsd
"/tmp/crontab.JgDDT9" 1L, 20C written
crontab: installing new crontab
[root@localhost cron]# ll
总用量 4
-rw------- 1 root root 20 12月 13 07:39 root
[root@localhost cron]#