Day 17
作者:翟玉龙
归档:课堂笔记
2019/3/22
快捷键:
Ctrl + 1 标题1
Ctrl + 2 标题2
Ctrl + 3 标题3
Ctrl + 4 实例
Ctrl + 5 程序代码
Ctrl + 6 正文
格式说明:
蓝色字体:注释
黄色背景:重要
绿色背景:注意
老男孩教育教学核心思想6重:重目标、重思路、重方法、重实践、重习惯、重总结
联系方式:
网站运维QQ交流群:
Linux 385168604架构师390642196
Python 29215534大数据421358633
官方网站:
目录
[if !supportLists]第1章[endif]特殊权限位
[if !supportLists]1.1 [endif]Suid
针对的是二进制命令
Suid的特点:
1 suid的功能是针对二进制命令或程序的 。不能用在shell等类似脚本的文件
2 用户灬属主对应的前三位权限的x位上,如果有s(S)就表示具有suid权限
3 Suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序的时候,拥有和root管理员一样的身份和权限(默认)
4 二进制命令程序需要有可执行权限x配合才行
5 Suid对应的身份和权限仅在程序命令执行过程中生效
6 Suid试一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁,企业里用户授权可以使用sudo等代替sgid功能
7 在进行安全优化时,系统中默认设置了suid权限的命令要取消掉
[if !vml]
[endif]
[if !supportLists]1.2[endif]sgid
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限[if !vml]
[endif]
[if !supportLists]第2章 [endif]Linux系统定时任务
[if !supportLists]1. [endif]什么是定时任务?
周期性的执行任务计划的软件,Linux定时任务的常用软件有crond
[if !supportLists]2. [endif]使用定时任务软件,可以每天,每小时,按你的需求重复的执行一项工作
EG:备份,都是0点以后,2点爬起来备份,四点以后睡觉
所以,我们需要一个程序实现自动备份,然后让定时任务软件帮你执行
[if !supportLists]3. [endif]怎么用
[if !supportLists](1) [endif]用户定时任务计划
[if !supportLists](2) [endif]系统定时任务计划
[if !supportLists]1. [endif]不用管理员干预,系统自动执行
[if !supportLists]2. [endif]也可以利用系统任务为管理员服务
Cron是定时任务的软件名
Crond是服务进程名
Crontab命令是用来设置定时任务规则的配置命令
要想配置定时任务,首先启动crond服务
systemctl start crond.service 打开服务
systemctl stop crond.service 关闭服务
systemctl status crond.service 查看服务运行状态
开启自启动:
systemctl disable crond.service
systemctl enable crond.service[if !vml]
[endif]
Crontab命令是用来设置定时任务
定时任务内容存放在/var/spool/cron/root
以当前用户名作为文件名
-l list列表,查看已设置的定时任务
-e edit编辑定时任务
-u user查看特定用户下的定时任务
Crontab -l ==cat /var/spool/cron/root
Crontab -e ==vim /var/spool/cron/root
编写定时任务的语法
# Example of jobdefinition:
#.---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) ORjan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * (command to be executed)
共六列:
第一列: 分钟 minute (0-59)
第二列: 时 hour (0-23)
第三列: 日 day of month (1-31)
第四列: 月 month (1-12)
第五列: 周 day of week(0-6) (Sunday = 0 or 7)OR sun mon tue wed thu fri sat
第六列: 要执行的任务命令或程序
特殊符号:
*表示 每的意思 00 23 * * * cmd
-表示连续区间1-10 00 1-10 * * * cmd
,列举1,2,3,4,8 00 1,2,3,4,5 * * *cdm
/n n是数字即每个n单位时间
例如每十分钟就是*/10 ** * * cmd
[if !supportLists]00 [endif]*/1 * * * 每小时执行
**/1 * * *每分钟执行
实践:
1
、每分钟追加一次oldboy字符串到/tmp/oldboy.log里。
解答:大象放冰箱分三步
a.
命令行执行成功。
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
oldboy
b.
配置定时任务crontab -e 编辑配置
[root@oldboyedu ~]# crontab -l
#####
* * * * * echo "oldboy">>/tmp/oldboy.log
c.
检查
[root@oldboyedu ~]# tail -f /tmp/oldboy.log
oldboy
oldboy
oldboy
老男孩思想:
1
)先输入* * * * *
2
)先命令行操作成功。
3
)拷贝命令到定时任务编辑里。
范例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
[if !supportLists]第1章 [endif]生产环境下的定时Cron书写要领
13.5.1 要领1:为定时任务规则加必要的注释
13.5.2 要领2:所有的定时任务尽量都以脚本的形式执行
13.5.3 要领3:在执行的Shell脚本前加上/bin/sh
13.5.4 要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
13.5.5 要领5:在指定用户下执行相关定时任务
13.5.6 要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
13.5.7 要领7:定时任务执行的脚本要存放到规范路径下
13.5.8 要领8:配置定时任务要规范操作过程,减少出错
13.5.9 要领9:定时任务脚本中程序命令及路径尽量用全路径
13.5.10 要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
13.5.11 要领11:若脚本中调用了系统环境变量,要重新定义
13.5.11 要领12:出错或无法执行,就检查/var/log/cron日志