Linux系统定时任务
一、回顾
sgid 权限知识:
让不同的人创建文件属于相同的用户组,从而可以拥有互相共享的权利
粘滞位知识:
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
编写定时任务的语法:
共六列:
第一列:分钟 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
重点:要领
一:生产环境下的定时Cron书写要领
1.未定时任务规则加必要的注释
2.所有的定时任务尽量都以脚本的形式执行
3.在执行的shell脚本前加上/bin/sh
4.定时任务中命令或脚本的结尾加>/dev/null 2>&1
5.在指定用户下执行相关定时任务
6.生产任务计划程序中不要随意打印输出信息,有输出的想法去掉
7.定时任务执行的脚本要存放到规范路径下
8.配置定时任务要规范操作过程,减少出错
9.定时任务脚本中程序命令及路径尽量用全路径
10.时间变了%号要用反斜线转移(只有定时任务里是命令时需要)
11.若脚本中调用了系统环境变量,要重新定义
12.出错或无法执行,就价差/car/log/cron 日志