一、Linux系统层面
系统故障排查关注
- 应用日志查询: tailf /var/log/messages
- 登录日志查询: tailf /var/log/secure
- 系统日志查询: dmesg
- 容易攻击点查询 :/var/tmp /tmp
- 计划任务查询(经常攻击对象): crontab -l 、 /etc/crontab
一)以普通用户运行开机自启程序
1、系统环境
系统:CentOS
普通用户:redis
注意:CentOS7.x与之前的版本管理命令不同
2、解决方案
Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法:
1、方案一:将运行脚本放入/etc/rc.d/rc.local
1、因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面
2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序:
cd /home/testops su - reedis -c "whoami"
补充知识点:su命令
su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份
2、方案二:写系统自启管理脚本
1、/etc/init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务
2、用root帐号登录,vi /etc/rc.d/init.d/redis,追加如下内容:
#!/bin/bash #chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机, 6指的是重启,其他为正常启动。80为启动的优先级,05为关闭的优先机 #description:redis service RETVAL=0 start(){ --启动服务的入口函数 echo -n "redis serive ..." cd /home/redis su - redis -c "/usr/bin/redis-server /etc/redis.conf" } stop(){ --关闭服务的入口函数 /usr/libexec/redis-shutdown } case $1 in --使用case,可以进行交互式操作 start) start ;; stop) stop ;; esac exit $RETVAL
3、运行chmod +r /etc/rc.d/init.d/redis,使之可直接执行
4、运行chkconfig --add redis,把该服务添加到配置当中
5、运行chkconfig --list redis,可以查看该服务进程的状态
CentOS 7.x新加方法:添加自启服务
1、/usr/lib/systemd/system目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务
2、用root帐号登录,vim /etc/systemd/system/redis.service,追加如下内容:(系统自带的在/usr/lib/systemd/system目录下,自己创建可以在/etc/systemd/system目录下)
[Unit] Description=Redis persistent key-value database After=network.target [Service] ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no ExecStop=/usr/libexec/redis-shutdown User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target
3、systemctl start redis(启动测试,服务正常启动即可)
4、systemctl enable redis(设置为开机自启)
二)系统磁盘变成只读
使用fsck修复文件系统错误:使用fsck修复文件系统错误-喵喵俠-ChinaUnix博客
三)系统无法启动
1、故障:系统相关磁盘空间已满,无法加载相应系统服务
1、原因:空间不足,无法写入(var相应的分析满了)
2、分析:启动系统时,会启动一些开机自启服务(会产生一些文件,会写入一些数据)
3、解决:
思路:进入单用户模式进行修复:查看因为什么文件导致空间满了,找到后分析文件是否有用:无用直接删除;有用则将其暂时移到其他位置,使服务器能正常启动,然后提出、并实施磁盘相应的处理方案
步骤:
1 如何进入单用户模式:https://blog.csdn.net/qq_34556414/article/details/78689225 不让系统自动引导——在引导界面按e进入手动引导模式,选择引导的用户和内核继续按e进入新界面,在quiet行尾输入single,回车返回上一个界面按b进入单用户模式 2 在单用户模式都能操作什么 自启服务都不会启动,只会检查文件系统和mout相应的磁盘,空间不够也不会影响进入单用户模式
2、故障现象:ROOT账号无法xshell远程连接,普通用户可以远程连接
带[]的进程是系统的核心进程,必须使用root启动(若没有root账户,系统是无法正常启动的,因为有些操作是需要root账户进行授权的:Linux将root改名,系统也是无法启动的)
1、分析:
- 系统启动时,切换到debug模式查看,chown无法授权
- 使用系统自有的普通用户登录,无法切换到root用户
- 普通用户登录,查看本应root用户启动的进程是另外一个用户
2、原因:有人因为想避免root账户被攻击,更改root的账号(考虑不周的想法)
3、解决:更改root权限的用户名改回来:进入单用户模式,将root进行改名——直接更改/etc/passwd
三)服务器远程连接问题
1、现象:要连接上,又退出了连接步骤
1、分析:
limit -a 查看ssh日志:/var/log/secure发现有pam_limits(ssh_session):could not set limit for 'nofile': Operation not permitted 相关的设置:/etc/security/limits.conf 和/etc/security/limits.d/90-nproc.conf 若两个文件都设置了,最终生效的是后者 下面的值不能设置太大,会产生资源越界(系统日志会提示没有权限),会导致远程无法登陆;也不要设置太小, open files (-n) 65535 文件描述符,打开最大的文件数:这个需要人根据服务器配置自行设置相应的值,系统不会自动设置一个合理的值(但是不能设置特别大,因为这样系统会无法识别) max user processes (-u) 63631 用户打开的最大进程数 :这个虽然可以设置没有限制,但是硬件会有相应的限制,系统会根据硬件性能设置一个值
2、原因:/etc/security/limits.d/90-nproc.conf 或/etc/security/limits.conf 里面的open files设置的太大,但无法识别最大值时,他会走默认设置
3、解决:将open files值调小一些
4、总结:
- open files这个值阶梯性调整,不要一下设置太大
- open files6553600这个值足够了,若还有问题,有可能是受到攻击
- java需要打开文件数会大
- 线下多种情况设置完毕后,再去设置线上
四)Linux系统sudo命令无效
1、报错如下
2、分析
- 此用户是否有拥有sudo权限,有的话进行下一步
- 有sudo权限的用户,测试是否sudo正常,不正常的话进行下一步
- sudo.conf和sudoers这两个文件是否有问题
- 语法问题
- 文件的权限、所属主、组问题
3、原因
产生问题原因:更改sudo文件的所属主,如下截图
4、解决
解决办法:将文件所属主改回去,立马好了
chown -R root sudo.conf sudoers
验证
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Linux系统层面问题总结
发表评论 取消回复