Linux系统管理-系统定时任务(crond服务、crontab命令)

前言

再指定的时间,运行指定的命令,或者指定的程序脚本。好多功能都不需要手工来做,比如像备份这样的工作,一般都在凌晨执行,这时就用到系统定时任务了。在Windows里有一个任务计划的工具就是实现了系统定时任务。在个人机用的不多,杀毒软件可能会用到这个。
 

1. crond服务管理与访问控制

要想定时任务生效,必须启动crond后台服务,cron是定时任务的服务,这个d是demo守护进程的意思,httpd这个d也是后台守护进程。在系统中这个服务是默认启动和自启动的。

启动命令: service crond restart
自启动命令: chkconfig crond on

在这里插入图片描述

2. 用户的crontab设置

命令: crontab [选项]
选项:
   -e        编辑crontab定时任务
   -l          查询crontab任务
   -r          删除当前用户所有的crontab任务

命令: crontab -e
作用: 进入crontab编辑界面。会打开vim编辑你的工作
格式: * * * * * 执行的任务

小提示: 要删除当前用户所有的crontab任务,那么用crontab -r。如果只删除其中某一个,那么使用crontab -e进行的单个删除即可。
 

2.1 格式中所代表的含义

项目 含义 范围
第一个 * 一小时当中的第几分钟 0-59
第二个* 一天当中的第几个小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)

2.2 格式中的特俗含义

特殊符号 含义
* 代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思
代表不连续的时间。比如"0,8,12* * * 命令"
- 代表连续的时间范围。比如"0 5 * * 1-6命令",代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如" */10 * * * * 命令",代表每隔10分钟就执行一遍命令

2.3 举几个栗子

时间 含义
45 22 * * * 命令 在每天的22点45分执行命令
0 17 * * 1命令 每周1的17点0分执行命令
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨四点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令 每月的1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

再举几个栗子:

命令: */5 * * * * /bin/echo 11 >> /tmp/test
作用:每五分钟执行一遍这个命令 /bin/echo 11 >> /tmp/test

命令: 5 5 * * 2 /sbin/shutdown -r now
作用:在每周的凌晨5点执行关机

命令: 0 5 1,10,15 * * /root/sh/autobak.sh
作用:在每个月的第1、10、15天的凌晨5点执行这个程序。

开始实验:

  • (1) 每60分钟执行一遍这个命令 echo 11 >> /tmp/test
     
    在这里插入图片描述
     
  • (2) 编写脚本autobak.sh,在12:55执行脚本。
     
    在这里插入图片描述
    注意事项: 在日期的那个地方,在%前面加了转义符,这个在shell编程里没有加转义符,原因:在系统定时任务在crontab -e当中%是由特殊含义的,如果不加的转义符的话,时间脚本是不能执行的。所以这个一定要注意。
     
    在这里插入图片描述
    回忆: date -s 04:59:30 调整时间的命令

总结

(1) 要删除当前用户所有的crontab任务,那么用crontab -r。如果只删除其中某一个,那么使用crontab -e进行的单个删除即可。
(2) 这个最小的单位就是以分钟位单位的。如果是12:52:50 到12:53:00秒就会执行 只是看分钟的流动
(3) 重要的是启动crond这个服务(默认就是启动的),然后用crond –e 进去按照格式去写,在服务器中常用的维护手段。

猜你喜欢

转载自blog.csdn.net/weixin_46818279/article/details/107998829