Linux系统层面问题总结

news/2024/10/19 12:08:55/

一、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/redissu - 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、分析
  1. 此用户是否有拥有sudo权限,有的话进行下一步
  2. 有sudo权限的用户,测试是否sudo正常,不正常的话进行下一步
  3. sudo.conf和sudoers这两个文件是否有问题
    1. 语法问题
    2. 文件的权限、所属主、组问题
   3、原因

  产生问题原因:更改sudo文件的所属主,如下截图

  

  4、解决

  解决办法:将文件所属主改回去,立马好了

chown -R root sudo.conf sudoers

  

  验证

  


http://www.ppmy.cn/news/1540249.html

相关文章

C++算法练习-day7——707.设计链表

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 在编程中&#xff0c;链表是一种常见的数据结构&#xff0c;用于存储一系列元素&#xff0c;但与数组不同&#xff0c;链表中的元素在内存中不必连续存储。每个元素&#xff08;称为节点&#xf…

MatrixOne助力江铜集团打造炉前智慧作业AIoT大数据系统

客户简介 江西铜业集团有限公司是世界500强企业&#xff0c;同时也是中国最大的铜生产商之一&#xff0c;成立于1979年&#xff0c;总部位于江西省南昌市。 公司专注于铜及其相关产品的开采、冶炼和加工&#xff0c;业务覆盖矿产资源开发、冶炼加工、产品制造和国际贸易等领域…

实践笔记 - 微服务架构下RESTful风格api之我为何抛弃了路由参数

在如今关于 RESTful API 的实践中&#xff0c;许多设计示例经常遵循类似以下的动态路径方案&#xff1a; 方案一&#xff1a;动态路径 方法路径描述GET/zoos列出所有的动物园POST/zoos新增一个新的动物园GET/zoos/{zoo}获取指定动物园详情PUT/zoos/{zoo}更新指定动物园DELETE…

Threejs 实现3D 地图(01)创建基本场景

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…

mysql学习教程,从入门到精通,SQL 约束(Constraints)(41)

在数据库设计中&#xff0c;约束&#xff08;Constraints&#xff09;用于确保数据的准确性和完整性。它们通过限制可以插入到数据库表中的数据类型来防止无效数据。SQL 中有几种常见的约束类型&#xff0c;包括主键约束&#xff08;Primary Key&#xff09;、外键约束&#xf…

M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models

原文链接&#xff1a;https://arxiv.org/abs/2404.00578 研究背景 背景介绍: 这篇文章的研究背景是医学图像分析在临床诊断和治疗中至关重要&#xff0c;尤其是多模态大语言模型&#xff08;MLLMs&#xff09;在这一领域的应用。然而&#xff0c;现有的研究主要集中在2D医学图…

目标检测——Libra R-CNN算法解读

论文&#xff1a;Libra R-CNN: Towards Balanced Learning for Object Detection (2019.4.4) 作者&#xff1a;Jiangmiao Pang, Kai Chen, Jianping Shi, Huajun Feng, Wanli Ouyang, Dahua Lin 链接&#xff1a;https://arxiv.org/abs/1904.02701 代码&#xff1a;https://git…

如何给手机换ip地址

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;扮演着举足轻重的角色。然而&#xff0c;有时出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。本文将详细介绍几种实用的方法&#xff0c;帮助您轻松实现手机IP…