运维就是个遇坑、踩坑、填坑、再遇坑、再填坑的过程,这些年运维遇到的坑可以说是不计其数,今天咱就盘点一下我踩过的却又很低级的坑。
rm -rf /*
场景:
该命令可谓是让人闻风丧胆,听说一个运维新人在技术交流群里请教一个问题,另一人开玩笑地告诉他使用该命令就可以解决问题,那位新人真去执行了,后果难以想象。
解决或避免方法:
无论上述故事真假,作为运维人员都还是要谨慎一些,正常情况下主观意愿不会去执行这个命令,但是难免在脚本中使用了空值变量误造成了同样的效果,这样的坑踩了可能就填不上了,因此要时常谨记。
大文件删除
场景:
作为运维人员最不想接到的电话应该就是线上告警电话,然后最最不想接到的应该是半夜的磁盘告警电话,毕竟磁盘告警一般问题都不大,但是不及时处理又可能会导致大问题。接到电话睡眼朦胧的打开电脑找到那个烦人的那个大日志文件,这时不假思索的执行’rm -f 大文件.log’,或许问题就解决了,或许就惹麻烦了。这时有一个进程依然占用着这个文件,磁盘空间就不会释放,只能想办法让进程接触该文件的占用,这不就是重启进程吗,能在业务无感知的情况下重启还好,不行那就麻烦了。
解决或避免方法:
遇到需要清理大文件来释放磁盘空间的场景,肯定优先选择’> 大文件.log’,确实需要删除该文件再去执行删除命令,此时至少磁盘空间被释放了
文件查找
场景:
Linux系统中查找文件通常会使用到find命令,该命令的参数中有这样三个:atime、ctime、mtime,这三个参数又是配合着数字使用的,如:+1、0、-1,即加减符号连整数,不同的数字的效果总是让人混乱,因为这个命令时常和exec配合使用以执行后续的操作如删除,那么也就可能删除掉不该删除的文件。
解决或避免方法:
用区间的概念来解释记忆即可,分以下几种情况: 1.不带加减号的纯数字格式n:[n+1, n] 2.带加号的格式+n:(+∞,n) 3.带减号的格式-n:(n,0)
定时任务
场景:
针对研发同学的需求,好不容易写了一个shell脚本,手动执行测试过了没有任何问题,通过crontab使其定时执行,然后就开开心心下班了,然而第二天来准备拿结果交差的时候,发现结果是空的,这种情况大多是手动执行的shell环境和crontab的不一样导致部分命令找不到。
解决或避免方法:
针对这样的坑做到两点即可避免: 1.shell脚本中的命令尽可能写其绝对路径 2.测试好脚本后,创建一个临近的定时任务再测试一下定时执行的效果
坑很多,后续还可追加更新,既用于提醒自己,也用于帮助大家
延展阅读:
中小团队怎么基于PG快速迭代创新?PostgreSQL is all you need!
咨询方案 获取更多方案详情