Linux设置定时任务(crontab)

Linux设置定时任务(crontab)

1.crontab命令概述

crontab命令用于设置周期性被执行的指令,并将其存放在/etc/crontab文件,以供之后读取和执行。
cron系统调度进程,可以使用它在每天的非高峰负荷段运行作业,或在一周或一月中不同时段运行,cron是系统主要的调度进程,可以无需人工干预的情况下运行作业。
检查是否安装了crontab,如果提示未安装请自行安装,crontab安装包在系统光盘里面的pacekage文件夹,也可以进入此网站找http://rpmfind.net/相对应的crontab安装包。
crontab默认开机自启,Ubuntu,centos系统通用。

2. crontab基本命令

方式一:
/etc/init.d/crond start 启动服务
/etc/init.d/crond stop 停止服务
/etc/init.d/crond restart 重启服务
/etc/init.d/crond reload 重载配置文件
/etc/init.d/crond status 查看服务状态(可查看是否在执行定时任务)
方式二(ubuntu16.04适用):
service cron start 启动服务
service cron stop 停止服务
service cron restart 重启服务
service cron reload 重载配置文件
service cron status 查看服务状态(可查看是否在执行定时任务)
方式三:
/sbin service cron start 启动服务
/sbin service cron stop 停止服务
/sbin service cron restart 重启服务
/sbin service cron reload 重载配置文件
/sbin service cron status 查看服务状态(可查看是否在执行定时任务)
常用操作:
crontab –l 显示crontab文件(显示已设置的定时任务)
crontab –e 编辑crontab文件(编辑定时任务)
crontab –r 删除crontab文件(删除定时任务)
crontab –ir 删除crontab文件提醒用户(删除定时任务)

补充说明:
在编辑crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。
格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个特殊的符号:""、"/“和”-"、","
"
"代表所有的取值范围内的数字
"/“代表每的意思,”/5"表示每5个单位
"-"代表从某个数字到某个数字
","分开几个离散的数字

注:commands 注意以下几点
要是存在文件,要写绝对路径。
即使是打印也不会显示在显示屏,在后台运行,最好重定向日志。

使用案例:
#crontab -e (编辑crontab文件)
输入内容
*/1 * * * * root echo “hello world!” >> /root/test.txt
(用root权限,每分钟执行一次命令,输出hello world! 并写入 /root/test.txt)
重载crontab文件
#service cron reload
重启crontab服务
#service cron restart
进入/root/test.txt查看输出结果

3. crontab全局配置文件说明

说明:
/etc/crontab下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。
cron.daily 是每天执行一次的job
cron.weekly 是每个星期执行一次的job
cron.monthly 每月执行一次的job
cron.hourly 是每个小时执行一次的job
cron.d 是系统自动定期需要做的任务
crontab 是设定定时任务执行文件
cron.deny 文件就是用于控制不让哪些用户使用Crontab的功能

4. 编辑crontab文件定时执行shell脚本

编写shell脚本
#vim /root/test.sh
输入内容
#!/bin/bash
echo “crontab定时任务”
编写crontab文件
crontab –e
输入内容
*/1 * * * * root /root/test.sh
(用root权限每分钟执行/root/test.sh脚本)
重载crontab文件
#service cron reload
重启crontab服务
#service cron restart
等待任务执行结果(可用service cron status命令追踪任务)

注:
用编译crontab文件的方式执行脚本,有些linux命令可能会无法执行(待解决)。
推荐配置crontab全局文件来执行shell脚本

5. 配置crontab全局文件来执行shell脚本

vim /etc/crontab
添加内容(例子)
0 2 * * 0 root cd /root/zentao && docker-compose down && docker-compose up --build
(每个星期日凌晨2:00重启禅道)
*/1 * * * * root /home/lenovosh/work/bianyi.sh
(每分钟运行 指定的bianyi.sh脚本文件)
10 14 1 * * root /home/lenovosh/work/bianyi.sh
(每个月的1号14:10运行 指定的bianyi.sh脚本文件)
1 0 * * 1,3,5 root /home/lenovosh/work/bianyi.sh
(每周一、三、五凌晨00:01运行 指定的bianyi.sh脚本文件)
0 0 * * * * root shutdown –a now
(每天零点准时关机)
重载crontab文件
#service cron reload
重启crontab服务
#service cron restart
等待任务执行结果(可用service cron status命令追踪任务)

你可能感兴趣的:(Linux&Shell,Linux设置定时任务,linux之crontab)