处理每个问题必然可按具体问题进行分类,根据每一类按对应的解决思路来执行。
但像处理一个网络问题的时候,上至系统防火墙的配置、下至硬件故障。如果处理一个问题都按固定流程来进行的话,那必然效率将非常低下。下为处理网络故障的一般流程。
1、网络硬件问题检查。 (机率较低)
2、检查网卡能否正常工作。 (较高、主要表现为人为配置错误)
3、检查局域网之间联机是否正常。(非常高)
4、检查DNS是否设定正确。 (较低)
5、服务是否正常打开。 (低)
6、检查访问权限是否打开。 (较高)
假如从1至6是标准的处理网络问题的流程,这样的处理方式效率低下。处理问题可以有整体的流程,但是实际 *** 作中可先对出现机率更高的步骤进行检查、或采取2分法缩小产生问题的范围,虽然上述较的两个方法不一定对所有问题都试用,但对于大多数的网络问题来说处理效率有者显著的提升。
个人总结的情况如下。
1、lsmod | grep ip 查看相关的网卡模块是否已加载
2、ifconfig -a 能使用该命令查找到对应网卡配置信息,则说明网卡驱动程序正常
3、使用ping命令、依次ping自己、ping局域网主机、ping网关
ping自己异常,问题:服务异常、网卡配置未生效
ping局域网主机异常,问题:配置文件有误、网卡配置未生效、网线损坏
ping网关异常,问题:配置文件有误、网卡配置未生效
4、当前3步还不能正常上外网的话。所有route查看默认路由表。
处理方法:删除不必要的路由信息,并保证默认路由是从对应网关地址出去的。
5、临时停止iptables服务、SELinux服务、NetworkManager服务
6、如能上网但访问域名有异常时,那将需要检查/etc/hosts、/etc/resolv.conf两个配置
7、假如以上6步检查完毕之后,还发现不能上网。有如下可能。
7.1、主机MAC地址被路由器禁止上网
7.2、外网服务异常。如宽带账号欠费、光纤被挖断等物理攻击。
查看如下 两个日志对我们了解系统当时做了什么 *** 作有帮助。/var/log/messages
记录系统整体信息,一般来讲各类报错信息都会在这个日志中记录。
/var/log/cron
记录系统定制任务的日志。
首先我要定位系统异常的时间点,很简单,我打开我的程序的目录,找到运行日志打开一看
可以直接看出来到7:20就没有了,这说明程序运行到这个时间点之后就没有在运行,基本上就是这个时间点异常了。
那么系统日志我们就按着这个时间点去看。
首先打开cron日志找到对应的时间点,看了下似乎没什么异常之处。
接下来看messages日志,找到对应的时间点之后发现了异常。
从7:20开始系统发生异常,然后桌面终端的情况被记录到/var/spool/abrt/ccp-2017-11-09-07:20:02-5142.new/coredump
然后被程序调用的网卡被卸载掉,紧接着系统写了一个mail。
上面的日志中有一个error,根据这个报错百度了下(这里我要吐槽百度,怀念google),大概意思是error 4的意思是用户态程序内存访问越界。
error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,所以它的取值范围是0~7。
bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写 *** 作导致内存访问越界,值为0表示是读 *** 作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
error number是4, 转成二进制就是100, 即bit2=1, bit1=0, bit0=0, 按照上面的解释,我们可以得出这条信息是由于用户态程序读 *** 作访问越界造成的。
但是具体是什么程序造成的我还没弄清楚,但是用户态程序也就是我运行的程序也就那么几个,逐个排查后应该可以得到结论。后续在慢慢弄。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)