Linux计划任务(at,crontab)
在LINUX中,我们通过crontab和at这两个东西来实现
at:它是一个可以处理仅执行一次就结束的指令
crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去
1.at计划任务的使用
语法格式: at 时间
服务:atd
开启atd服务
对应的查看atd服务,如果没有启动则启动
rpm -q at #查看at包有没有安装
yum install at -y #安装at包
#这里可以先查询一下,如果没有at命令的话,则可以直接用yum命令安装
使用at创建计划任务
at 20:48 --注意语法,如果是上午的时间,后面要加am如[10:25 am]
at> mkdir /root/test ---输入要执行的命令或脚本at> <EOT> --按ctrl+d结束job 1 at Fri Oct 28 20:48:00 2016
at -l 查看计划任务
atq 查看计划任务
at计划任务的特殊写法
# at 20:00 2016-10-1 在某天
# at now +10min 在 10分钟后执行
# at 17:00 tomorrow 明天下午5点执行
# at 6:00 pm +3 days 在3天以后的下午6点执行
对于系统来说 :计划任务 就是在某个特定的时刻 执行一个脚本文件
创建成功的at计划任务会在/var/spool/at/目录下成生一个可执行的脚本文件
每一个脚本都对应一个at计划任务
删除at计划任务
atrm 命令
atrm + 计划任务的编号
2.crontab定时任务的使用
crond命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。
linux任务调度的工作主要分为以下两类:
.系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存. 例如/tmp 临时目录
.个人执行的工作:某个用户定期要做的工作,由每个用户自行设置。
启动服务
systemctl status crond # (查看crond服务的状态)systemctl restart crond # 重启 systemctl enable crond # 开机自启
cron命令参数介绍:
crontab的参数:
crontab -u #指定某个用户的cron服务
crontab -l #列出cron服务的详细内容
crontab -r #删除cron服务
crontab -e #编辑cron服务
例如:
crontab -u root -l # root查看自己的cron计划任务
crontab -u san -r # root想删除san的cron计划任务
特殊符号的含义
符号 | 含义 | 示例 |
---|---|---|
* | 代表取值范围内的数字 | (任意) |
/ | 代表”每” | */10 |
- | 代表从某个数字到某个数字 | 6-18 |
, | 分开几个离散的数字 | 6,18 |
我们可用crontab -e命令来编辑计划任务
编辑的是/var/spool/cron下对应用户的cron文件
crontab的计划任务内容保存在目录/var/spool/cron下面
编辑计划任务
crontab -u root -e
也可以直接在/etc/crontab中添加计划任务
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab
因此我们配置这个文件也能运用cron服务做一些事情。
用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
编辑/etc/crontab 配置文件 (说明)
vi /etc/crontab
SHELL=/bin/bash #变量的值指定shell 环境(此处默认为 bash shell);
PATH=/sbin:/bin:/usr/sbin:/usr/bin # PATH 变量定义用来执行命令的程序路径;
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
系统级别的计划任务
对于系统级别的计划任务,需要执行的命令和脚本都放在这里:
/etc/cron.* 按两次tab
ls /etc/cron
cron.d/ cron.deny cron.monthly/ cron.weekly/
cron.daily/ cron.hourly/ crontab
目录作用解释:
cron.d/ #是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。
cron.deny #控制用户是否能做计划任务的文件;
cron.monthly/ #每月执行的脚本;
cron.weekly/ #每周执行的脚本;
cron.daily/ #每天执行的脚本;
cron.hourly/ #每小时执行的脚本;
crontab #主配置文件 也可添加任务;
计划任务案例
1)每天晚上21:30 重启apache30 21 * * * /etc/init.d/httpd restart
2)每月1、10、22日的4 : 45重启apache。45 4 1,10,22 * * /etc/init.d/httpd restart
3)每月1到10日的4 : 45重启apache。45 4 1-10 * * /etc/init.d/httpd restart
4)每隔两天的上午8点到11点的第3和第15分钟执行apach3,15 8-11 */2 * * etc/init.d/httpd restart
5)晚上11点到早上7点之间,每隔一小时重启apach* 23-7/1 * * * /etc/init.d/apach restart
6)周一到周五每天晚上 21:15 寄一封信给 root@xuegod72:15 21 * * 1-5 mail -s "hi" root@xuegod72 < /etc/fstab
anacron
cron用控制循环执行例行性工作。如果我要设定机器每早8点进行备份服务。除非我机器保证在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。
anacron并没有取代cron的意思,anacron用于机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即执行一下没有执行的任务。
注意事项
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要
当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’
将一个月中10天的日志归档
#!/usr/bin/env bash #[-d $PWD/file] && mkdir -p $PWD/file &&exit 1 data='/usr/local/src/log' cd $data date_d=`date +%d` result=$[date_d/10] result=0 date_m=`date +%Y%m` if [ $result -eq 0 ] thennum=01nowdate=`date +%Y-%m-01` #本月第一天enddate=`date -d "last day $nowdate" +%Y-%m-%d` #上个月最后一天startdate=`date -d "$enddate" +%Y-%m-21`end_day=`date -d "$enddate" +%d`start_day=`date -d "$startdate" +%d`dayDiff=$[end_day-start_day+1] fiif [ $result -eq 1 ] thennum=02startdate=`date +%Y-%m-01`dayDiff=10fiif [ $result -eq 2 ] thennum=03dayDiff=10startdate=`date +%Y-%m-11` fitargit_dir=${date_m}${num} echo $targit_dir if [ ! -d $targit_dir ];thenmkdir $targit_dir fi for i in `seq $dayDiff` dofind /usr/local/src -name "access.log-$startdate-*" 2> /dev/null -exec mv {} $data/$targit_dir \; # find /usr/local/src -name "access.log-$startdate-*"startdate=`date -d "+1 day $startdate" +%Y-%m-%d` done tar jcf $targit_dir.tar.bz2 $targit_dir if [ $? -eq 0 ];thenrm -fr $targit_dir fi
转载于:https://www.cnblogs.com/flyhgx/p/6367978.html
Linux计划任务(at,crontab)相关推荐
- Linux计划任务(at/crontab)
linux计划任务(crontab) 一.仅执行一次的定时任务-atd 1. at是个可以处理仅执行一次就结束的定时任务的命令,需要先启动atd服务 2. 启动atd服务 查看atd服务的状态(大部分 ...
- Linux计划任务,CronTab用法详解
「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「订阅专栏」:此文章已录入专栏<网络安全入门到精通> CronTab计划任务 一.服务 二.查看 ...
- linux计划任务之crontab
语法: crontab [ -u user ] file crontab [ -u user ] [ -i ] { -e | -l | -r } 说明: crontab命令 ...
- Linux——计划任务(Crontab)
添加/编辑 crontab 添加或更新 crontab -e 默认情况下,系统回编辑当前登录用户的 crontab 命令集合. 需要编辑其他用户的命令集合,需要使用下面的命令: crontab -u ...
- Linux之计划任务服务crontab
Linux之计划任务服务crontab Linux中的计划任务:crontab Windows中计划任务 Linux中的计划任务 crontab -e命令:计划任务的编辑 计划任务权限 Linux中的 ...
- linux cron源码下载,LINUX计划任务管理_AT与crontab
at命令 一次性计划任务 服务脚本名称:/etc/init.d/atd 设置格式:at [HH:MM] [yyyy-mm-dd] [[email protected]~]# date 2011年 ...
- linux的周期计划任务叫atd,linux计划任务
一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...
- linux计划任务执行bin文件,Linux任务计划和周期性任务执行
linux计划任务有两类 at:未来某个时间点仅执行一次任务就结束的指令,at指令执行时必须要有atd这个服务支持. crontab:可以以时间单位为分钟,小时,每天,每周,每月,每年等循环执行某任务 ...
- linux的任务计划6,Linux计划任务
Linux计划任务: 未来的某个时间执行一次任务,或者周期性执行某个任务,执行结果会通过邮件通知 定时任务:at batch 周期性任务:crontab 系统任务调度:/ect/crontab 用户任 ...
最新文章
- jQuery方法position()与offset()区别
- android url webview,android - webview获取到当前页面的url
- python 仪表盘-Python笔记:制作和自定义仪表盘
- POJ 1449 amp; ZOJ 1036 Enigma(简单枚举)
- 利用java实现的一个发送手机短信的小例子
- 将一个数字划分成树状
- list和tuple
- linux cp 时 略过文件,CentOS下执行cp命令式提示略过文件夹
- Mysql学习总结(56)——MySQL用户管理和权限设置
- python 关联分析算法的包_Python 极简关联分析(购物篮分析)
- 整洁数据 —tidytext(一)
- 微波工程(2)——传输线理论
- linux查看dubbo版本号,Dubbo 疯狂更新!
- 医学统计学-为什么是个医学生就都要学R语言?
- 美国东北大学khoury计算机学院,美国东北大学人工智能专业
- 【PMP】PMBOK 笔记 第6章 项目时间管理
- C语言网络编程实战之线上五子棋游戏(二)
- 由手机号绑定的账号,都应设置更换手机号功能
- CAD自学笔记21条,零基础学CAD可以看看
- 《中国管理信息化》期刊简介及投稿要求