zoukankan      html  css  js  c++  java
  • Linux服务器挂死案例分析

    问题现象:

    在linux服务器上运行一个指定的脚本时,就会出现无数个相同进程的,而且不停的产生,杀也杀不掉,最后系统就陷入死循环,无法登陆,只能人工去按机器的电源键才可以。这够崩溃的吧?

    问题分析过程:

    在分析过程中发现这个特定的脚本有些特别,和系统中已有的命令的名字是相同的。

    以free命令为例:

    这个脚本名字就叫做free(后面没有带.sh),而且这个脚本文件里又去调用了free命令。

    这个脚本的本意应该是要去调用free命令来完成一个任务。

    那是否就是因为这样就会导致问题呢?

    其实光这样是不会出问题的,因为脚本的调用一般要采用如下两种方式来调用:

    方式一、sh free

    方式二、./free

    如果直接执行free,会去调用系统命令中的free,而不是当前这个脚本,那也就不会出现问题了。

    另外一个条件就是环境变量的配置(Linux中环境配置文件可能为:.bash_profile .profle .bashrc):

    对于PATH这个变量的配置,如果这个变量中包含了.,如

    PATH=.:xxx:/sbin:/bin:/usr/sbin

    在PATH中包含了. 之后,会发生什么样的效果呢,执行命令时,会在当前目录下去查找命令,如果我们把点加到了PATH变量的最前面,那就会优先在当前目录下查找命令。

    此时再在当前目录下执行free,就会执行我们命名为free的脚本文件,而脚本文件又会调用自身,以此形成死循环。


    总结:

    1.PATH中如果增加点,那么执行命令时,操作系统会在当前目录下查找命令,如果点放到PATH的最前面,则会优先执行当前目录下的命令

    2.不要将脚本文件命令为与系统命令相同,不要去掉.sh后缀。坚持一些开发的基本原则,很多时候会避免很多不必要的麻烦。


    转载请注明出处:http://blog.csdn.net/u014569459/article/details/38564497

    
    
    
  • 相关阅读:
    关于android 中WebView使用Css
    android下面res目录
    Android View如何获取焦点
    用javascript修改html元素的class
    设计模式-观察者模式(List列表维护观察者)
    闭包->类的实例数组排序
    Javascript setTimeout 带参数延迟执行 闭包实现
    最简单的闭包 掰开揉碎
    原创最简单的ORM例子
    List<T> 转换 DataTable
  • 原文地址:https://www.cnblogs.com/jerry1999/p/4175917.html
Copyright © 2011-2022 走看看