我想了解这种情况:
我的服务器突然变得忙碌起来,停止了我所做的任何新的事情:ls,vi,没有任何工作,它被冻结。 但是我可以浏览已经打开的vim文件。 为什么这样?
可能是各种各样的事情,这假定除了使用你现有的vim之外,你什么也做不了。 你不能ssh,你不能打开一个新的shell,什么都不是。 如果你可以打开一个新的shell,但是不能在shell中运行任何东西,那么它可能是各种不同的东西,例如你的PATH可能引用一个networking共享上的目录(尝试运行“/ bin / ls “所以PATH不search),你必须等待它超时,才会在其他目录中看到…这里有一些事情要尝试:
按照“最不可能导致vim崩溃”的顺序,首先让vim打开/ proc / loadavg( :r /proc/loadavg )它应该插入一行
0.04 0.05 0.01 2/176 26199
前三个数字是您的平均负载(与正常运行时间命令相同)。2/176表示在总共176个进程中有两个进程当前可运行。 如果总进程数以万计,那么一个forkbomb或类似的东西可能正在消耗你所有的资源。 你可以读取/proc/[randomnumber]/cmdline并且很好地猜测这些进程来自哪里。
/proc/meminfo将会有很多关于当前RAM使用情况的信息。 如果MemFree接近于零, 而缓冲区和caching接近于零,则某些内容消耗了大部分内存。 请注意,由于缓冲区和caching,MemFree通常很低,所以如果缓冲区和caching很高,这是正常的操作。
如果/ proc / loadavg中的前三个数字真的很高(例如10.0+,取决于#cpus / cores),那么它可能是一个失控进程占用所有CPU时间(在这种情况下,您的命令应该执行…最终但是vim也应该慢一些)。 否则可能会出现IO问题,这可能会增加负载数量而不使用CPU(例如,失败的硬盘驱动器)。 如果你已经安装了sysfs(通常为/sys/ ),你可以尝试阅读/sys/block/[drivedevice]/device/ioerr_cnt (其中[drivedevice]是你的驱动设备名称,例如sda ,而不是分区名称)。 这将有一个hex数字,logging该设备已logging的所有错误。 我的是0x8(一些启动testing的写入caching和其他设置导致错误,这是正常的,这取决于硬件和驱动程序),但如果你的大(并越来越大,尝试读两遍),然后驱动器正在死亡/死亡。
如果驱动器没有错误,那么尝试从驱动器中读取可能是安全的:如果您有权限,请尝试打开/var/log/kern.log ,这可能会让您更深入地了解正在发生的事情。 /var/log/syslog和/var/log/messages也可能有帮助。