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
Linux服务器挂死案例分析的更多相关文章
- Linux服务器宕机案例一则
案例环境 操作系统 :Oracle Linux Server release 5.7 64bit 虚拟机 硬件配置 : 物理机型号为DELL R720 资源配置 :RAM 8G Intel(R) Xe ...
- Linux SSH登录慢案例分析
手头有台Linux服务器ssh登录时超级慢,需要几十秒.其它服务器均没有这个问题.平时登录操作都默默忍了.今天终于忍不住想搞清楚到底什么原因.搜索了一下发现了很多关于ssh登录慢的资料,于是自己也学着 ...
- Linux服务器宕机案例第二则
邮件告警发现海外工厂一Linux服务器连接不上,DPA(Database Performance Analyzer)系统也发现其出现问题,ping这台服务器发现网络不通,联系不到当地系统管理员,邮件咨 ...
- 记一次 .NET 某上市工业智造 CPU+内存+挂死 三高分析
一:背景 1. 讲故事 上个月有位朋友加wx告知他的程序有挂死现象,询问如何进一步分析,截图如下: 看这位朋友还是有一定的分析基础,可能玩的少,缺乏一定的分析经验,当我简单分析之后,我发现这个dump ...
- 使用tcpdump+Wireshark(或Fiddler)做linux服务器的网络请求分析
我们的服务器上,一般都没有窗口界面,这时候要抓包,用tcpdump是最方便的.而分析网络请求时,wireshark又是相当方便的,这时候我们就需要把它们两个一起来使用了. tcpdump 抓取数据 命 ...
- Linux服务器用iotop命令分析服务器磁盘IO情况
Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦.如果会systemtap, 或者blktrace这些事情 ...
- 一个 Linux 后台程序编程案例分析
Linux 下的一个进程打开一个日志文件,不定期地往该文件里写入日志.此时可以在控制台使用 mv 命令给该日志文件改个名字或者用 rm 命令把这个日志文件删除掉.Linux 下是允许这么干的!对于改日 ...
- Linux服务器I/O性能分析-2
一.如何正确分析IO性能 1.1 BLKTRACE分析IO性能 之前的文章已经说明,要是系统发生I/O性能问题,我们常用的命令是无法精确定位问题(内核I/O调度器消耗的时间和硬件消耗的时间,这个不能作 ...
- Linux服务器I/O性能分析-1
一.IOSTAT误区 1.1 误区-svctm Linux上的svctm是重要的I/O指标(I/O平均服务时间-单位毫秒),这个值直接反映了硬件的性能(I/O请求从SCSI层发出--->I/O完 ...
随机推荐
- c语言结构体数组引用
struct dangdang { ]; ]; ]; int num; int bugnum; ]; ]; double RMB; }dbdd[]={{,,}, {,,} };//初始化 void m ...
- centerOS安装chkrootkit
Chkrootkit是一个在本地系统检查rootkit痕迹的工具,它是检查系统二进制文件是否被rootkit病毒修改的一个shell脚本. (1)centerOS安装chkrootkit 安装gcc编 ...
- EL表达式 functions String处理函数
01.uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 02.上面的 uri 根据 ...
- struts的ognl.NoConversionPossible错误
JSP页面便利集合的时候,代码如下 <s:iterator value="storageList" id="stList" status="st ...
- iOS 消息推送原理
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...
- Java反射举例
本文參考:http://www.cnblogs.com/yydcdut/p/3845430.html 1.Java反射的基本介绍 Java的反射很强大,传递class. 能够动态的生成该类.取得这个类 ...
- OCP-1Z0-051-题目解析-第28题
28. Which two statements are true regarding constraints? (Choose two.) A. A foreign key cannot cont ...
- HDU 4907 Task schedule
对于询问q 假设q不存在直接输出q 否则输出后面第一个不存在的数 从2*10^5到1遍历一边ac #include<bits/stdc++.h> using namespace std; ...
- maven 打包源文件
1.The source plugin can be used to create a jar file of the project sources from the command line or ...
- 破解Veeam过程
1)运行Veeam_Backup_Setup.exe,但是不要继续下一步: 2)进入到%temp%\IXP000.TMP目录,例如windows xp sp3环境默认为C:\Documents and ...