linux 计划任务
来源:互联网 发布:阿里云搭建微信公众号 编辑:程序博客网 时间:2024/05/22 04:33
linux 计划任务分为单次计划任务和周期性计划任务,其中单次计划任务用at命令来执行,周期计划任务用crontab 命令来实现。实际工作中一般都用周期性计划任务,所以下面将重点讲解下周期性计划任务crontab。
一 . crontab 格式说明
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件,格式如下所示:
[wang@Centos6.9 ~]$cat /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed
格式说明:
SHELL变量指定了系统要使用哪个shell,这里是bash
PATH 变量指定了系统执行命令的路径
MAILTO 变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户
HOME 变量指定了在执行命令或者脚本时使用的主目录
Minute Hour Day Month Dayofweek user-name command
分钟 小时 天 月 每星期几 用户 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段。
对于不指定的字段,要用“*”来填补其位置。
这里有几个特殊符号的含义:
*“”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字**
例如: 30 1 * * 6 copy /test /test/back/test.bak 指定每个星期6的1:30执行一次复制test 的命令 30 10 10 * * wang /wang/delet.sh 指定每月10号的10:30 wang 用户执行delet.sh 的脚本30 10 10 * 0 wang copy test test.bak ****指定每月10号和每个星期天**的10:30 wang 用户执行复制test命令 (当 day 和 dayofweek 字段重合时候表示两个都执行**)30 3 10,15 * * copy xx 每月10号和15号的3:30执行copy命令 25 8-10 * * * 每天8-10点的第25分钟*/20 * * * * 每20分钟执行一次 30 20 */5 * * 每隔5天20:30执行一次
二、crontab 安装包和服务启动
计划任务相关的程序包如下:
1. cronie: 主程序包,提供crond守护进程及相关辅助工具。
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
2. cronie-anacron: cronie的补充程序,用于监控cronie任
务执行状况,如cronie中的任务在过去该运行的时间点未能正常
运行,则anacron会随后启动一次此任务
3. crontabs:包含CentOS提供系统维护任务
查看crond守护进程运行状态:
**
CentOS 7: systemctl status crondCentOS 6: service crond status如: [wang@Centos6.9 ~]$service crond statuscrond (pid 2317) is running...[root@centos7 ~]#systemctl status crond● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) **Active**: active (running) since Sun 2017-08-27 22:18:18 HKT; 1s ago Main PID: 46896 (crond) CGroup: /system.slice/crond.service └─46896 /usr/sbin/crond -n**想执行周期性计划任务要确保crond 进程是运行状态!**service crond status|stop centos6启动和停止crond 进程命令systemctl start|stop crond centos7启动和停止crond命令
**
**
用户cron任务:
**
crontab命令是给普通用户来创建计划任务的,使用crontab命令定义可以实现每个用户都有专用的cron任务文件。常用选项如下:
crontab [-u user] [-l | -r | -e]
-l: 列出所有任务
-e: 编辑任务
-r: 移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务
-u user: 仅root可运行,指定用户管理cron任务
普通用户通过crontab -e 来创建计划任务,格式就是上面的crontab 格式一样,只是不用写用户名选项,因为就是本用户嘛。
运行结果的标准输出和错误以邮件通知给相关用户,通过
cat /var/log/cron 查看计划任务日志文件。如果不想发送邮件给用户可以在命令后加上 &>/dev/null 就可以了。
对于cron任务来讲, %有特殊用途;如果在命令中要使用%,
则需要转义,将%放置于单引号中,则可不用转义。
- windows计划任务和linux计划任务
- linux 执行计划任务
- linux计划任务
- linux crontab 计划任务
- linux 任务计划 cron
- Linux计划任务
- Linux计划任务
- Linux计划任务
- Linux计划任务
- Linux 的计划任务
- linux计划任务
- Linux 计划任务
- LINUX 计划任务
- Linux 计划任务
- linux计划任务
- linux 计划任务
- Linux 计划任务
- linux crontab计划任务
- python发送邮件
- 单例模式与多线程
- c语言结构体与指针
- SoX使用手册(中文版)
- Python3 爬取 NBA 2013-2014 赛季比赛数据
- linux 计划任务
- centos7下源码编译配置 apache2.4+mysql5.6+php7.1
- 数独
- spring容器及bean加载机制源码解读
- 从 Spring Cloud 开始,聊聊微服务架构的实践之路
- bzoj2809dispatching 左偏树
- c/c++学习--------->数组
- RBAC 权限管理系统
- linux下杀死进程(kill)的N种方法