Day17课堂笔记

                          Linux系统定时任务   

一、回顾


Day17课堂笔记_第1张图片

sgid 权限知识:


Day17课堂笔记_第2张图片

让不同的人创建文件属于相同的用户组,从而可以拥有互相共享的权利

粘滞位知识:


Day17课堂笔记_第3张图片


Day17课堂笔记_第4张图片

3W1H 框架

二、Linux系统定时任务

1.什么是定时任务?

周期性的执行任务计划的软件,Linux里定时任务的常用软件crond

2.使用定时任务软件,可以每天,每小时按你的需求重复的执行一项工作

例如:备份  都是0点以后,2点爬起来备份,4点以后睡觉。

需要写一个程序实现自动备份,然后让定时任务软件帮你执行(类似闹钟)

3.怎么使用?

(1)用户定时任务计划:

在Linux系统中,cron是定时任务软件名

crond是服务进程名,真正实现定时任务

crontab命令是用来设置定时任务规则的配置命令:

内容存放哪里了?定时任务内容存放的位置 /var/spool/cron/

参数: -l 列表 查看定时任务内容

-e  编辑定时任务内容

-u   查看特定用户下定时任务

crontab -l  ==cat /var/spool/cron/root

crontab -e  == vim /var/spool/cron/root

要想配置定时任务,首先启动crond

编写定时任务的语法:


Day17课堂笔记_第5张图片

共六列:

第一列:分钟  minute  (0---59)

第二列:时     hour    (0---23)

第三列: 日  day of month (1---31)

第四列: month  (1---12)

第五列:day of week (0---6)(Sunday=0 or 7)

第六列:要执行的任务命令 或程序

特殊符号:

*   表示  每 

-  连续分隔符  1-10  连续

, 列举 1,2,3,4,8 

/n   n是任意数字

n 代表数字,即”每隔n单位时间“,例如:每10分钟执行一次任务也可以写出*/10 ****cmd

30 09 * * 0

30 08 ****

(2)系统定时任务计划:

1.不用管理员干预,系统自动执行。

2.也可以利用系统任务为管理员服务

[root@lixin ~]# ll /var/log/messages*

 -rw-------. 1 root root 461674 Mar 22 23:18 /var/log/messages

 -rw-------. 1 root root 1620726 Mar 11 16:35 /var/log/messages-20190311

 -rw-------. 1 root root 28894 Mar 15 10:38 /var/log/messages-20190315

 -rw-------. 1 root root 148373 Mar 20 03:28 /var/log/messages-20190320

 -rw-------. 1 root root 1043926 Sep 9 2020 /var/log/messages-20200909


按天切割日志,就可以用logrotate

范例13-2:让服务器时间每5分钟和互联网时间做一次同步。 安装时间服务软件:yum install ntpdate -y

更新互联网时间 /usr/sbin/ntpdate ntp1.aliyun.com

范例13-3:每天晚上0点,把站点目录/var/www/html下的内容打包备份到/data目录下,并且要求每次生成不同的备份包名。

&>/dev/null  黑洞

范例13-3:每天晚上0点,把站点目录/var/www/html下的内容打包备份到/data目录下,并且要求每次生成不同的备份包名。 至少分三步:

 1.命令行稿成功 准备工作:

 [root@oldboyedu ~]# mkdir /var/www/html /data -p

具体命令:

[root@oldboyedu ~]# tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/

 tar: Removing leading `/' from member names /var/www/html/

 [root@oldboyedu ~]# ll /data

total 4

-rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz

 2、编写定时任务

 [root@oldboyedu ~]# crontab -l 00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/ 错了,不执行。。。。 看报错日志。。。错误日志 定时任务没有执行,

出错了日志在哪里? 出错日志/var/log/cron

 Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_$(date +)

 定时任务对%的要求,百分号要转义。\%

 正确答案:

 [root@oldboyedu ~]# crontab -l 00 00 * * * tar zcvf /data/html_$(date +\%F).tar.gz /var/www/html/ 优秀的答案(企业里):

 1.命令行执行 cd /var/www tar zcf /data/html_$(date +%F).tar.gz ./html

2.尽量用脚本文件实现 #mkdir /server/scripts -p #存放脚本的文件

 cd /server/scripts #

cat bak.sh

 cd /var/www tar zcf /data/html_$(date +%F).tar.gz ./html

命令行执行: /bin/sh /server/scripts/bak.sh

 3、编辑定时任务 #bak html dir by oldboy at 2020108 00 00 * * *

 /bin/sh /server/scripts/bak.sh &>/dev/null

 [root@oldboyedu /server/scripts]# crontab -l|tail -2

 #bak html dir by oldboy at 2020108 00 00 * * *

 /bin/sh /server/scripts/bak.sh &>/dev/null

4、检查正式结果

 [root@oldboyedu /server/scripts]# ls -l /data

Day17课堂笔记_第6张图片

重点:要领

一:生产环境下的定时Cron书写要领

1.未定时任务规则加必要的注释

2.所有的定时任务尽量都以脚本的形式执行

3.在执行的shell脚本前加上/bin/sh

4.定时任务中命令或脚本的结尾加>/dev/null 2>&1

5.在指定用户下执行相关定时任务

6.生产任务计划程序中不要随意打印输出信息,有输出的想法去掉

7.定时任务执行的脚本要存放到规范路径下

8.配置定时任务要规范操作过程,减少出错

9.定时任务脚本中程序命令及路径尽量用全路径

10.时间变了%号要用反斜线转移(只有定时任务里是命令时需要)

11.若脚本中调用了系统环境变量,要重新定义

12.出错或无法执行,就价差/car/log/cron 日志

你可能感兴趣的:(Day17课堂笔记)