Linux计划任务之_Crontab
说起计划任务,相信大家都应该听过,其实就是给我的计算机设置定时任务,指定时间内去执行相应的操作。
熟悉windows的朋友都知道,windows下有一项系统功能叫计划任务程序,我们可以通过界面设定在Windows环境下的计划任务。
今天我们不谈Windows,重点在Linux服务器上。Windows和Linux在应用过程中最大的区别,在于Windows是更加贴近于用户的,而Linux主要负责管理服务器的工作。相对来说,Linux对计划任务的要求应该更为多一些。
例如,我们需要每分钟执行一次程序,检查系统运行状态,每星期要进行日志备份,每月要进行数据库的备份。诸如此类大量频繁的任务依靠人来做确实不太现实。
如何在Linux中使用计划任务呢?这里就要用到Linux下的工具Crontab。
首先这里我们需要记住两个概念:周期性执行的任务我们称为CronJob,周期性执行的任务列表我们称为Crontable。
环境:VMware10,Linux版本型号CentOS6.5。远程工具 X_Shell5
首先,安装并检查Crontab工具
安装:
- yum install vixie-cron - yum install crontabs
检查:
- crontab -l #检查Crontab工具是否安装 - service crond status #检查crond服务是否启动 - service crond #查询crond服务可以使用的命令
在一些版本的Linux中,Crontab工具是默认安装的(当然,这与你安装Linux时选择哪种安装也是有关系的,最小系统安装默认不会安装该工具),如果没有的话,搭建yum源本地安装即可。
接下来,这里我们先给一个小案例。
案例一:
每分钟都打印当前时间到一个日志文件中
*********date >> /tmp/log.txt
- crontab -e #打开计划任务
#写入
*/1 * * * * date >> /tmp/log.txt
# 保存退出
- crontab -l #打印计划任务
- tail -f /tmp/log.txt #动态刷新log.txt文件的最后一行
上面的案例给出的是最简单的计划任务,每分钟将时间打印到/tmp/log.txt中。可以发现,Crontab工具使用起来并不是相当复杂。
接下来,我们聊一聊Crontab的基本组成。
Linux下一切皆文件。CROND 是一项系统服务,每分钟都会从配置文件刷新定时任务,并执行计划任务,它是以文件的形式设定定时任务。我们上面使用到的Crontab工具,是用来对定时任务进行调整。
关于它的配置文件,也就是我们上面案例中写到的【*/1 * * * * date >> /tmp/log.txt】,有着一定的格式要求。
我们再给出几组例子,帮助理解格式
* 每天10:30重启apache服务
30 10 * * * service httpd restart
* 每月1、10、22日4:45重启apache
45 4 1,10,22 * * service httpd restart
* 每月1到10日4:45重启apache
45 4 1-10 * * service httpd restart
* 每隔两分钟重启apache服务
*/2 * * * * service httpd restart
* 每奇数分钟重启apache服务
1-59/2 * * * * service httpd restart
* 晚上11点到早上7点之间,每隔一小时重启apache
0 23-7/1 * * * service httpd restart
* 每天18点到23点之间每隔30分钟重启apache
0-59/30 18-23 * * * service httpd restart 0,30 18-23 * * * service httpd restart
有特别注意:
1、Crontab共有秒,分钟,小时,天,月,星期 五个域,出第三域和第五域之间执行的是“或”操作,其余都执行的是“与”操作。
2、命令行双引号中使用%时,需要加反斜线 \
案例二:
计划任务:四月的第一个星期天早晨1时59分运行a.sh
错误命令:
59 1 1-7 4 0 /root/a.sh
执行结果:四月的1-7号和四月的每个周天的1:59都执行该命令
修 正:
59 1 1-7 4 * test `date +\%w` -eq 0 && /root/a.sh
关于Crontab工具的使用,我们只需要掌握一条命令加四个选项就足够。
[root@localhost ~]# crontab --help crontab: invalid option -- '-' crontab: usage error: unrecognized option usage:crontab [-u user] file crontab [-u user] [ -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)-s (selinux context)
-u:指定计划任务分配的用户,默认是当前登录用户
-e:编辑计划任务
-l:列出用户的计划任务
-r:删除用户的计划任务
细心的话可以注意到这里有-u选项,表明我们可以指定计划任务的所有者。
案例三:
多用户同时设定定时任务
这就是Crontab工具的一些基本功能,关于Crontab,还有很重要的一点,它的配置文件。
在 /etc 目录下:
[root@localhost ~]# cd /etc [root@localhost etc]# ls cron* cron.deny crontabcron.d: 0hourly raid-check sysstatcron.daily: cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron tmpwatchcron.hourly: 0anacroncron.monthly: readahead-monthly.croncron.weekly:
-1>打开文件 crontab<这是Crontab的全局配置文件>
在该全局的配置文件中也可以添加新的系统级别的计划任务。(需要指定用户)
- */1 * * * * root echo “root->cron/crontab”
MAILTO表示的是计划任务改变之后生成日志的发送对象。
-2>进入配置文件cron.d
- cd cron.d - ls - cat sysstat
crontab 在载入配置文件的过程中,会把sysstat文件中的配置信息载入成root用户的计划任务。
但crontab -e 修改内容,不会改变sysstat配置文件中的信息。直接修改sysstat配置文件中的信息,不会直接载入到crontab中,可以使用命令
crontab sysstat
将配置文件中的内容导入crontab中。这会覆盖原来crontab -e中的全部内容
-3>
/etc/cron.d/sysstat 文件中有注明的用户名,在目录 /etc/cron.d 下的所有文件,都可以认为是系统配置文件的补充。
也可以在该目录下自己创建文件,写相应的计划任务,同样需要注明用户。不需要载入,就可以执行该计划,而且该计划并没有放到 crontab -l -u user中。因此说明,crontab工具不可以编辑系统级别的计划任务。
-4>补充
crontab -e写入的定时任务,以及crontab -l列出的定时任务,保存在文件 /var/spool/mail/”user”文件中.不同用户对应不同的子文件夹
cat /var/spool/mail/root
----------------------------------------------------------------------------------------------
Crontab到这里基本已经结束了,这里还有最后一个问题。
Crontab最小只能设置到每分钟执行一次命令,如果想半分钟执行某个命令怎么做的?
Linux下有条系统命令 sleep,可以让程序停止一段时间,如何通过这条系统命令实现小于一分钟的定时任务呢?
案例四:
计划任务:每半分钟执行一次 将date打印到/tmp/date.log
执行命令:
*/1 * * * * date >> /tmp/date.log */1 * * * * sleep 30s;date >> /tmp/date.log
-------muhuizz整理
转载于:https://blog.51cto.com/muhuizz/1868839
Linux计划任务之_Crontab相关推荐
- 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 用户任 ...
- 云计算实战系列十三(Linux计划任务)
Linux计划任务 知识点: · 循环调度执行 cron 用户级 · 企业应用项目实战(cron) · /etc/crontab · 日志的重要性 · rsyslog 日志管理 · logrotate ...
- linux计划任务一小时,linux,计划任务,每小时执行一次(共7篇).docx
linux,计划任务,每小时执行一次(共7篇) Linux下的计划任务命令小结 在UNIX下怎样实现和Windows下"计划任务"一样的功能 $crontab-e编辑脚本 $cro ...
- Linux计划任务-定时任务
Linux计划任务-定时任务 at单次计划任务 at命令格式 查看at任务 取消at计划任务 创建1分钟后的单次任务 定时任务分类 cron`系统任务调度` /etc/crontab文件格式 用户任务 ...
- Linux计划任务要怎么弄?
Linux计划任务是指在Linux系统中自动执行某些命令或程序的功能.Linux计划任务通常是被以下类型的人所需要的: 系统管理员:他们可以使用计划任务定期执行系统维护任务,例如备份数据.清理日志文件 ...
- Linux计划任务、周期性任务执行
Linux计划任务 邮件服务 本地电子邮件服务 maill命令 邮件正文 实例 at命令 参数 TIME格式 实例 cron计划任务 任务分类 系统cron任务 系统crontab配置格式 用户cro ...
- win10 / linux计划任务
不论是windows还是linux,都可以通过系统自带的计划任务工具配置自动运行程序,协助我们更好地管理工具.下面简单介绍一下window和linux计划任务的配置. win10计划任务: 1.写好需 ...
最新文章
- python turtle画气球-micro:bit + LoRa 实现气球追踪
- bash编程练习题及答案
- [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
- windows下用pycharm安装tensorflow简易教程
- 解决Office系列安装不上的办法
- 别用symbolicatecrash来解析crash Log了
- php表示昨天_php输出各种时间代码表示
- 开源:秋式广告杀手源码
- java class教程_深入理解Java Class文件格式(七)
- Ruby在windows下配置所遇到的问题
- Python pip install修改默认下载路径
- win7下安装VC6LineNumberAddin方法[VC6行号插件]
- 控制系统|反馈系统的稳定性分析
- 将CNKI的caj格式下载成为pdf
- 管理变量、机密和事实
- 怎么将自己的头像p到特定的背景图_怎么把自己的头像和背景分离出来:用ps抠图...
- 计算机慢的解决方法,几种电脑变慢的解决方法
- freescale R10 ipu lib 分析 - ipu_device.c
- 汇编:JMP指令原理
- Ubuntu18.04 安装Proverif 和Syther_tool
热门文章
- MYSQL基本知识:TRUNCATE和DELETE的区别
- word里面用mathtype编辑公式转成PDF后出现乱码
- 测试员,你该如何面对自己30岁后的下坡路?
- android长按非控件处,Android常用之Butterknife使用详解
- python运维案例开发_python运维开发之第六天
- 西门子ug通用后处理_五轴UG(NX)后处理
- 七年前的电脑可以用python_1年前的小五都用 Python 来做什么?
- 服务器日志监控系统怎么解决,服务器日志监控系统
- 矩阵特征值的一些特点
- pytorch ResNet结构代码实现