54、Linux 系统故障排查与安全基础指南

Linux 系统故障排查与安全基础指南

1. 系统性能问题排查

在 Linux 系统中,有时系统性能不佳可能是由于用户或应用程序的错误操作导致的。配置错误或损坏的应用程序可能会挂起或耗尽系统资源,而经验不足的用户可能会误启动多个程序实例,从而消耗大量系统资源。作为系统管理员,需要掌握查找和解决这些问题的方法。

1.1 基本工具使用

为了排查 Linux 系统的性能问题,可以使用一些基本工具来监控和管理系统上运行的进程,如 ps top kill killall 等命令。

1.2 虚拟内存管理

Linux 系统中最复杂的故障排查领域之一是虚拟内存管理。计算机有永久存储数据的方式(硬盘)和临时存储数据的方式(随机存取存储器,即 RAM 和交换空间)。与磁盘存储相比,随机存取存储器具有以下特点:
| 属性 | 描述 |
| ---- | ---- |
| 离处理器更近 | 内存物理上靠近计算机主板上的 CPU,因此如果数据在 RAM 中,CPU 可以立即获取所需的数据。 |
| 速度更快 | 由于其靠近 CPU 以及访问方式(固态与机械硬盘相比),CPU 从 RAM 获取信息的速度比从硬盘获取信息的速度快得多。 |
| 容量较小 | 新计算机可能配备 10 TB 或更大的硬盘,但 RAM 可能只有 8 GB 或 16 GB。虽然将处理器可能需要的每个文件和数据都放入 RAM 可以使计算机运行得更快,但在大多数情况下,RAM 空间是不够的。 |
| 价格更贵 | 尽管现在 RAM 比一二十年前更实惠,但每 GB 的价格仍然比硬盘贵。 |
| 临时性 | RAM 保存着 CPU 当前正在使用的数据和元数据,以及 Linux 内核认为某个进程不久后可能需要的一些内容。当计算机关闭时,RAM 中的所有数据都会丢失。 |

1.3 交换空间的作用

如果内存需求超过了 RAM 的供应,内核可以将数据临时移动到一个称为交换空间的区域。当数据从 RAM 交换到交换区域(换出)时,会导致性能下降,因为写入磁盘的速度比写入 RAM 慢得多。当数据从交换区域返回 RAM(换入)时,也会导致性能下降。当 Linux 系统的 RAM 空间不足时,交换就像汽车失去了高速档,系统性能会显著下降,但所有进程仍然保持活动状态,不会丢失任何数据或完全失败。如果 RAM 和交换空间都已满,且没有数据可以丢弃或写入磁盘,系统可能会达到内存不足(OOM)的状态,此时内核的 OOM 杀手会启动,逐个杀死进程,以恢复内核正常运行所需的内存。

1.4 交换性设置

一般来说,交换被认为是不好的,应该尽量避免。但在某些情况下,更积极的交换实际上可以提高性能。例如,当你在文本编辑器中打开一个文档,然后将其最小化在桌面上几天,同时处理其他任务。如果将该文档的数据交换到磁盘,更多的 RAM 将可用于更活跃的应用程序,从而更好地利用这些空间。当你下次需要访问该文档的数据时,数据从磁盘交换回 RAM 会导致性能下降。系统交换的积极程度相关的设置称为交换性。

2. 内存问题检查

当登录到 Linux 桌面,并且运行了大量应用程序,系统开始变慢时,可以使用 top ps 等命令来检查系统的内存消耗情况。

2.1 使用 top 命令检查内存

运行 top 命令后,按大写字母 M 可以按内存使用情况对进程进行排序。例如:

# top
top - 22:48:24 up  3:59,  2 users,  load average: 1.51, 1.37, 1.15
Tasks: 281 total,   2 running, 279 sleeping,   0 stopped,   0 zombie
Cpu(s): 16.6%us,  3.0%sy,  0.0%ni, 80.3%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   3716196k total,  2684924k used,  1031272k free,   146172k buffers
Swap:  4194296k total,        0k used,  4194296k free,   784176k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6679 cnegus    20   0 1665m 937m  32m S  7.0 25.8   1:07.95 firefox
 6794 cnegus    20   0  743m 181m  30m R 64.8  5.0   1:22.82 npviewer.bin
 3327 cnegus    20   0 1145m 116m  66m S  0.0  3.2   0:39.25 soffice.bin
 6939 cnegus    20   0  145m  71m  23m S  0.0  2.0   0:00.97 acroread
 2440 root      20   0  183m  37m  26m S  1.3  1.0   1:04.81 Xorg
 2795 cnegus    20   0 1056m  22m  14m S  0.0  0.6   0:01.55 nautilus

top 输出中与内存相关的有两行( Mem Swap )和四列信息( VIRT RES SHR %MEM )。在这个例子中,从 Mem 行可以看出 RAM 并未耗尽(3716196k 中仅使用了 268492k),从 Swap 行可以看出没有数据被交换到磁盘(使用了 0 k)。

1.2 判断系统是否内存不足

如果认为系统即将达到内存不足的状态,可以关注以下几点:
- Mem 行显示的可用空间接近或为零。
- Swap 行显示的已使用空间不为零且持续增长,同时系统性能会下降。
- 当 top 屏幕每隔几秒刷新时,如果有进程存在内存泄漏(持续请求和使用更多内存,但不释放任何内存), VIRT 内存量会增加,更重要的是,该进程的 RES 内存会持续增加。
- 如果交换空间耗尽,内核会开始杀死进程以处理内存不足的情况。

1.3 使用 Cockpit 监控内存

如果安装并启用了 Cockpit,可以通过 Web 浏览器实时监控内存使用情况。打开 Cockpit,然后选择 System ➪ Memory & Swap

3. 内存问题处理

在短期内,可以采取以下几种方法来处理内存不足的情况:

3.1 杀死进程

如果内存问题是由一个错误的进程引起的,可以直接杀死该进程。假设以 root 用户或拥有该失控进程的用户身份登录,在 top 窗口中按 k ,然后输入要杀死的进程的 PID,并选择发送信号 15 或 9。

3.2 清除页面缓存

如果只是想立即清理一些内存,可以让系统丢弃不活跃的页面缓存。在一个终端窗口中运行 top 命令,在另一个终端窗口中以 root 用户身份输入以下命令:

# echo 3 > /proc/sys/vm/drop_caches

通过观察 top 屏幕上的 Mem 行,查看是否有更多的 RES 内存可用。

3.3 使用 Alt+SysRq 键杀死内存不足的进程

有时,内存耗尽会使系统变得无法使用,可能无法从 shell 或 GUI 获得响应。在这种情况下,可以使用 Alt+SysRq 键杀死内存不足的进程。要启用 Alt+SysRq 键,系统必须将 /proc/sys/kernel/sysrq 设置为 1。可以通过在 /etc/sysctl.conf 文件中添加 kernel.sysrq = 1 来实现。此外,必须从基于文本的界面(如按 Ctrl+Alt+F2 时看到的虚拟控制台)运行 Alt+SysRq 键。当 kernel.sysrq 设置为 1 时,可以在基于文本的界面中按 Alt+SysRq+f 来杀死系统中 OOM 分数最高的进程。屏幕上会显示系统上运行的所有进程的列表,并在末尾列出被杀死的进程的名称。可以重复这些按键操作,直到杀死足够的进程,使系统能够正常从 shell 访问。

4. 基本 Linux 安全

4.1 安全基础

确保 Ubuntu 系统的安全,最基本的层面包括物理安全、数据安全、用户账户保护和软件安全。随着时间的推移,需要监控系统以确保其始终安全。需要问自己以下几个问题:
- 谁可以物理访问系统?
- 是否进行了数据备份以应对灾难?
- 用户账户的安全保护程度如何?
- 软件是否来自安全的 Ubuntu 发行版,并且安全补丁是否是最新的?
- 是否一直在监控系统,以确保其未被破解或损坏?

4.2 实施物理安全

计算机服务器机房门上的锁是第一道防线。虽然这是一个非常简单的概念,但往往被忽视。对物理服务器的访问意味着可以访问其中包含的所有数据。如果怀有恶意的人能够物理访问 Linux 服务器,那么任何安全软件都无法完全保护系统。基本的服务器机房物理安全措施包括:
- 服务器机房门上的锁或安全警报。
- 访问控制,只允许授权人员访问,并记录谁在何时访问了机房,例如刷卡进入系统。

4.3 监控安全

在实施基本安全措施后,需要持续监控系统的安全状况。可以通过查看系统日志、监控网络流量等方式来发现潜在的安全问题。

4.4 审计和审查安全

定期对系统的安全设置进行审计和审查,确保所有安全措施都得到了正确实施,并且没有新的安全漏洞出现。

graph LR
    A[系统性能问题] --> B[用户或应用程序错误]
    A --> C[虚拟内存管理问题]
    B --> D[使用基本工具排查]
    C --> E[了解 RAM 和交换空间]
    E --> F[判断内存不足情况]
    F --> G[处理内存问题]
    G --> H[杀死进程]
    G --> I[清除页面缓存]
    G --> J[使用 Alt+SysRq 键]
    A --> K[基本安全措施]
    K --> L[物理安全]
    K --> M[数据安全]
    K --> N[用户账户保护]
    K --> O[软件安全]
    L --> P[门锁或警报]
    L --> Q[访问控制]

通过以上步骤和方法,可以有效地排查 Linux 系统的性能问题,并确保系统的基本安全。在实际操作中,需要根据具体情况灵活运用这些技巧,以保障系统的稳定运行。

5. 安全审计与审查操作流程

5.1 系统日志审查

系统日志包含了系统活动的详细记录,对发现潜在安全问题至关重要。以下是审查系统日志的步骤:
1. 定位日志文件 :在 Linux 系统中,常见的日志文件位于 /var/log 目录下,如 syslog auth.log 等。
2. 查看日志内容 :使用 cat more less 命令查看日志文件内容,例如:

cat /var/log/syslog
  1. 筛选关键信息 :使用 grep 命令筛选出与安全相关的信息,如登录失败记录:
grep "Failed password" /var/log/auth.log

5.2 网络流量监控

监控网络流量可以帮助发现异常的网络活动。可以使用 tcpdump Wireshark 等工具进行网络流量监控。
- 使用 tcpdump tcpdump 是一个命令行工具,可以捕获和分析网络数据包。以下是一个简单的示例,捕获所有通过 eth0 接口的网络数据包:

tcpdump -i eth0
  • 使用 Wireshark :Wireshark 是一个图形化的网络分析工具,提供了更直观的界面和更强大的分析功能。安装并打开 Wireshark 后,选择要监控的网络接口,即可开始捕获和分析网络流量。

5.3 安全漏洞扫描

定期进行安全漏洞扫描可以帮助发现系统中存在的安全漏洞。可以使用 Nessus OpenVAS 等工具进行安全漏洞扫描。
- 安装和配置 Nessus :Nessus 是一个专业的漏洞扫描器,提供了丰富的漏洞库和扫描功能。安装并配置 Nessus 后,创建扫描任务,指定要扫描的目标系统,即可开始扫描。
- 使用 OpenVAS :OpenVAS 是一个开源的漏洞扫描器,功能强大且免费。安装并配置 OpenVAS 后,创建扫描任务,指定要扫描的目标系统,即可开始扫描。

5.4 安全策略审查

定期审查系统的安全策略,确保所有安全措施都得到了正确实施。可以从以下几个方面进行审查:
- 用户账户权限 :检查用户账户的权限是否合理,是否存在过高或过低的权限。
- 防火墙规则 :检查防火墙规则是否正确配置,是否允许不必要的网络流量通过。
- 文件和目录权限 :检查文件和目录的权限是否合理,是否存在可被非法访问的文件和目录。

6. 安全应急处理流程

6.1 发现安全事件

通过系统日志审查、网络流量监控等方式发现潜在的安全事件。当发现异常的登录尝试、网络攻击等情况时,应立即采取措施。

6.2 评估安全事件影响

评估安全事件对系统的影响程度,确定事件的严重级别。可以从以下几个方面进行评估:
- 数据损失 :是否有重要数据被泄露或损坏。
- 系统可用性 :系统是否能够正常运行,是否受到了攻击的影响。
- 业务连续性 :安全事件是否影响了业务的正常开展。

6.3 隔离受影响系统

当发现安全事件后,应立即隔离受影响的系统,防止事件进一步扩散。可以通过断开网络连接、关闭相关服务等方式进行隔离。

6.4 收集证据

在处理安全事件的过程中,应收集相关的证据,以便后续的调查和分析。可以收集的证据包括系统日志、网络数据包、文件备份等。

6.5 恢复系统

在收集完证据后,应尽快恢复受影响的系统。可以通过以下几个步骤进行恢复:
- 修复安全漏洞 :根据安全事件的原因,修复系统中存在的安全漏洞。
- 恢复数据 :使用备份数据恢复受影响的系统。
- 重新配置系统 :重新配置系统的安全策略,确保系统的安全性。

6.6 总结经验教训

在处理完安全事件后,应总结经验教训,制定相应的防范措施,防止类似事件的再次发生。

graph LR
    A[发现安全事件] --> B[评估影响]
    B --> C[隔离系统]
    C --> D[收集证据]
    D --> E[修复漏洞]
    E --> F[恢复数据]
    F --> G[重新配置系统]
    G --> H[总结经验教训]

7. 安全加固建议

7.1 用户账户管理

  • 定期清理无用账户 :删除不再使用的用户账户,减少潜在的安全风险。
  • 设置强密码策略 :要求用户使用强密码,并定期更换密码。可以通过修改 /etc/login.defs 文件来设置密码复杂度要求。
  • 限制用户权限 :根据用户的工作职责,合理分配用户权限,避免用户拥有过高的权限。

7.2 网络安全配置

  • 配置防火墙 :使用 iptables ufw 等工具配置防火墙,只允许必要的网络流量通过。例如,使用 ufw 开启 SSH 服务:
ufw allow ssh
  • 禁用不必要的服务 :关闭系统中不必要的服务,减少攻击面。可以使用 systemctl 命令来管理服务的启动和停止,例如:
systemctl disable telnet
  • 使用加密通信 :在网络通信中使用加密协议,如 SSH、SSL/TLS 等,保护数据的安全性。

7.3 软件更新管理

  • 定期更新系统软件 :及时安装系统的安全补丁和更新,修复已知的安全漏洞。可以使用 apt yum 等包管理工具来更新软件,例如:
apt update
apt upgrade
  • 使用安全的软件源 :确保从官方或可信的软件源下载和安装软件,避免下载和安装来自不可信来源的软件。

7.4 数据备份与恢复

  • 定期备份重要数据 :定期对系统中的重要数据进行备份,以防止数据丢失。可以使用 rsync tar 等工具进行数据备份,例如:
rsync -avz /data /backup
  • 测试数据恢复能力 :定期测试数据恢复的能力,确保在需要时能够顺利恢复数据。

8. 总结

在 Linux 系统的使用过程中,故障排查和安全保障是至关重要的工作。通过掌握系统性能问题排查的方法,如使用基本工具监控进程、了解虚拟内存管理机制、判断内存不足情况并采取相应的处理措施,可以确保系统的稳定运行。同时,实施基本的安全措施,包括物理安全、数据安全、用户账户保护和软件安全,以及持续的安全监控、审计和审查,可以有效防范各种安全威胁。

在实际操作中,要根据系统的具体情况和需求,灵活运用各种技巧和方法。建立完善的安全策略和应急处理流程,定期进行安全评估和漏洞修复,不断提升系统的安全性和可靠性。通过以上的努力,可以为 Linux 系统的稳定运行和数据安全提供坚实的保障。

安全方面 具体措施
用户账户管理 定期清理无用账户、设置强密码策略、限制用户权限
网络安全配置 配置防火墙、禁用不必要服务、使用加密通信
软件更新管理 定期更新系统软件、使用安全软件源
数据备份与恢复 定期备份重要数据、测试数据恢复能力

通过遵循这些建议和流程,能够更好地管理和保护 Linux 系统,使其在复杂的网络环境中保持稳定和安全。

需求响应动态冰蓄冷系统需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕需求响应动态冰蓄冷系统及其优化策略展开研究,结合Matlab代码实现,探讨了在电力需求侧管理背景下,冰蓄冷系统如何通过优化运行策略参需求响应,以实现削峰填谷、降低用电成本和提升能源利用效率的目标。研究内容包括系统建模、负荷预测、优化算法设计(如智能优化算法)以及多场景仿真验证,重点分析不同需求响应机制下系统的经济性和运行特性,并通过Matlab编程实现模型求解结果可视化,为实际工程应用提供理论支持和技术路径。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及从事综合能源系统优化工作的工程师;熟悉Matlab编程且对需求响应、储能优化等领域感兴趣的技术人员。; 使用场景及目标:①用于高校科研中关于冰蓄冷系统需求响应协同优化的课题研究;②支撑企业开展楼宇能源管理系统、智慧园区调度平台的设计仿真;③为政策制定者评估需求响应措施的有效性提供量化分析工具。; 阅读建议:建议读者结合文中Matlab代码逐段理解模型构建算法实现过程,重点关注目标函数设定、约束条件处理及优化结果分析部分,同时可拓展应用其他智能算法进行对比实验,加深对系统优化机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值