crontab 定时任务设置

Linux设置定时任务

crontab命令概述

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

2. crontab基本命令

点击查看代码

<details>
<summary>点击查看代码</summary>

</details>

方式一:

# /etc/init.d/crond start 启动服务
# /etc/init.d/crond stop 停止服务
/etc/init.d/crond reload 重载配置文件
# /etc/init.d/crond restart 重启服务
/etc/init.d/crond status 查看服务状态(可查看是否在执行定时任务)# /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的功能
  1. 编辑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命令追踪任务)

posted @ 2021-10-18 14:03  清风6661  阅读(575)  评论(0)    收藏  举报