linux主机执行命令报错Segmentation fault(中文系统显示段错误)
一、错误描述:
linux主机执行命令报错Segmentation fault(中文系统显示段错误)以及sysctl报错sysctl: error while loading shared libraries: /lib64/libprocps.so.4: cannot apply additional memory protection after relocation: Cannot allocate memory
这是由于将系统中的vm.max_map_count参数设置的太低导致的,问同事果然将vm.max_map_count=0添加到了/etc/sysctl.conf文件中且执行了生效命令sysctl -p
二、解决方法:
echo 10000 > /proc/sys/vm/max_map_count (数值自己确定一般为65535或10000)**
三、问题分析:
vm.max_map_count参数是设置的每个进程能够使用的虚拟内存的大小,而linux中使用的大部分命令都为外部命令(如ls,cat),都需要消耗内存,所以就会报错 。
linux中大部分内部命令不会消耗内存(如echo,history),所以可以使用echo来解决这个问题。
而echo vm.max_map_count=10000修改这个值后,由于sysctl -p需要消耗内存,因此无法执行。所以直接修改这个参数的配置文件,echo 10000 > /proc/sys/vm/max_map_count 会立即生效。