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重新声明
下该变量,以确保脚本正确执行。以后要将其作为一个开发基本规范写上。
网友评论