2026年4月1
知识点回顾
文件权限
1.rwx含义
r 只读
w 可写
x 可执行
2.查看拥有的权限
ll
rwxr-xr-x 1 root root
九位权限为三位为一组
第一组是主人的权限 可读可写可执行
第二组是属组的权限 可读可执行
第三组是陌生人的权限 可读可执行
root 属主
root 属组
3.rwx对应数字
r 4
w 2
x 1
rwxr-xr-x
755
rwxr--r--
744
rw-r--r--
644
rw-------
600
4.权限修改
字母法
chmod ugo+rwx 文件
u表示主人
g表示属组
o表示陌生人
chmod u=x
chmod g=x
chmod o=x
修改所有人
chmod a=x #a=all所有
chmod ugo[+或-或=] #所有
chmod +x 也是修改所有但只对x生效
数字法
chmod 421 文件对应权限 r---w---x
chmod 777 文件 对应权限rwxrwxrwx
chmod 750 文件 对应权限 rwxr-x---
5.rwx对于文件的含义
单个r 只读cat tail less
单个w 啥都做不了
单个x 啥都做不了
rw 对于文件而是是最高权限
rwx 对于脚本文件时最高权限
6.rwx对于目录的含义
单个r 啥都做不了
单个w 啥都做不了
单个x 可以cd进入目录
rwx 对于目录是最高权限
r-x 对于目录是最小最基本权限
7.umask
作用设置目录文件默认权限
默认022
文件最高666
666
-022
644
目录最高777
777
-022
755
修改
umask 数字 示例修改为032 umask 032
666
-032
634
+010
644
文件奇数为加一,目录不变
8.隐藏权限
i #作用锁死文件root也无法对文件操作
a #只可echo写入
查看隐藏权限
lsattr 文件
修改隐藏权限
chattr +i 文件
chattr +a 文件
取消隐藏权限
chattr -i 文件
chattr -a 文件
9.特殊权限
SUID 作用运行命令拥有属主权限
SGID 作用运行命令拥有属组权限
粘滞位 作用共享目录 都能创建操作这个目录 但只能管理自己的文件
SUID权限创建
chmod u+s 文件或chmod 4644 文件
SGID创建 chmod g+s 文件 chmod 2644 文件
粘滞位创建
chmod o+t 文件 chmod 1755 目录
01.定时任务
1.定时任务作用
1.什么时间做什么
2.数据库备份 将多台服务器上的数据通过网络拷贝到一台备份服务器 业务低谷期(监控)
3.备份需要先打包压缩再进行拷贝(减少磁盘IO)
4.时间同步
5.数据统计分析工作
6.辅助程序正常运行的脚本
开发写的程序经常崩溃,跑着跑着就挂了,跑着跑着内存满了,跑着跑着磁盘干满了...
7.日志切割 程序日志过大 按天切割 web-20081010.log web-20081011.log
...
2.定时任务配置
系统的定时任务配置文件:
cat /etc/crontab
日志文件
cat /var/log/cron
语法结构:
* * * * * root 可执行命令
第一颗星: 分钟 0 - 59
第二可星: 小时 0 - 23
第三颗星: 日 1 - 31
第四颗星: 月 1 - 12
第五可星: 周 0 - 6 0或7表示星期天
* #表示每的意思
/ #表示间隔的意思
*/5 表示每隔5分钟执行一次 #从整点开始计算 比如1.03-->执行的时候1.05
5 * 表示每小时的第5分钟执行一次
- #表示区间范围
, #表示时间的间隔 00 7,10,12 * * * 表示7点和10点和12点的整点执行
案例1:每分钟输出自己的姓名到name.txt文件中
[root@oldboy ~]# cat /etc/crontab
SHELL=/bin/bash #bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin #PATH变量
MAILTO=root #定时任务输出、报错邮件系统发邮件root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * root echo oldboy >> name.txt #文件没有路径、默认会在家目录下
[root@oldboy ~]# ll name.txt
-rw-r--r-- 1 root root 378 Apr 1 14:24 name.txt
[root@oldboy ~]# cat name.txt
oldboy
oldboy
案例2:每间隔5分钟执行一次时间同步
第一步:修改一个错误的时间
[root@oldboy ~]# date -s 20071010
Wed Oct 10 00:00:00 CST 2007
第二步:写入定时任务
* * * * * root ntpdate ntp1.aliyun.com
第三步:查看是否成功
[root@oldboy ~]# date
Wed Apr 1 14:27:14 CST 2026
第四步:修改成每间隔5分钟进行时间同步
[root@oldboy ~]# cat /etc/crontab
*/5 * * * * root ntpdate ntp1.aliyun.com
案例3:每小时的第15分钟执行一次定时任务 1.15 2.15 3.15
[root@oldboy ~]# cat /etc/crontab
15 * * * * root ntpdate ntp1.aliyun.com
案例4:每天晚上的12点执行一次定时任务(笔试题)
[root@oldboy ~]# grep 'a.txt' /etc/crontab
00 00 * * * root echo aaa >> a.txt
* 12 * * * root echo aaa >> a.txt #错误的时间 表示中无12点的每分钟 12.01 12.02..12.09
00 12 * * * root echo aaa >> a.txt #错误的时间 表示中午12点整执行一次
案例5:每间隔2小时执行一次定时任务
[root@oldboy ~]# grep 'a.txt' /etc/crontab
00 */2 * * * root echo aaa >> a.txt
* */2 * * * #表示每间隔两小时的每分钟
案例6:每天上午6点执行一次定时任务
[root@oldboy ~]# grep 'a.txt' /etc/crontab
00 06 * * * root echo aaa >> a.txt
案例7:明天早上的4点执行一个定时任务然后,就不用了
[root@oldboy ~]# vim /etc/crontab
#找谁干啥
20 */1 * * * * root ntpdate ntp1.aliyun.com
21 */2 * * * * root sed -i '20,$d' /etc/crontab
或者注释
[root@oldboy ~]# vim /etc/crontab
20 */1 * * * * root ntpdate ntp1.aliyun.com
21 */2 * * * * root sed -ri '/aliyun|sed/s/^/#/g' /etc/crontab
案例8:每天上午的7-10点执行一次定时任务
[root@oldboy ~]# vim /etc/crontab
00 7-10 * * * root ntpdate ntp1.aliyun.com
案例9:每天上午的7-10点和下午2-6点执行一次时间同步的定时任务
[root@oldboy ~]# tail -1 /etc/crontab
00 7-10,14-18 * * * root ntpdate ntp1.aliyun.com
案例10:将当前的时间输入到test.log中
[root@oldboy ~]# tail -1 /etc/crontab
* * * * * roto echo `date +\%F-\%H-\%M-\%S` >> test.log
3.用户定时任务
配置用户定时任务使用命令:
crontab -e ---->实际编辑的是/var/spool/cron/root 文件 默认没有文件。
crontab -e 类似visudo 编辑的额是/etc/sudoers
crontab -l #查看用户定时任务
语法结构:
crontab -e
* * * * * 可执行命令或脚本
案例1:输出姓名到name.log中
[root@oldboy ~]# crontab -e
* * * * * echo oldboy >> name.log
[root@oldboy ~]# cat /var/spool/cron/root
* * * * * echo oldboy >> name.log
[root@oldboy ~]# cat name.log
oldboy
案例2:每分钟做一次时间同步
第一步:配置定时任务
[root@oldboy ~]# date -s 20071010
Wed Oct 10 00:00:00 CST 2007
[root@oldboy ~]# crontab -e #配置
* * * * * ntpdate ntp1.aliyun.com
[root@oldboy ~]# crontab -l #查看
* * * * * ntpdate ntp1.aliyun.com
第二步:检查结果、无法进行时间同步
查看日志发现提示
/bin/sh: ntpdate:未找到命令
#理解上面的报错,执行ntpdate系统会自动查找当前配置文件中PATH变量中所有的路径,结果就是没有在PATH路径中找到ntpdate 所以报错
第三步:检查path变量中有哪些路径
[root@oldboy ~]# which ntpdate
/usr/sbin/ntpdate
[root@oldboy ~]# crontab -e
* * * * * ntpdate ntp1.aliyun.com
* * * * * echo $PATH > p.txt #将变量内容写入到p.txt看结果
看结果
[root@oldboy ~]# cat p.txt
/usr/bin:/bin #默认的用户定时任务PATH变量中只有/usr/bin和bin这个两个路径
解决方法:
在用户定时任务配置中定义PATH变量
[root@oldboy ~]# crontab -l
PATH=/usr/local/jdk-17.0.2/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
* * * * * ntpdate ntp1.aliyun.com
* * * * * echo $PATH > p.txt
案例3:将每天凌晨 /etc/hosts /etc/passwd打包成以时间命名的压缩包
[root@oldboy ~]# crontab -l
PATH=/usr/local/jdk-17.0.2/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
* * * * * cd /etc && tar zcvf /opt/`date +\%F-\%H`_web.tar.gz hosts passwd
作业:案例
1.创建以年月日+IP地址+主机名命名的目录 放到/data、目录下
[root@oldboy ~]# mkdir `date +%F`_IP地址_主机名
[root@oldboy ~]# ll
total 8
drwx-w-r-x 2 root root 6 Apr 1 11:48 2026-04-01-11-23XXXXXX
2.然后打包/etc/hosts /etc/passwd 到上面创建好的目录中 etc.tar.gz
3.查找/data下修改时间大于30天前的文件然后删除
4.写入定时任务 每天晚上的12点执行一次
-----------------------------------
1.mkdir `date +%F`_`hostname -I|awk '{print $1}'`_`hostname`
2.cd /etc/&&tar -zcvf /root/`date +%F`_`hostname -I|awk '{print $1}'`_`hostname`/etc.tar.gz /etc/hosts /etc/passwd
3.find /data -type f -mtime +30|xargs rm
4.00 00 * * * root sh aa.sh
定时任务注意事项
1.定时任务配置文件中不识别%需要加\%,也可以将时间的命令写入脚本中,定时任务执行脚本
第一步:写脚本
[root@oldboy ~]# cat test.sh
echo `date +%F-%H-%M-%S` >> test.log
第二步:定时任务执行脚本
[root@oldboy ~]# vim /etc/crontab
* * * * * roto sh /root/test.sh
2.打包进入相对路径 减少不必要的输出 定向到空
[root@oldboy ~]# tar zcvf `date +%F-%H`_web.tar.gz /etc/hosts /etc/passwd &>/dev/null
3.多条命令尽量写入到脚本中,定时任务调用脚本
4.用户定时任务只认识的PATH变量/usr/bin和bin所以我们需要重新定义PATH变量
重点总结:
1.配置定时任务方式两种
vim /etc/crontab
* * * * * root 可执行命令
crontab -e
* * * * * 可执行命令
2.语法格式
* #每
*/n #表示间隔
05 #表示第5分钟
- #表示区间范围
, #表示分隔
3.用户定时任务配置文件位置
/var/spool/cron/root
ubt:/var/spool/cron/crontabs/root
4.查看定时任务
cat /etc/crontab #系统的
crontab -l #用户的
5.日志/var/log/cron
6.注意事项
a.配置文件中不识别%需要\
b.用户定时任务配置文件PATH变量
c.多条命令写入脚本
d.将执行结果定向到空
e.注意默认的路径在家目录
ubt:定时任务
crontab -e 选择编辑器 选择vim编辑 正常输入
ubt 日志文件:
[root@oldboy ~]# cat /var/log/syslog
正文完