一、su命令切换用户问题解决
su命令切换用户问题现象:
直接提示"su: warning: cannot change directory to /home/oracle: Permission denied. su failed to execute /bin/bash:Permission denied"。

解决思路:
《1》用户目录的权限检查;
《2》su程序执行权限检查;
《3》程序依赖的共享库权限检查;
《4》SELinux问题导致;
《5》系统根空间问题;
bash
#解决思路逐一验证
#1-用户目录的权限检查
ll -a /home | grep oracle
#2-su程序执行权限检查
ll -a /bin/su
#3-程序依赖的共享库权限检查(都能够找到,没有红色标识则表示正常);
ldd /bin/su
#4-SELinux问题导致;
getenforce
cat /etc/selinux/config
#5-系统根空间问题(【/】【/boot】【/usr】【/var】空间是否已满);
df -hT
stat /






解决方法:
根目录权限问题导致,修改根目录权限即可。
bash
#定位到问题是由于根目录的权限不对导致的,因此需要将根目录的权限修改与正常系统的一致即可
chmod 555 /

二、"Too many open files"问题解决
问题现象:


应用程序的日志显示如"java.io.IOException: Too many open files"。
解决思路:
《1》404找不到文件,我们进入服务器检查这个网站及其内容是否存在(存在则排除);
《2》查看Tomcat的运行日志【/usr/local/tomcat8】(了解真正的报错原因【提示打开文件过多】);
《3》针对资源问题首先想到的就是ulimit(ulimit主要是用来限制进程对资源的使用情况的,它支持各种类型的限制)【资源限制的配置文件是【/etc/security/limits.conf】】(注意:若在【/etc/security/limits.conf】里面设置了进程数,在centos系统中还要查看【/etc/security/limits.d/ 20-nproc.conf 】是以这个文件的为主)。
《4》查看【/etc/security/limits.conf】配置修改的时间与【tomcat】程序启动的时间来确定生效情况。
bash
#查看资源配置文件的详情命令
stat /etc/security/limits.conf
#查看tomcat程序的启动时间
ps -eo pid,lstart,etime | grep tomcat的PID
线上Linux服务器的优化设置、系统安全与网络安全策略
https://coffeemilk.blog.csdn.net/article/details/149913938
|--------|--------------|------------------------------|
| 序号 | ulimit参数 | 说明 |
| 1 | -a | 显示当前系统所有的limit资源信息。 |
| 2 | -H | 设置硬资源限制,一旦设置不能增加。 |
| 3 | -S | 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。 |
| 4 | -C | 最大的core文件的大小,以 blocks 为单位。 |
| 5 | -f | 进程可以创建文件的最大值,以blocks 为单位。 |
| 6 | -d | 进程最大的数据段的大小,以Kbytes 为单位。 |
| 7 | -m | 最大内存大小,以Kbytes为单位。 |
| 8 | -n | 可以打开的最大文件描述符的数量。 |
| 9 | -s | 线程栈大小,以Kbytes为单位。 |
| 10 | -P | 管道缓冲区的大小,以Kbytes 为单位。 |
| 11 | -u | 用户最大可用的进程数。 |
| 12 | -v | 进程最大可用的虚拟内存,以Kbytes 为单位。 |
| 13 | -t | 最大CPU占用时间,以秒为单位。 |
| 14 | -l | 最大可加锁内存大小,以Kbytes 为单位。 |
[ulimit主要是用来限制进程对资源的使用情况]











解决方法:
由于ulimit限制的添加时间晚于tomcat最后一次的启动时间,而在此期间内, tomcat服务一直未重启过,操作系统也一直未重启过,那么ulimit资源限制对于tomcat来说始终是不生效的。
bash
#1-先将tomcat的进程杀死
killall -9 java
#2-重启tomcat
/usr/local/tomcat8/bin/startup.sh

三、Linux网络故障问题解决
3.1、检查网线状态
方法一: 直接到机房里检查网线两端是否都亮灯,普通服务器的话应该是绿灯常亮为正常,交换机绿灯闪烁表示正在传输数据。
**方法二:**可以通过命令【ethtool 网卡名称】来查看指定网卡的链路是否物理连通(显示结果最后的【Link detected】后面的值显示【yes】表示网卡的物理连通)。

3.2、检查网卡状态
bash
#查看网卡的驱动加载是否正常
ethtool -i ens33
lsmod
ifconfig
lspci|grep Ethernet


3.3、检查网卡的配置文件
在红帽系的系统中网卡的配置文件是在【/etc/sysconfig/network-scripts/】目录下以【ifcfg】开头的文件中(如ifcfg-ens33)。
RHEL/Centos7.0以及之后的系统版本中,所有网络设置和管理都统一由NetworkManager服务来维护,相对于旧的【/etc/init.d/network】脚本管理方式, NetworkManager是动态的、事件驱动的网络管理服务。
bash
#查看【NetworkManager】服务状态
systemctl status NetworkManager
#若还是需要使用之前的【/etc/init.d/network】则需要将【NetworkManager】服务关闭
systemctl stop NetworkManager


3.4、检查DNS解析文件
Linux的DNS解析配置文件是【/etc/resolve.conf】,可以在这个文件里面配置。
注意:【NetworkManager】服务会自动管理DNS解析文件(即:体现在在DNS配置文件配置了内容重启后配置的内容会丢失,不生效)。


3.5、检查系统防火墙
bash
#1-查看防火墙的所有规则
iptables -L -n
#2-配置SELinux的配置文件
#2.1-查看当前SELinux的状态
getenforce
#2.2-临时关闭SELinux
setenforce 0
#2.3-临时启用SELinux
setenforce 1
#2.4-永久禁用SELinux(将文件中的【SELINUX=enforcing】修改为【SELINUX=disabled】后保存退出并重启系统生效)
more /etc/selinux/config
3.6、检查网络连通性以及路由信息
bash
#1-通过ping命令查看网络连通性
ping coffeemilk.blog.csdn.net
#2-通过route命令检查系统路由表信息是否正确
route -n
#3-检查远程路由信息
mtr coffeemilk.blog.csdn.net
traceroute coffeemilk.blog.csdn.net
#4-查看主机的端口
netstat -antlp
#5-查看指定域名或IP的指定端口是否放开
telnet traceroute coffeemilk.blog.csdn.net 80
telnet 192.168.1.2 80