美文网首页
2020-02-12 企业案例(1)

2020-02-12 企业案例(1)

作者: 阿丧小威 | 来源:发表于2020-02-12 14:55 被阅读0次

    1. 网站文件被恶意修改

    用户打开网站,报警。
    原因:权限设置不到位。chmod -R 777 目录 开发人员习惯
    解决方案:

    1、备份
    tar zcvf /opt/oldboy_$(date +%F).tar.gz ./oldboy/
    2、找到被修改的文件
    [root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
    /oldboy/oldboy.txt:<script>ddddddddddddd</scripts>
    /oldboy/test.sh:<script>ddddddddddddd</scripts>
    3、批量删除
    [root@oldboyedu /]# find /oldboy -type f |xargs sed -i '/ddddddddddddd/d'
    [root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
    4、找到文件被篡改来源,并优化调整。
    亡羊补牢。
    5、写总结 故障报告。
    

    2. 编写定时任务

    每天晚上0点,把站点目录/var/www/html下的内容打包备份到/data目录下,并且要求每次生成不同的备份包名。

    1.命令行执行(先测试是否能正常执行)
    cd /var/www
    tar zcf /data/html_$(date +%F).tar.gz ./html
    2.尽量用脚本文件实现
    mkdir /server/scripts -p    ---存放脚本的文件
    cd /server/scripts
    #cat bak.sh
    cd /var/www
    tar zcf /data/html_$(date +%F).tar.gz ./html
    命令行执行:
    /bin/sh /server/scripts/bak.sh 
    3、编辑定时任务
    #bak html dir by oldboy at 2020108    ---写注释说明
    00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
    [root@oldboyedu /server/scripts]# crontab -l|tail -2
    #bak html dir by oldboy at 2020108
    00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
    4、检查正式结果
    [root@oldboyedu /server/scripts]# ls -l /data
    

    生产环境下定时Cron书写要领:

    1:为定时任务规则加必要的注释
    2:所有的定时任务尽量都以脚本的形式执行
    3:在执行的Shell脚本前加上/bin/sh
    4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
    5:在指定用户下执行相关定时任务
    6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
    7:定时任务执行的脚本要存放到规范路径下
    8:配置定时任务要规范操作过程,减少出错
    9:定时任务脚本中程序命令及路径尽量用全路径
    10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
    11:若脚本中调用了系统环境变量,要重新定义
    12:出错或无法执行,就检查/var/log/cron日志

    3. no space left on device故障及解决

    原因:磁盘满的报错,原因往往是inode被占满了。(用df -i查询)
    因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件。
    邮件服务器postfix服务默认不开,这些给系统发的邮件就会堆在临时目录(大量小文件存在)

    4. 程序通过手动可以执行,放定时任务里不执行

    定时任务在执行脚本的时候,多数情况没办法加载环境变量,特别是/etc/profile。
    登录后怎么操作都可以执行,但是就是放到定时任务不行。
    
    命令行:bash登录方式
    1.手工登录后,加载所有环境变量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc)
    2.定时任务执行脚本属于非登录状态(/etc/bashrc)。
    
    所有运维都会把变量放到此文件/etc/profile,把这个文件里的变量定义,在执行的脚本中重新定义。
    
    具体为crond执行Shell时只能识别为数不多的系统环境变量,普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明
    下该变量,以确保脚本正确执行。以后要将其作为一个开发基本规范写上。
    

    相关文章

      网友评论

          本文标题:2020-02-12 企业案例(1)

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