作家
登录

出了Linux故障找不到方法?看大牛简单、朴实的解决思路

作者: 来源: 2017-07-21 13:40:19 阅读 我要评论

3、经由过程shell脚本

  1. #/bin/bash 
  2.  
  3. RM_DIR=’/var/spool/clientmqueue’ 
  4.  
  5. cd $RM_DIR 
  6.  
  7. for I in `ls` 
  8.  
  9. do 
  10.  
  11. rm –f $i 
  12.  
  13. done 

4、从新编译内核

须要手动增长内核平分派给敕令行参数的页数,打开kernel source 下面的include/linux/binfmts.h文件,找到如下行:

  1. #denfine MAX_ARG_PAGES 32 

将32改为更大年夜的值,例如64或者128,然后从新编译内核

当在linux 体系中试图传递太多参数给一个敕令时,就会出现“argument list too long ”缺点,这是linux系同一向以来都有的限制,查看这个限制可以经由过程敕令“getconf ARG_MAX”来实现,

问题3:inode耗尽导致应用故障

客户的一台Oracle数据库如兵器在关机重启后,Oracle监听无法启动,提示报错 Linux error : No space left>

  • # df –h 
  • 大年夜磁盘输出信息可知,所有的分区磁盘空间都还有残剩不少,而Oracle监听写日记的路径在/var分区下,/var下分区空间足够。

    解决问题:

    解决思路:

    既然缺点提示语磁盘空间有关,那就深刻研究关于磁盘空间的问题,在linux体系中对磁盘空间的┞芳用分为三个部分:第一个是物理磁盘空间,第二个是inode节点所占用的磁盘空间,第三个是linux用来存放旌旗灯号量的空间,而日常平凡接触较多的是物理磁盘空间。既然不是物理磁盘空间的问题,接着就检查是否是inode节点耗尽的问题,经由过程履行敕令“df -i”查看可用的inode节点。由输出结不雅看出确切是因为inode耗尽导致无法写入文件。

    可以经由过程下面的敕令查看某个磁盘分区inode的总数

    1. # dumpe2fs –h /dev/sda3 |grep ‘Inode count’ 

    ——看重报错提示信息:每个缺点的出现,都是给掉足误提示信息,一般情况下这个提示根本定位了问题的地点,是以必定要看重这个报错信息,如不雅对这些缺点信息熟视无睹,问题永远得不到解决。

    1. # stat install.log 

    解决问题

    1. # find /var/spool/clientmqueue/ -name “*” –exec rm –rf {} \; 

    运维监控体系发来通知,申报一台办事器空间满了,上岸办事器查看,根分区确切满了,这里先说一下办事器的一些删除策略,因为linux没有收受接收军功能,所以线上办事器上所有要删除的文件都邑先移到体系/tmp目次下,然后按期清除/tmp目次下的数据。这个策略本身没有什愦问题,然则经由过程检查发明这台办事器的体系分区中并没有零丁划分/tmp分区,如许/tmp下的数据其拭魅占用根分区的空间,既然找到了问题,那么删除/tmp目次下一些占用空间较大年夜的数据文件即可。

    1. # du –sh /tmp/* | sort –nr |head -3 

    经由过程敕令发明在/tmp目次下有个66G大年夜小的文件access_log,这个文件应当是apache产生的拜访日记文件,大年夜日记大年夜小来看,应当是良久没有清理的apache日记文件了,根本剖断是这个文件导致的根空间爆满,在确认此文件可以删除后,履行如下删除敕令,

    1. # rm /tmp/access_Iog 
    2.  
    3. # df –h 

    大年夜输出来看,根分区空间仍然没有释放,这是怎么回事

    一个文件在文件体系中存放分为两个部分:数据部分和指针部分,指针位于文件体系的meta-data中,在将数据删除后,这个指针就大年夜meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针大年夜meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除access_log文件后,空间还没有释放,就是因为httpd过程还在一向向这个文件写入内容,导致固然删除了access_Ilog文件,然则因为过程锁定,文件对应的指针部分并未大年夜meta-data中清除,而因为指针并未删除,体系内核就认为文件并未被删除,是以经由过程df敕令萌芽空间并未释放。

    问题排查:

    既然有懂得决思路,那么接下来看看是否有过程一向在向access_log文件中写入数据,这里须要用到linux下的losf敕令,经由过程这个敕令可以获取一个仍然被应用法度榜样占用的已删除文件列表

    1. # lsof |grep delete

        推荐阅读

        《哈佛商业评论》发长文,谈人工智能商业之路的现状、潜力、障碍与风险...

      在脑筋和机械之间划分工作的近况很快就会崩溃。与那些愿意并且可以或许把机械进修放在恰当的处所,并能找出若何有效地将其功能与仁攀类的才能集成起来的竞争敌手比拟,停止不前的公司将很快发明本身会处在前所未竽暌>>>详细阅读


      本文标题:出了Linux故障找不到方法?看大牛简单、朴实的解决思路

      地址:http://www.17bianji.com/lsqh/36339.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)