计划任务服务程序

计划任务分为以下两种情况:
1.系统级别的定时任务:
清理系统缓存
临时文件清理
系统信息采集
日志文件切割

2.用户级别的定时任务:
定时同步互联网时间
定时备份系统配置文件
定时备份数据库文件

crond配置文件详解:

文件               说明
/etc/crontab //crontab配置文件
/etc/cron.deny //改文件中所列用户不允许使用crontab命令
/var/spool/cron/* //所有用户定时文件都存放此目录,文件以用户名命名
/var/log/cron*/ //定时任务执行后的日志文件,可用来回溯

计划任务/定时任务:
在指定的时间,做指定的事
时间:分时日月周
       格式:
              * 任意
              - 连续的
              , 不连续的
              / 间隔 */S
       事:命令
       注意事项:
              绝对路径                   crond和bash的命令PATH不一样
              特殊符号                   %要用转义符
              输出重定向               如果命令有输出且没输出重定向,那么这个输出信息会通过邮件通知root,这些输出信息
              命令的执行顺序        用脚本来进行排序

1.调整任务每分钟执行,检测是否正常,有些任务不要频繁执行
2.调整系统时间然后在检测任务,生产不建议直接使用此方式
3.执行脚本,将脚本执行输出写入指定日志文件,观察日志内容是否正常
4.注意一些任务命令带来的问题echo "old" >>/tmp/test.log &>/dev/null
5.命令使用绝对路径,防止无法找到命令导致定时任务执行故障
6.查看/var/log/cron日志进行调试
建议:将需要定期执行的任务写入脚本中,建立/server/scripts目录统一存放脚本,
脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常,然后将脚本加入计划任务测试,
测试后无问题将脚本输出写入对应的日志文件中即可。

1.手动执行保留执行命令的正确结果
2.编写脚本
      1)脚本需要统一路径/soft/scripts
      2)脚本开头建议填写注释信息,包括执行时间、周期、任务
      3)脚本内容复制执行成功的命令中(减少每个环节出错几率)
      4)脚本内容尽可能优化,使用一些变量或使用简单的判断语句
      5)脚本执行的输出信息不要随意打印,可以重定向至其他位置保留或丢人黑洞
3.执行脚本
      1)bash执行,防止脚本没有增加执行权限/usr/bin/bash
      2)执行命令以及脚本成功后并复制该命令
4.编写计划任务
      1)加上必要的注释信息
      2)设定计划任务执行的周期
      3)粘贴执行脚本的命令(不要手敲)
5.调试计划任务
      1)增加任务频率测试、调整系统时间测试(不能用于生产)
      2)检测环境变量问题,检测crond服务产生日志进行排查

crond配置文件详解

[root@xiaoming ~]# vim /etc/crontab 

SHELL=/bin/bash                        #通过bash解释命令
PATH=/sbin:/bin:/usr/sbin:/usr/bin #默认命令路径
MAILTO=root #邮件信息发给root # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

注意:
1.我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。
2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略
3.几乎每个服务器都会用到crond服务

计划任务:
一次性计划任务:
at命令:
at 时间 //在指定时间执行任务
at -l //查看已设置好但还未执行的一次性计划任务
at -d 任务序号 //删除计划任务
长期性计划任务:
crontab命令
crontab [options]
参数:
-e //创建、编辑计划任务
-l //查看当前的计划任务
-r //删除某条计划任务
//指定时间开启httpd
[root@xiaoming ~]# at :
at > systemctl restart httpd
at > 此处请同时按下 Ctrl + D 组合键来结束编写计划任务
job at Thu Jan :: //查看未执行的一次性计划任务
[root@xiaoming sbin]# at -l
Thu Jan :: a root //删除计划任务
[root@xiaoming sbin]# atrm
[root@xiaoming sbin]# at -l

练习:

.每隔5分钟同步一次系统时间
yum install -y ntpdate
crontab -e
#sync time
*/ * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null .备份/etc/hosts文件,要求每天保留一个副本,每天晚上0点执行
解题思路:
.先在命令行测试
cp /etc/hosts /tmp/hosts_$(date +\%F).bak
.编辑crontab
#backup host
* * * /usr/bin/cp /etc/hosts /tmp/hosts_$(date +\%F).bak .备份/etc/hosts,/etc/rc.local,/var/spool/cron/root文件,要求每天保留一个副本,每天晚上3点15分执行
.先在命令行测试
tar czf /tmp/bak_$(date +\%F).tar.gz /etc/hosts /etc/rc.local /var/spool/cron/root
.编辑crontab
#backup /etc/hosts /etc/rc.local /var/spool/cron/root
* * * /usr/bin/tar czf /tmp/bak_$(date +\%F).tar.gz /etc/hosts /etc/rc.local /var/spool/cron/root

思考题:

通过crontab实现一个时间节点操作多条指令,会出现什么问题?

.先测试命令是否能执行
.写脚本
[root@xiaoming ~]# cat mem.sh
/usr/bin/date +\%F >> /tmp/mem.log
/usr/bin/free -m >> /tmp/mem.log
.测试脚本是否能执行
.将脚本执行的命令写入crontab
* * * * * /bin/sh /root/test.sh >>/tmp/test.txt
* * * * * /bin/sh /root/mem.sh >>/tmp/mem.log

计划任务课后习题

.解释下列每行时间含义
a. , * ,,,, * /bin/sh backup.sh
//1月到5月的每天下午1点到晚上8点准时执行backup.sh脚本
b. , , * * /bin/sh backup.sh
//每月的一号、五号的下午1点到晚上8准时执行backup.sh脚本
c. * , * * ,,,, /bin/sh backup.sh
//1月到5月的每天下午1点到晚上8点的每一分钟执行backup.sh脚本
d. , * * ,,,, /bin/sh backup.sh
//每周一到周五的下午1点到晚上8点准时执行backup.sh脚本 .新建/soft/scripts/httpd.sh文件,并让/soft/scripts/httpd.sh脚本在每天的00:10分执行
mkdir -p /soft/scripts
echo "echo hello" >/soft/scripts/httpd.sh
* * * /bin/sh /soft/scripts/httpd.sh &>/dev/null .新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成backup.tar.gz
* * /usr/bin/tar czf backup.tar.gz /backup/* &>/dev/null 4.书写一个定时任务,每天0点0分把/var/log/nginx下大于7天文件转移到/backup/2019_xx_xx的目录中
vim /server/scripts/bak.sh
dirname=$(date +%F)
mkdir -p /backup/$dirname
/usr/bin/find /var/log/nginx -mtime +7 -type f -exec mv {} /backup/$dirname \;
0 0 * * * /bin/sh /server/scripts/bak.sh &>/dev/null 5.系统脚本/soft/scripts/which.sh,如何定时每隔7分钟执行一次?
*/ * * * /bin/sh /soft/scripts/bak.sh &>/dev/null
.如果不小心删除/var/spool/cron/root文件,该如何恢复。
提示:通过日志文件
[root@xiaoming ~]# tail /var/log/cron
Jan :: xiaoming run-parts(/etc/cron.hourly)[]: starting 0anacron
Jan :: xiaoming anacron[]: Anacron started on --
Jan :: xiaoming anacron[]: Normal exit ( jobs run)
Jan :: xiaoming run-parts(/etc/cron.hourly)[]: finished 0anacron
Jan :: xiaoming crontab[]: (root) BEGIN EDIT (root)
Jan :: xiaoming crontab[]: (root) REPLACE (root)
Jan :: xiaoming crontab[]: (root) END EDIT (root)
Jan :: xiaoming crond[]: (root) RELOAD (/var/spool/cron/root)
Jan :: xiaoming CROND[]: (root) CMD (/bin/sh /server/scripts/bak.sh )
Jan :: xiaoming CROND[]: (root) CMD (/bin/sh /server/scripts/bak.sh ) [root@xiaoming ~]# crontab -e
* * * /bin/sh /server/scripts/bak.sh
~
//从cron日志里采集root用户的任务指令
[root@xiaoming ~]# grep 'CMD' /var/log/cron | grep 'root' | awk -F"(" '{print $3}' | awk -F")" '{print $1}' | sort | uniq -c | awk '{print $2,$3,$4}' | grep 'bak' | head -
/bin/sh /server/scripts/bak.sh
//从cron日志里采集root用户的时间,以分时日月周格式输出
[root@xiaoming ~]# grep 'CMD' /var/log/cron | grep 'root' | awk '{print $3}' | tail - | awk -F":" '{print $2,$1,"*","*","*"}'
* * *
[root@xiaoming ~]# ls /etc/cron.*
/etc/cron.deny /etc/cron.d:
0hourly /etc/cron.daily:
logrotate man-db.cron mlocate /etc/cron.hourly:
0anacron /etc/cron.monthly: /etc/cron.weekly:

计划任务crond的更多相关文章

  1. 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装

    Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...

  2. linux基础-第二十单元_计划任务crond服务

    第二十单元 计划任务crond服务 什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiW ...

  3. Python--nfs服务+计划任务crond服务+shell介绍

    nfs服务 NFS 是Network File System的缩写,即网络文件系统. 功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的 ...

  4. 6.2 计划任务crond

    创建.编辑计划任务的命令为crontab -e,查看当前计划任务的命令为crontab -l,删除某条计划任务的命令为crontab -r. 参数 作用 -e 编辑计划任务 -u 指定用户名称 -l ...

  5. 第二十单元 计划任务crond服务

    什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiWiFi-R3-srv ~]# rpm ...

  6. 计划任务crond服务

    什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiWiFi-R3-srv ~]# rpm ...

  7. linux基础命令学习(四)计划任务

    一.计划任务 crond服务简介 linux任务调度的工作主要分为以下两类: *系统执行的工作:系统周期性所要执行的工作,如备份系统数据.清理缓存 *个人执行的工作:某个用户定期要做的工作,例如每隔1 ...

  8. ▲教你如何轻易的做linux计划任务▲——小菜一碟

    一次性计划任务的安排: at :安排作业在某一时刻执行一次(一般都是用它) batch:安排作业在系统负载不重时执行一次 第一步: #service atd start  开启一次性计划任务   at ...

  9. 超哥笔记 -- 用户管理、权限设置、进程管理、中文配置、计划任务和yum源配置(5)

    一 网卡配置 ifconfig 查询.设置网卡和ip等参数 ifup,ifdown    脚本命令,更简单的方式启动关闭网络 ip 符合指令,直接修改上述功能 网络配置文件: /etc/sysconf ...

随机推荐

  1. 在GitHub上上传自己的项目

    1.注册一个自己的GitHub账号 2.登录,开始创建一个新的项目,填写项目名称,描述 创建完成之后,跳转到下面的页面,下面红框中的网址要记住,在后面上传代码的时候需要使用 3.下载最新版本的Git  ...

  2. getComputedStyle() 和 getPropertyValue()

    // getComputedStyle() 方法用于获取指定元素的 CSS 样式. // 获取的样式是元素在浏览器中最终渲染效果的样式. // getPropertyValue() 方法返回指定的 C ...

  3. Python插件安装

    Python插件安装 1. 找到Python的安装目录. 打开CMD控制台输入 python 打开环境变量,找到Python安装路径. 进入 安装目录 下的 Scripts 目录 . 查看已安装的插件 ...

  4. ZOJ 1276 DP

    给出一系列的1x2的矩阵,要你求出矩阵以什么样的次序相乘才使得相乘次数最少,.(不用排序,只要决定该矩阵是和前面相乘比较好,还是后面). 今天仔细想了一下,跟之前做的DP题目做了下对比,你比如说猴子堆 ...

  5. leetcode--200--python(深度广度优先遍历实现代码)

    点滴积累,厚积薄发,做好每一天,向时间要效率,向生命要质量. 一.深度优先搜索和广度优先搜索DFS(Depth-First-Search),是盲目搜索算法的一种.常常用在树的遍历及图的处理上.假设当前 ...

  6. 【转帖】使用了 Service Mesh 后我还需要 API 网关吗?

    使用了 Service Mesh 后我还需要 API 网关吗? https://www.kubernetes.org.cn/6762.html api gateway和istio 是不一样的 追求不一 ...

  7. Java程序员想年后跳槽,对JVM没有深入的理解,我劝你还是别跳了

    前言 Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点.所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机. 深入浅出Java虚拟机 对于刚刚接触 J ...

  8. luogu P3835 【模板】可持久化平衡树

    #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> usin ...

  9. dp--背包--开心的金明

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今天 ...

  10. 17.3.12---sys模块

    1---sys是system的缩写,用来获取操作系统和编译器的一些配置,设置和操作,如判断文件和文件夹是否存在,创建文件夹,获取系统版本之类的操作 import sys  #导入sys模块 2--一些 ...