Linux系统定时任务

时间:2021-11-23 21:41:31

linux系统定时任务分为一次性任务和周期性任务。顾名思义一次性任务执行一次就结束了,周期性任务是按照一定规律多次执行,至于这个规律就是自己制定啦。

一次性任务   使用 at 命令

1.确定at是否安装:输入命令 chkconfig --list | grep atd

一般情况都是默认安装而且是自启动的,除非自己给删除了。

重新启动 at服务命令 service atd restart 

查看当前at服务状态命令 service atd status

在系统文件夹 /etc下可能存在文件 at.allow (白名单) 和 at.deny(黑名单) ,这个文件是用来限制哪些用户可以使用at命令哪些用户不可以使用at命令,对root用户无效。如果两个文件都不存在那么只有root用户可以使用at命令。

2.at命令格式

at [选项] 时间

选项:

          -m: 当at工作完成后,无论是否命令有输出都会用email通知执行at命令的用户。

          -c 工作号:显示该at工作的实际内容。

时间格式:

                  1. HH:MM    --》 06:30

                  2. HH:MM YYYY-MM-DD   --》06:30 2017-07-13

                  3. now + 5 minutes

 例如: at  now  +  5  minutes   回车

    再输入你要执行的任务(绝对路径下的某个shell脚本)    

 查看命令: atq    查看当前有哪些定时任务

                    at  -c  任务号   查看该任务的详细

 

 

 

 

周期性任务  使用 crontab 命令

输入命令 :crontab -e    进入crontab 编辑界面,会打开vim编辑你的任务

格式: *  *  *  *  *  执行的任务

每一行命令都代表一个周期任务,编辑结束ESC切换命令模式:wq 保存退出

这五个 * * * * * 分别代表         *          *          *          *           *

                                              分        时        天       月       星期

                               Linux系统定时任务

 特殊链接符号:星号“ * ”       逗号 “,”      横杠 “-”      斜杠 “/”      

                                                        “*”  表示任意时间段

                                                        “,”连接表示在指定的几个时间值

                                                        “-” 连接表示指定区间范围内

                                                        “/n”连接表示每隔n个单位时间

例如:

                  #每晚的21:30重启apache。

 

                  30 21 * * * /usr/local/etc/rc.d/lighttpd restart

 

                  #每月1、10、22日

 

                  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

 

                 #每天早上6点10分

 

                 10 6 * * * date

 

                 #每两个小时

 

                 0 */2 * * * date

 

                 #晚上11点到早上8点之间每两个小时,早上8点

 

                 0 23-7/2,8 * * * date

 

                #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

 

                0 11 4 * mon-wed date

 

                #1月份日早上4点

 

                0 4 1 jan * date 

 

其他命令: crontab -r  删除所有周期任务

                   crontab -l  列出所有周期任务