课堂笔记day18——用户知识与管理实践

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里的解释器


课堂笔记day18——用户知识与管理实践_第1张图片


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


课堂笔记day18——用户知识与管理实践_第2张图片

4./etc/default/useradd目录:

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


课堂笔记day18——用户知识与管理实践_第3张图片

5./etc/skel目录:

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


6.登录系统后,命令行出现“-sh-4.2$”,是用户的环境变量缺失导致的:可执行以下命令解决:


-sh-4.2$ cp /etc/skel/.bash* .

-sh-4.2$ source ./.bash_profile ./.bashrc

7.不交互设置密码

方法一:

echo 123456|passwd --stdin oldgirl (oldgirl是需要设置密码的用户)

方法二:

echo 123456 >pass

passwd --stdin oldgirl

方法三:

tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}' >user.log(批量给用户设置密码)

你可能感兴趣的:(课堂笔记day18——用户知识与管理实践)