linux定时操作命令 linux定时指令( 二 )


cron(crond)是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 。linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的 。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务 , 则自动执行该任务 。另外,由于使用者自己也可以设置计划任务,所以,linux系统也提供了使用者控制计划任务的命令:crontab命令 。
crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件 。
linux下的任务调度分为两类 , 系统任务调度和用户任务调度 。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等 。/etc/crontab 文件就是系统任务调度的配置文件 。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等 。用户可以使用 crontab 工具来定制自己的计划任务 。所有用户定义的crontab文件都被保存在/var/spool/cron/crontabs/ 目录中,其文件名与用户名一致 。
假设我们使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab  , 内容为:
第一行SHELL变量指定了系统要使用哪个shell;第二行PATH变量指定了系统执行 命令的路径 。
接下来的命令格式为:
m h dom mon dow user command
英文全拼为:
【linux定时操作命令 linux定时指令】minute hour day month week user commond
注意,/var/spool/cron 目录中的用户调度任务,没有user一项,因为文件名已经代表了user 。
在以上各个字段中,还可以使用以下特殊字符:
crontab命令格式为:
crontab [-u username] [file] [ -e | -l | -r ]
设置定时任务和时间紧密相关,如果服务器的时区时间设置和本地不同,就不能保证计划任务的正确执行 。所以使用crontab的第一步,是调节好服务器的时间 。
下面参考 Ubuntu 16.04将系统时间写入到硬件时间BIOS ,对服务器时间进行调节 。
时间是有时区的,无论硬件时间还是操作系统时间 。hwclock的时区在/etc/default/rcS文件中设置,里面有一个参数UTC,默认值为yes,表示使用UTC时区,如果设置为no,那表示使用osclock的时区 。建议hwclock与osclock设置相同的时区,也就是no 。
1、查看服务器硬件时间
sudo hwclock -r ,看到的时间格式为: Wed 23 May 2018 11:02:17 AM HKT -0.031663 seconds
2、查看服务器系统时间
date ,看到的时间格式为: Wed May 23 11:02:41 HKT 2018
3、设置hwclock和osclock时区相同
sudo vim /etc/default/rcS ,找到:
修改为:
4、将系统时间写入硬件时间
sudo hwclock -w
5、修改系统时区
osclock的时区配置文件为/etc/timezone,不建议直接修改配置文件 。
如果你想修改为CST时间,那么执行 sudo tzselect 命令时,选择Asia-China-Beijing Time即可,这时会提示使用Asia/Shanghai时区 。(ubuntu和centos通用)
6、设置即刻生效
执行 date ,发现时区没有变化,依然是HKT 。
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate time.windows.com
如果执行ntpdate报错:ntpdate[18409]: no server suitable for synchronization found ,那么就换一个时间同步工具 。
sudo apt-get install rdate
sudo rdate -s time-b.nist.gov
再次执行 date  , 发现时区已经变成了CST 。
7、硬件时间同步
sudo hwclock -r,发现硬件时间落后 。
sudo hwclock -w,再次把系统时间写入硬件时间,同步完成 。
实例1:每分钟、每小时、每天、每周、每月、每年执行

推荐阅读