day 18

作者: 个中秘密 | 来源:发表于2019-03-31 13:52 被阅读0次

    定时任务要领

            *  *  *  *  * /bin/sh  (索要执行的任务主题)  &>/dev/null  (或 >/dev/null 2>&1)

    如何调试定时任务

    1、查看错误日志

            /var/log/cron

            学会最小化排除

            先清空,  >/var/log/cron

            然后再测试和观察。

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

            把频率调快

    3、把定时任务执行时间比当前时间拖后5分钟

            00 03执行,当前5:00,咱们就把时间调整提前5分钟

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

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

    5、通过脚本日志输出调试定时任务

            定时任务输出

            * * * * * /bin/sh  /server/scripts/bak.sh  &>/tmp/bak.log

            脚本输出

            tar  zcvf  oldboy.tar.gz  ./date >/tmp/tar.log

            (注意点:有的程序只能执行一次,一定要在测试环境测试好,然后直接复制到测试)

    代码发布流程:

            办公室测试环境==>IDC机房测试环境===>IDC机房正式环境

            防止在正式环境发生错误,从而影响用户体验,业务稳定

    No space left on device   常见的企业故障案列

            磁盘满的报错,原因往往是 inode被占满了

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

            邮件服务器postfix服务默认不开,这些给系统发的邮件

            /var/spool/clientmqueue/ centos6

            /var/spool/postfix/maildrop/ centos7

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

            crontab文件中没有配置环境变量引起的

            系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。

            因此就需要在crontab文件中指定任务运行所需的所有环境变量。

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

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

    命令行:bash登录方式

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

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

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

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

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

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

    第十四章 Linux用户管理知识与应用实践

    1.1、用户及用户组配置文件

        用户相关文件:

            /etc/passwd    用户所在文件

            /etc/shadow    密码所在文件

            useradd oldboy  添加用户实际上就是修改上述两个文件

            passwd  oldboy  改密码实际上就是修改密码

        用户组相关文件

            /etc/group     用户组所在文件

            /etc/gshaow  用户组密码所在文件(废弃状态)

            useradd oldboy    添加用户实际上就是修改上述两个文件(因为要创建同名用户组)

            groupadd  sa  添加用户组就是修改上述两个文件

            md5sum 给文件设置指纹(计算和检查MD5数字信息)

        Linux是命令行管理,平时输入ls,cp,谁识别,帮我们把我们想要的输出呢?

        这个工具就是bash(命令行解释器)。 * ? [abc]

    用户登录:输入命令,希望哪个解释器解释(结尾列决定)

            /etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash

            CentOS7默认解释器是bash。

    /etc/passwd里的解释器

            [root@oldboyedu ~]# awk -F ":" '{print $NF}' /etc/passwd|sort|uniq -c

            6  /bin/bash 

            1/bin/sync

            1/sbin/halt

            18/sbin/nologin

            1/sbin/shutdown

            [root@oldboyedu ~]# cat /etc/shells

            /bin/sh  

            /bin/bash 

            /usr/bin/sh 

            /usr/bin/bash

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

    passwd中对各字段的详细说明

    给开发人员添加用户,尽量给截止时间

            [root@oldboyedu ~]# useradd gongli2 -g incahome

            [root@oldboyedu ~]# id gongli2

            uid=1006(gongli2) gid=1004(incahome) groups=1004(incahome)

            /etc/default/useradd文件  useradd命令的配置文件

            默认shell就是/bin/bash

            为什么默认的家目录在home下

            为什么默认的家目录/home用户名在面有很多隐藏文件,从哪来的

    修改方法:

            useradd -D -s /bin/sh 相当于vim编辑/etc/default/useradd文件。

            [root@oldboyedu ~]# useradd -D -s /bin/sh

            You have new mailin/var/spool/mail/root

            [root@oldboyedu ~]# cat /etc/default/useradd 

            # useradd defaults file

            GROUP=100

            HOME=/home

            INACTIVE=-1

            EXPIRE=

            SHELL=/bin/sh

            SKEL=/etc/skel

            CREATE_MAIL_SPOOL=yes

    /etc/skel目录,创建用户就会把此目录下的文件拷贝到/home/目录名下

    /etc/skel  为每个用户提供用户环境变量的目录。

            [root@oldboyedu ~]# ls /etc/skel -A.bash_logout .bash_profile         .bashrc===================================================.bash_logout         .bash_profile .bashrc 用户环境变量

    /etc/login.defs   添加用户要用的文件(登录的定义文件)【了解】

    删除用户相关命令 userdel

            语法:  userdel  [选项] [用户名]

            参数:  -f:强制删除

             -r:递归删除用户目录及下面内容,删除前备份或确认目录下无重要内容

    不交互设置密码:

    方法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

    相关文章

      网友评论

          本文标题:day 18

          本文链接:https://www.haomeiwen.com/subject/nbomvqtx.html