day18课堂笔记
回顾定时任务要领:
* * * * * /bin/sh /server/scripts/bak.sh &>/dev/null
工作中如何调试定时任务?
1、查看错误日志 ***** /var/log/cron
学会最小化排除:
>/vrar/log/cron 先清空
然后再测试和观察。
2、增加执行任务频率调试任务*****
把频率调快。
3、把定时任务执行时间比当前时间拖后五分钟。
例如:00 03 执行,假设当前5:00 ,咱先把时间调到05 05,有个额度分钟的提前量。
4、调整系统时间(测试环境还凑合)
例如:00 03,把系统时间调到2:55.
5、通过脚本日志输出调试定时任务
定时任务输出
* * * * * /bin/sh /server/scripts/bak.sh &>/tmp/bak.log
脚本输出:tar zcvf oldboy.tar.gz ./data>tmp/tar.log
注意点:有时候程序只能执行一次。一定要在测试环境测试号,然后直接复制到正式。
代码发布流程:
办公室测试环境=====》IDC机房测试环境====》IDC机房正式环境
防止在正式环境发生错误,从而影响用户体验,业务稳定。
No space left on device 常见企业故障案例
磁盘满的报错,原因往往是inode被占满了。
df -i
因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件。
邮件服务器postfix默认不开,这些给系统发的邮件就会堆在临时目录(大量小文件)。
/var/spool/clinentmqueue/ 6
/var/spool/postfix/maildrop/ 7
程序通过手动可以执行,放定时任务不执行crond export 变量生产案例
定时任务在执行脚本的时候,多数情况没办法加载环境变量,特别是/etc/profile、
登录后怎么操作都对,但是就是放到定时任务不行。
本质原因就是命令行bash登录方式
1、手工登录后,会加载所有环境变量(~/.bash_profile,~.bash_rc,/etc/profile,/etc/bashrc)
2、定时任务执行脚本属于非登录状态。(/etc/bashrc)
不确定,用实践检验。
所有运维都会把变量放到次文件/etc/profile,把这个文件的变量定义,
在执行的脚本,重新定义。
用户管理知识:
用户相关文件:
/etc/passwd 用户所在文件
/etc/shadow 密码所在文件
useradd oldboy 添加用户实际上就是修改上述两个文件。
passwd oldboy 改密码实际上就是修改密码文件。
用户组相关文件:
/etc/group 用户组所在文件
/etc/gshadow 用户组密码所在文件(废弃状态)
groupadd oldboy 添加用户实际上也会修改上述两个文件(因为要创建相同的用户组)
groupadd sa 添加用户组就是修改上述两个文件
/etc/passwd
Linux是命令行管理,平时输入ls,cp,谁识别,帮我们把想要的输出呢?
这个工具就是bash(命令行解释器)。 * ? [abc]
CentOS7默认的解释器就是bash。
/etc/passwd里的解释器
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
oldboy 用户
:!! 密码
:17970 最近更改密码的时间
:0 禁止修改密码的天数
:99999 用户必须更改口令的天数
:7 警告更改密码的期限
: 不活动时间
: 失效时间
: 标志
/etc/group
/etc/gashdow
[root@mdl~]# useradd gongli -u 888 -s /sbin/nologin -M
[root@mdl~]# tail -l /etc/passwd
gongli:x:888:1005::/home/gongli:/sbin/nologin
给开发等人员添加用户,尽量给截止时间。
/etc/default/useradd文件 useradd命令的配置文件
为什么默认的shell就是/etc/bash?
为什么默认的家目录就是/home下
为什么默认的家目录/home/用户名下面有很多隐藏文件,从哪来的?
就是/etc/default/useradd/文件配置的。
[root@mdl~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
修改方法:
useradd -D -s /bin/sh 相当于vim编辑/etc/default/useradd文件。
/etc/skel 目录,创建用户默认就会把此目录的文件拷贝到/home/用户名下。
/etc/skel 是为每个用户提供用户环境变量的目录。
[root@mdl~]# ls /etc/skel -A
.bash_logout .bash_profile .bashrc
.bash_logout .bash_profile .bashrc 用户换机变量
登录系统后,命令行出现如下提示:为什么?
[root@oldboyedu /home/chenglong1]# su - chenglong1
-sh-4.2$
-sh-4.2$
解答:用户的环境变量缺失导致的。
执行如下命令解决
-sh-4.2$ cp /etc/skel/.bash* .
-sh-4.2$ source ./.bash_profile ./.bashrc
[chenglong1@oldboyedu ~]$
[chenglong1@oldboyedu ~]$
添加用户要用的文件
/etc/login.defs /etc/skel /etc/default/useradd
不交互设置密码:
方法1:
[root@oldboyedu ~]# echo 123456|passwd --stdin oldgirl
Changing password for user oldgirl.
passwd: all authentication tokens updated successfully.
方法2:
[root@oldboyedu ~]# echo 123456 >pass
[root@oldboyedu ~]# cat pass
123456
[root@oldboyedu ~]# passwd --stdin oldgirl <pass
Changing password for user oldgirl.
passwd: all authentication tokens updated successfully.
企业场景下用户及秘密管理思路
1、用户密码要足够复杂,最好8位以上字母,数字,特殊字符的组合
2、较大的企业用户和密码可以统一管理
3、动态密码
chpasswd对密码文件的要求是上述user.log
chpasswd<user.log
作业;批量创建10个用户,oldboy01-oldboy10 ,请设置和用户名相同的密码。
下节命令:
chage和passwd对比
groupadd
groupdel
id whoami w last lastlog
su sudo visudo
磁盘基础,