一 linux系统故障的一般处理思路
报错信息--->查阅日志文件--->分析定位问题--->解决问题。
二 linux系统无法启动原因及解决
系统无法启动的原因很多,常见的有下面几种情况:
1 文件系统被破坏,常常因断电和非法关机引起文件系统结构不一致。修复方法是用fsck命名强制修复,进入单用户模式或者交互界面,按提示进入修改模式中,卸载对应的问题磁盘,然后用fsck命令修复,无法恢复的数据会存放在lost+found下。umount /dev/sda3 fsck.ext4 -y /dev/sda3
2 系统配置/etc/fstab错误或丢失而无法启动。当启动时候出现 starting system logger后停止了,就要想办法恢复/etc/fstab文件,利用linux rescue修复模式登录系统,从而获取挂载点和分区信息,重构/etc/fstab文件。
3 系统内核文件丢失,内核升级错误,引导程序出错,硬件故障等都会引起无法启动
三 linux网络故障处理思路流程
1 检查权限是否打开,iptables,selinux
2 服务是否正常,用Telnet或netstat检查服务是否正常开启
3 检查本机网络是否正常,ping自身IP、同网段主机、网关
4 检查DNS解析是否正常,/etc/hosts和/etc/resolv.conf
5 检测网卡ip设置,route检查路由是否正确
6 检查网路硬件,网卡、路由器、集线器、网线、交换机(lsmod、ifconfig、ip)
四 Read-only file system 错误解决
思路:
网站程序问题
磁盘问题
排查网站程序,看报错信息和服务日志错误,以及系统日志,来定位问题所在 Read-only file system 多数就是磁盘问题,出现上面错误的时候,磁盘对应目录是无法写入的,那么就要进行修复了,文件系统修复命令fsck
首先查看是否有用户正在使用该磁盘,fuser -m /dev/sda1,如果有就停止对应端口程序
接着卸载文件系统 umount /www/data
然后修复文件系统 fsck -V -a /dev/sda1
最后恢复挂载 mount /dev/sda1 /www/data
五 Argument list too long 错误解决
当删除一个目录中的大量文件时,可能会出现这种报错,这是由于linux系统对传递参数的限制,可以用getconf ARG_MAX查看这个数值,
重新编译内核参数可以永久解决问题,但是编译内核有风险,还是用下面方法保险
既然不能一下清除大量文件,那么分批删除或者查找或者循环删除就可以了,可以用下面命令清理
rm [a-n]* -rf
rm [o-z]* -rf
find /www/data -type f -print -exec rm -f {} \;
六 inode耗尽故障
当iNode耗尽后,磁盘虽然有剩余空间,但也会出现 no space left 的报错
用 df -i 命令可以查看所有分区对应inode的使用情况
用 ls -i nginx.log 能查看对应文件的inode编号。详细信息用 stat nginx.log 查看
针对inode耗尽的情况,清理删除那些无用的文件就可以了,尤其是那些碎小的文件
七 删除文件后空间不释放问题
文件系统的数据分为两个部分:数据部分和指针部分,当有进程正在使用某个文件是,执行删除命令,空间是不会释放的,删除的是数据文件部分,指针部分并未删除,所以空间并不释放。
用 lsof |grep delete 查看已删除的文件,找到对应文件 执行清空命令 echo " " > /tmp/nginx.log 空间就会得到释放
八 “too many open files”错误
服务出现报错异常 too many open files
用 ulimit -n 查看文件描述符 65535 是最大值
检查普通用户的值 cat /etc/security/limits.conf |grep www
如果普通用户的值不是65535 那么给普通用户添加这个限制
www soft nofile 65535
www hard nofile 65535
如果上面的普通用户的值显示65535 而依旧出现这个错,就要考虑添加limit值的时间是否早于应用最后一次启动的时间,应用时间早的话,直接重启应用就可以了