linux定时任务及练习
第1章 定时任务
1.1 什么是定时任务
相当于闹钟每天叫你起床
设定一个时间去做某件事
1.2 系统定时任务
[root@zeq ~]# ll -d /etc/cron* drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.d drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.daily 系统定时任务每天运行这个目录里的内容 drwxr-xr-x. 2 root root 4096 Jul 10 18:23 /etc/cron.hourly 系统定时任务每小时运行这个目录里的内容 drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.monthly 系统定时任务每月运行这个目录里的内容 drwxr-xr-x. 2 root root 4096 Sep 27 2011 /etc/cron.weekly 系统定时任务每周运行这个目录里的内容 -rw-------. 1 root root 0 Aug 24 2016 /etc/cron.deny 系统定时任务的黑名单 -rw-r--r--. 1 root root 457 Sep 27 2011 /etc/crontab 系统定时任务的配置文件之一
系统定时任务日志切割 [root@zeq ~]# ll /var/log/messages* /var/log/secure* -rw------- 1 root root 1132 Aug 7 15:34 /var/log/messages -rw-------. 1 root root 110667 Jul 12 07:11 /var/log/messages-20180520 -rw-------. 1 root root 98541 Jul 30 12:29 /var/log/messages-20180730 -rw------- 1 root root 1273 Jul 31 03:39 /var/log/messages-20180807 -rw------- 1 root root 6131 Aug 8 17:20 /var/log/secure -rw-------. 1 root root 17996 May 20 03:30 /var/log/secure-20180520 -rw-------. 1 root root 46696 Jul 30 13:06 /var/log/secure-20180730 -rw------- 1 root root 5764 Aug 7 09:10 /var/log/secure-20180807
1.3 用户的定时任务
crontab -l 查看用户的定时任务 crontab -e 编辑用户的定时任务 /var/spool/cron/root root用户的定时任务 crontab -l = cat /var/spool/cron/root crontab -e = vi /var/spool/cron/root
1.3.1 为什么使用crontab
1、 有语法检查功能
2、 方便
1.3.2 检查定时任务是否运行
定时任务服务 crond
方法1 [root@zeq ~]# /etc/init.d/crond status crond (pid 1572) is running... 方法2 [root@zeq ~]# ps -ef |grep crond root 1572 1 0 Aug07 ? 00:00:00 crond root 27470 26990 0 17:30 pts/2 00:00:00 grep --color crond
1.3.3 查看crond是否开机自启动
[root@zeq ~]# chkconfig |grep crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1.4 定时任务的相关目录
/etc/spool/cron 定时任务的配置文件 /var/log/cron 定时任务的日志文件 /etc/cron.deny 定时任务的黑名单
1.5 定时任务基本格式
分时日月周
注意:周几和日期不能同时使用 如:2020年2月28星期六
例:
每天的上午8点30分,来学校上车(go to school)
30 08 * * * go to school
每天晚上12点准时,回家自己开车(go to bed)
00 0 * * * go to bed
1.6 定时任务中常用符号
* 每
*/n 每隔n久
- 几点到几点
, 分割
1.7 定时任务测试
1、命令 [root@zeq ~]# echo zeq >/tmp/name.log [root@zeq ~]# cat /tmp/name.log zeq 2、书写定时任务 [root@zeq ~]# crontab -e #print name zhangenqing at 2018.xx.xx * * * * * echo zeq >> /tmp/name.log 查看定时任务 [root@zeq ~]# crontab -l #print name zhangenqing at 2018.xx.xx * * * * * echo zeq >> /tmp/name.log 3、查看定时任务日志 [root@zeq ~]# tail -3 /var/log/cron Aug 8 19:36:23 oldboy50 crontab[27563]: (root) END EDIT (root) Aug 8 19:37:01 oldboy50 crond[1572]: (root) RELOAD (/var/spool/cron/root) Aug 8 19:37:01 oldboy50 CROND[27572]: (root) CMD (echo zeq >> /tmp/name.log) 4、检查文件内容 [root@zeq ~]# cat /tmp/name.log zeq zeq
1.8 定时任务书写流程
1.8.1 第一个里程碑
命令行测试,把你的名字显示到文件中
1.8.2 第二个里程碑
把命令放到脚本中
1.8.3 第三个里程碑
测试脚本是否可以使用
1.8.4 第四个里程碑
书写定时任务
- 每分钟执行
- 改为需要的时间
1.8.5 第五个里程碑
检查结果
- 查看定时任务的日志
- 查看命令是否执行成功
第2章 定时任务练习
2.1 每天晚上12点打包备份/etc目录到/tmp下面 脚本
2.1.1 命令
[root@zeq ~]# tar zcf /tmp/etc-`date +%F_%T`.tar.gz /etc/ tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets [root@zeq ~]# ll /tmp/ total 9528 -rw-r--r-- 1 root root 9752749 Aug 9 15:26 etc-2018-08-09_15:26:26.tar.gz
2.1.2 书写脚本
[root@zeq ~]# cat /server/scripts/bak-etc.sh tar zcf /tmp/etc-`date +%F_%T`.tar.gz /etc/
测试脚本 [root@zeq ~]# sh /server/scripts/bak-etc.sh tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets [root@zeq ~]# ll /tmp/ total 19056 -rw-r--r-- 1 root root 9752749 Aug 9 15:26 etc-2018-08-09_15:26:26.tar.gz -rw-r--r-- 1 root root 9752749 Aug 9 15:29 etc-2018-08-09_15:29:23.tar.gz
2.1.3 书写定时任务
[root@zeq ~]# crontab -e 00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1 查看定时任务内容 [root@zeq ~]# crontab -l 00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1 [root@zeq ~]# ll /tmp/ total 28584 -rw-r--r-- 1 root root 9752749 Aug 9 15:26 etc-2018-08-09_15:26:26.tar.gz -rw-r--r-- 1 root root 9752749 Aug 9 15:29 etc-2018-08-09_15:29:23.tar.gz -rw-r--r-- 1 root root 9752749 Aug 9 15:41 etc-2018-08-09_15:41:42.tar.gz
2.1.4 根据要求的时间修改定时任务时间
[root@zeq ~]# crontab -l 00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1
2.1.5 定时任务中-命令或脚本结果(正确及错误)定向
到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/zeq.txt 2>&1
2.2 企业案列
如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。
2.2.1 定时任务不断给你发送邮件
You have new mail in /var/spool/mail/root
2.2.2 邮件软件关闭 , 定时任务不断给你发送邮件 存放在邮件的临时目录 等待发送
inode用光了 定时任务书写不规范导致的
2.3 每两个小时打包备份 /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig 备份到/backup目录
书写脚本 [root@zeq ~]# cat /server/scripts/bak-conf.sh tar zchf /backup/conf-`date +%F_%T`.tar.gz /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig/ 书写定时任务 [root@zeq ~]# crontab -l 00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1 00 */2 * * * sh /server/scripts/bak-conf.sh >/dev/null 2>&1
2.4 每天晚上12点打包备份/etc/目录 备份到 /backup下面 备份到/backup/10.0.0.200
2.4.1 查看ip
[root@zeq ~]# hostname -I 10.0.0.201
2.4.2 修改变量ip
[root@zeq ~]# ip=`hostname -I|awk '{print $1}'`
2.4.3 查看变量
[root@zeq ~]# echo $ip 10.0.0.201
2.4.4 测试命令
创建ip目录 [root@zeq ~]# mkdir -p /backup/$ip [root@zeq ~]# ll /backup/ total 136 drwxr-xr-x 2 root root 4096 Aug 9 16:20 10.0.0.201 -rw-r--r-- 1 root root 61485 Aug 9 15:56 conf-2018-08-09_15:56:52.tar.gz -rw-r--r-- 1 root root 61485 Aug 9 16:00 conf-2018-08-09_16:00:01.tar.gz -rw-r--r--. 1 root root 609 Jul 12 07:49 conf.tar.gz 测试命令 [root@zeq ~]# tar zcf /backup/$ip/etc-`date +%F_%T`.tar.gz /etc/ tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets [root@zeq ~]# ll /backup/10.0.0.201/ total 9528 -rw-r--r-- 1 root root 9752749 Aug 9 16:21 etc-2018-08-09_16:21:47.tar.gz
2.4.5 书写脚本
[root@zeq ~]# cat /server/scripts/bak-etc-adv.sh
ip=`hostname -I|awk '{print $1}'`
mkdir -p /backup/$ip
tar zcf /backup/$ip/etc-`date +%F_%T`.tar.gz /etc/
2.4.6 书写定时任务
[root@zeq ~]# crontab -l 00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1 00 */2 * * * sh /server/scripts/bak-conf.sh >/dev/null 2>&1 00 00 * * * sh /server/scripts/bak-etc-adv.sh >/dev/null 2>&1
2.5 sh -x 显示脚本执行过程
以+开头的行 表示执行过程 不是以+开头的行 显示/输出 [root@zeq ~]# sh -x /server/scripts/bak-etc.sh ++ date +%F_%T + tar zcf /tmp/etc-2018-08-09_16:29:34.tar.gz /etc/ tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets
linux定时任务及练习的更多相关文章
- linux定时任务crond export变量问题
linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...
- Linux 定时任务
200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
- 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...
- 工作中linux定时任务的设置及相关配置
工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次 0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- (转载)Linux定时任务cron配置
(转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
- Linux实战教学笔记11:linux定时任务
第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...
- linux定时任务访问url
这次linux定时任务设置成功,也算是自己学习linux中一个小小的里程碑.:) 撒花撒花--- 以下操作均是在ubuntu 下操作的,亲测有效,其他的linux系统还望亲们自己去查.鞠躬感谢! 1 ...
随机推荐
- Linux安装phpMyAdmin配置管理多个数据库
1.下载 :phpMyAdmin 2.解压安装包: tar -zxvf phpMyAdmin-4.6.5.2-all-languages.tar.gz 3.替换目录 : mv phpMyAdmin-4 ...
- MySQL如何查询当月数据
自己写了一个比较简单效率又高的方法,分享给大家: WHERE addTime BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01') AND NOW() 方法就是过滤 本月1日到当 ...
- jeecg3.8在子表页面中使用WebUploader组件
bcAbout-update.jsp改动如下: 因为默认子表的上传组件不能回显,所以改造成WebUploader 1.在更新页面注销掉生成代码 <%--<script type=" ...
- 网站架构:消息队列 Java后端架构
2017-01-13 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间 ...
- P1576 最小花费
题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元 ...
- (七)JavaScript之[调试]与[前端表单验证]
12].调试为什么要去调试?1.在编写JavaScript时,如果没有调试工具将是一件很痛苦的事情.2.没有调试工具是很难去编写JavaScript程序的.3.编写的代码可能包含语法错误.逻辑错误,如 ...
- LotusScript_导出数据库路径和名称
对服务器有些数据库需要建立复本,新建拷贝,修改权限(ACL),或是修改数据库标识符(ID)需要找到这些数据库.这个方法是导出指定服务器上所有数据库的路径,数据库名,标识符等信息,导出后对Excel表格 ...
- vos优化客户线路数量
问题: 客户A打电话过来说之前给开的300线路不够用了,今天好多电话呼不出去了,线路太挤了! 麻烦增加线路,如何操作? 方法: 登陆VOS——在线对接——(客户A的对接网关ID)——双击 打开网关管理 ...
- Codeforces - Educational Codeforces Round 5 - E. Sum of Remainder
题目链接:http://codeforces.com/contest/616/problem/E 题目大意:给定整数n,m(1≤n,m≤1013), 求(n mod 1 + n mod 2 + ... ...
- MD5的32位加密方法
/// <summary> /// MD532位加密方式 /// </summary> /// <param name="str">用户原始密码 ...