老男孩Linux58期17组刘艺 第十八天笔记

第18天笔记

回顾定时任务要领:

* * * * *  /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

Changing password for user oldgirl.

passwd: all authentication tokens updated successfully.

企业场景下用户及秘密管理思路

1、用户密码要足够复杂,最好8位以上字母,数字,特殊字符的组合

2、较大的企业用户和密码可以统一管理

3、动态密码

chpasswd对密码文件的要求是上述user.log

chpasswd

作业;批量创建10个用户,oldboy01-oldboy10  ,请设置和用户名相同的密码。

下节命令:

chage和passwd对比

groupadd

groupdel

id   whoami     w    last   lastlog

su   sudo    visudo

磁盘基础,

你可能感兴趣的:(老男孩Linux58期17组刘艺 第十八天笔记)