计划任务服务程序

计划任务分为以下两种情况:
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. POJ - 1127 Jack Straws(几何)

    题意:桌子上放着n根木棍,已知木棍两端的坐标.给定几对木棍,判断每对木棍是否相连.当两根木棍之间有公共点或可以通过相连的木棍间接的连在一起,则认为是相连的. 分析: 1.若线段i与j平行,且有部分重合 ...

  2. sort()函数使用详解

    使用时需要导入头文件<algorithm> #include<algorithm> 语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序 ...

  3. 【2017西安邀请赛:A】XOR(线段树+线性基)

    前言:虽然已经有很多题解了,但是还是想按自己的理解写一篇. 思路:首先分析题目 一.区间操作 —— 线段树 二.异或操作 —— 线性基 这个两个不难想,关键是下一步的技巧 “或”运算 就是两个数的二进 ...

  4. py02_04:三元运算法

    a if a > b else c     #  a>b 成立,则为真,如果a>b为假,则返回c

  5. css伪元素::before与::after使用基础示例

    1.指定文本前后添加内容 <div class="box">test</div> .box::before{ content: 'before'; marg ...

  6. Java--HashMap排序

    package connection; import java.util.Collections; import java.util.Comparator; import java.util.Hash ...

  7. 洛谷 P1341 无序字母对(欧拉回路)

    题目传送门 解题思路: 一道欧拉回路的模板题,详细定理见大佬博客,任意门 AC代码: #include<cstdio> #include<iostream> using nam ...

  8. 36. docker swarm docker secret 的使用和管理

    1.secret management 的作用 用来存储 其他人不想看到 的数据 2.secret management 存在 swarm manager 节点 raft database 里. se ...

  9. MySQL之完整建表语句及数据类型

    1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] ) 必须的:字段名 数据类型 表名 可选的:长度 约束条件 ...

  10. shiro的小白学习

    1. shiro是啥就不用说了吧 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理 SecurityManager 是shiro的核心.它不同于java. ...