Linux中设置定时任务执行特定的程序
文章目录
1. 安装cron
如果是docker容器,可能里面没有安装cron,需要单独安装及启动后才可用,以下以Ubuntu镜像为例进行安装。
如输入crontab -e
命令是,提示未找到
root@76a8cb3b2426:/app# crontab -e
bash: crontab: command not found
root@76a8cb3b2426:/app#
1. 安装
# 更新
apt update
# 安装
apt install cron
# 查看状态 service cron status
root@76a8cb3b2426:/app# service cron status
* cron is not running
root@76a8cb3b2426:/app#
# 启动
service cron start
# 停止
service cron stop
# 重启
service cron restart
# 查看crons是否在
# 开机启动
systemctl enable cron
2. 查看cron是否开机启动项中
如果看到
[ + ] cron
,表示cron
服务已被添加到启动项中。
root@76a8cb3b2426:/app# service --status-all
[ - ] cron # 未加入开机启动项
[ ? ] hwclock.sh
[ - ] procps
root@76a8cb3b2426:/app#
3. 容器启动后将cron加入开机启动项中
将cron服务添加到系统的默认运行级别中,以便在系统启动时自动启动。
update-rc.d cron defaults
root@76a8cb3b2426:/app# update-rc.d cron defaults
root@76a8cb3b2426:/app# service --status-all
[ - ] cron
[ ? ] hwclock.sh
[ - ] procps
root@76a8cb3b2426:/app#
4. cron帮助
^Croot@76a8cb3b2426:/app# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
root@76a8cb3b2426:/app#
5. 中文含义
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符
星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。
2. 使用方式
在Ubuntu中,你可以使用cron
来设置定时任务。要编写定时表达式,你可以编辑crontab文件,具体步骤如下:
- 打开终端。
- 输入
crontab -e
并按 Enter 键打开 crontab 文件进行编辑。 - 在文件中添加定时任务,格式如下:
分钟 小时 日期 月份 星期要运行的命令
例如,如果你想每天的早上8点运行一个命令,你可以这样写:
0 8 * * * /path/to/your/command
这里的 0
是分钟,8
是小时,*
表示任意日期和月份,最后的 /path/to/your/command
是你想要运行的命令的路径。
- 保存并关闭文件。
3. 设置按不同条件执行特定任务的案例
在Linux中,你可以使用
cron
来设置定时任务。cron
是一个Unix类操作系统的定时任务调度器,它可以让你在特定的时间、日期或周期性地运行任务。设置按秒、分、时、天、周、月、季度、年等不同条件执行特定任务的案例
以下是一些案例,演示如何使用cron
设置按不同条件执行特定任务:
1. 每分钟执行一次
* * * * * /path/to/your/script.sh
#
* * * * * /app/demo.sh
2 .每小时执行任务
0 * * * * /path/to/your/command
这个任务将会在每小时的第0分钟执行。
3. 每天执行任务
0 0 * * * /path/to/your/command
这个任务将会在每天的午夜执行。
4. 每周执行任务
0 0 * * 0 /path/to/your/command
这个任务将会在每周的星期天(0)的午夜执行。
5. 每月执行任务
0 0 1 * * /path/to/your/command
这个任务将会在每月的第一天的午夜执行。
6. 每季度执行任务
你需要结合月份和星期来实现这个需求。比如,要在每个季度的第一个月的第一周执行任务,可以这样设置:
0 0 * 1,4,7,10 0 /path/to/your/command
这个任务将会在每个季度的第一个月的第一周的午夜执行。
7. 每年执行任务
0 0 1 1 * /path/to/your/command
这个任务将会在每年的第一天的午夜执行。
这些是一些常见的案例,你可以根据实际需求和cron
的语法来设置更复杂的定时任务。