day18 定时任务和用户管理

课程回顾与补充

如何调试定时任务?

1、查看错误日志

/var/log/cron

有思路且学会最小化查找出错误

先清空>/var/log/cron更直观查看错误日志

2、增加执行任务频率调试任务 

  把频率调快。例如每分钟执行

3、把定时任务执行时间比当前时间拖后2分钟(最低)

    当前5:00,咱们就把时间调整 02 05有个最低2分钟提前时间。

4、调整系统时间(测试环境还凑合)不推荐

00 03执行,把系统时间调整到2:58。

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 查看inode占用情况

因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件。

邮件服务器postfix服务默认不开,这些给系统发的邮件就会堆在临时目录(大量小文件存在)

/var/spool/clientmqueue/      

/var/spool/postfix/maildrop/  

企业故障案例:程序通过手动可以执行,放定时任务里不执行。

export变量生产案例

定时任务在执行脚本的时候,多数情况没办法加载环境变量,特别是/etc/profile。

登录后怎么操作都对,但是就是放到定时任务不行。

命令行:bash登录方式

1.手工登录后,加载所有环境变量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc)

2.定时任务执行脚本属于非登录状态(/etc/bashrc)。

实践检验,定时任务能否自动加载/etc/bashrc和/etc/profile文件。

所有运维都会把变量放到此文件/etc/profile,把这个文件里的变量定义

在执行的脚本中 重新定义。                                                                                                                                                           

具体为crond执行Shell时只能识别为数不多的系统环境变量,普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明下该变量,以确保脚本正确执行。以后要将其作为一个开发基本规范写上。

1)在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句。

######oldboy...

15 03 * * 6 /bin/perl /home/shell/collect.pl >/dev/null 2>&1

2)crontab在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh,

怎么实现 ?

00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh &>/dev/null

02. 用户管理相关知识

    系统中用户分类

a 超级管理员用户  root  uid=0

b 系统虚拟用户    nobody uid=1-999  centos7  不需要有家目录/不需要登陆系统

                              uid=1-499  centos6

    c 系统普通用户            uid=1000+  centos7

                              uid=500+  centos6

    用户和组的关系

    一个用户属于一个组  1对1关系

    一个用户属于多个组  1对多关系

    多个用户属于多个组  多对多关系

    多个用户属于一个组  多对1关系

03. 用户管理中重要文件信息(一定要保存好)

    用户相关的文件:(重点关注)

/etc/passwd    --- 用户信息记录文件

oldboy01:x:1003:1003:sa-xiaozhang:/home/oldboy01:/bin/bash

  01        02    03    04         05                        06                07


第一列: 用户名称信息

第二列: 表示用户密码信息. 真正密码信息已经保存在了/etc/shadow文件中

第三列: 表示用户uid数值信息

第四列: 表示用户gid数值信息

第五列: 表示用户注释信息

第六列: 定义用户所在家目录信息

第七列: 用户是否能够登陆系统 shell信息(/etc/shells)

shell信息哪些设置可以进行远程登陆

/bin/bash

shell信息哪些设置不可以进行远程登陆

/sbin/nologin

/usr/sbin/nologin

/etc/shadow    --- 用户密码信息记录文件

用户组相关的文件:

/etc/group    --- 确认组是否存在,可以查看group文件

/etc/gshadow 


04. 用户管理中重要目录信息

 企业异常案例:

当家目录信息被清空之后, 命令提示符会发生变化

-bash-4.2$

    解决方式:

将/etc/skel目录中的数据信息复制到相应用户家目录中

cp -a /etc/skel/.bash* ~/

05. 用户管理相关命令

 第一个重要的命令: useradd 用于创建用户

相关参数总结:

-u    指定新建用户的uid数值

-G    指定用户还属于哪个组 指定用户附属组信息

-g    指定用户属于主要组信息

-s    指定新建用户shell信息, 如果指定为/sbin/nologin,用户无法登陆系统

-M    创建新用户时,不要给家目录

-c    创建的新用户添加注释信息

检查用户是否存在

id oldboy051

    uid=1024(oldboy051) gid=1024(oldboy051) groups=1024(oldboy051)

    用户的uid信息      用户的组id,所属组             用户所属的其他组信息

 所属主要组         

如何设置uid值  666

如何设置所属组 666  同时还属于1024这个组

useradd -u 666 oldboy30 -G oldboy051

    [[email protected] ~]# id oldboy30

    uid=666(oldboy30) gid=1025(oldboy30) groups=1025(oldboy30),1024(oldboy051)

    创建一个用户alex999指定uid为888,禁止用户登录系统,不创建家目录

    useradd alex999  -u 888  -s /sbin/nologin  -M  --- 创建虚拟用户方法

虚拟用户主要用于管理服务进程

    第二个重要的命令: userdel 删除用户信息

userdel xiadao  --- 直接利用命令删除用户,会有用户的残留信息(家目录还有 用户邮件还有)

    userdel -r 用户  --- 彻底删除用户信息     

    彻底删除用户的方法:

   userdel -r xiadao01

     userdel -r xiadao01

    userdel: user 'xiadao01' does not exist

    ll -d /home/xiadao01

    ls: cannot access /home/xiadao01: No such file or directory

   ll /var/mail/xiadao01

    ls: cannot access /var/mail/xiadao01: No such file or directory

useradd xiadao01

    如果删除用户时,有残留信息没有删除掉如何解决:

1) 手动删除残留数据

2) 创建出一个相同的用户,再次删除

  第一个历程: 创建用户

  useradd -u uid值 相同用户名              --- uid值和家目录属主信息保持一致

  第二个历程: 彻底删除用户

  userdel  -r 用户名


    第三个重要的命令: usermod 修改用户信息

-u    指定新建用户的uid数值

-G    指定用户还属于哪个组 指定用户附属组信息

-g    指定用户属于主要组信息

-s    指定新建用户shell信息, 如果指定为/sbin/nologin,用户无法登陆系统

-c    创建的新用户添加注释信息 

你可能感兴趣的:(day18 定时任务和用户管理)