1.如何调试定时任务
1.1查看错误日志
a、/var/log/cron
b、学会最小化排除,先清空 >/var/log/cron ,然后在测试和观察
1.2增加执行任务频率调试任务
a、可以把频率调快
1.3把定时任务执行时间比当前时间拖后5分钟
a、如00 03执行,当前时间5:00,就可以把时间调整05 05,有个5分钟提前量
1.4调整系统时间(测试环境还凑合)
1.5通过脚本日志输出调试定时任务
1.5.1定时任务输出:
* * * * * /bin/sh /server/scripts/bak.sh &>/tmp/bak.log
1.5.2脚本输出:
tar zcvf oldboy.tar.gz ./data &>/tmp/tar.log
1.6注意点:有时候程序只能执行一次,一定要在测试环境测试好,然后直接复制到正式
1.7代码发布流程:
a、办公室测试环境 >>IDC机房测试环境>>IDC机房正式环境
b、防止在正式环境发生错误,从而影响用户体验,业务稳定
1.8案例:
1.8.1 “No space left on device常见企业故障案例”
解答:
a、磁盘满的报错,原因往往是inode被占满了(df -i查看)
b、因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件,而邮件服务器postfix服务默认不开,这些给系统发的邮件就会堆在临时目录 (大量小文件存在)(/var/spool/clientmqueue/ C6)(/var/spool/postfix/maildrop/ C7)
1.8.2程序通过手动可以执行,放定时任务里不执行 "export变量生产案例"
解答:
命令行:bash登录方式
a、手工登录后,加载所有环境变量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc)
b、定时任务执行脚本属于非登录状态(/etc/bashrc)
c、实践检验,定时任务能否自动加载/etc/bashrc和/etc/profile文件(因为所有运维程序员都会把变量放到此文件/etc/profile,把这个文件里的变量定义)
d、在执行的脚本中 重新定义(具体为crond执行Shell时只能识别为数不多的系统环境变量,普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明下该变量,以确保脚本正确执行)(以后要将其作为一个开发基本规范写上)
2.用户管理知识
2.1用户相关文件:
/etc/passwd 用户所在文件
/etc/shadow 密码所在文件
useradd oldboy 添加用户实际上就是修改上述两个文件
passwd oldboy 改密码实际上就是修改密码所在文件
2.2用户组相关文件:
/etc/group 用户组所在文件
/etc/gshadow 用户组密码所在文件(废弃状态)
useradd oldboy 添加用户实际上也会修改上述两个文件(因为要创建同名的用户组)
groupadd sa 添加用户组就是修改上述两个文件
2.3passwd文件中个字段的作用:
bingbing 用户
:!! 密码
:17980 最近更改密码的时间
:0 禁止修改密码的天数
:99999 用户必须更改口令的天数
:7 警告更改密码的期限
: 在用户密码过期之后到禁用账户的天数
: 从1970年1月1日起,到用户被禁用的天数
: 保留
3.CentOS7默认解释器是bash
3.1/etc/passwd里的解释器

3.2bash是sh的扩展,sh是bash的软连接

4./etc/default/useradd目录:
默认shell就是/bin/bash,默认的家目录在home下,而且默认的家目录/home/用户名下面有很多隐藏文件,都是是/etc/default/useradd文件配置的

5./etc/skel目录:
创建用户默认就会把此目录下的文件拷贝到/home/用户名下, /etc/skel 为每个用户提供用户环境变量的目录

网友评论