linux设置定时任务(crontab)

Linux设置定时任务

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

扫描二维码关注公众号,回复: 2491785 查看本文章

# 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 “hello world”

 

编写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命令追踪任务)

 

猜你喜欢

转载自blog.csdn.net/qq_29726869/article/details/81227113