Linux服务器挂死案例分析
来源:互联网 发布:sql server2008 下载 编辑:程序博客网 时间:2024/06/01 08:23
问题现象:
在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
- Linux服务器挂死案例分析
- linux 挂死问题定位分析
- linux-samba案例分析
- Linux服务器宕机案例
- Linux服务器宕机案例
- i2c- sda挂死分析
- i2c- sda挂死分析
- Oracle服务器CPU 100%案例分析(转)
- LINUX httpd挂死解决
- Linux 服务器中流量跑高的案例
- linux服务器性能分析
- linux服务器负载分析
- Linux服务器分析命令
- Linux下关于curl卡死的情况分析
- 【分享】嵌入式Linux典型案例分析!
- Linux--netfilter/iptables+squid综合案例分析
- Linux下Netfilter/IPtables防火墙案例分析
- Linux中fork()函数案例分析
- Hibernate学习_007_get()与load()的区别
- 自己写的一个简单的IOC容器
- 登录sqlplus
- OC内存管理的初级理解
- 2014-08-14 日志
- Linux服务器挂死案例分析
- Android Binder机制----实现自定义的系统服务
- 中山大学软件学院中级实训-GridWorld
- 学习日记之享元模式和Effective C++
- POJ 3282 Ferry Loading IV(模拟,队列)
- "黑马程序员"针对for循环的一些学习及案例
- Objective-c中使用字面量语法
- UVA812-Trade on Verweggistan(暴力)
- Spring容器实例化、bean的实例化