大家好,我是“小虾米”。上一篇我们带大家学会了 6 个日志查看与 vim 编辑命令。今天我们就进入“Linux 管家”系列,教你如何管理系统权限、查看进程以及排查系统卡顿。这可是解决日常线上故障的杀手锏!开始前,我们先简单介绍一个sudo命令。因为Linux的安全性,所以我们是以普通用户(ubuntu)登录系统,而 sudo 允许普通用户临时以 root 身份执行命令。一、权限与归属:“为什么我的脚本提示 Permission denied?” -- 因为你没有给它“通行证”。
chmod +x check_system.sh# 给脚本赋予可执行权限,这是运维中最常用的操作。
2、chown:修改文件或目录的归属用户和用户组。chown -R nobody:nogroup data/backup# 把目录的归属权递归(-r)交给 nobody用户,nogroup用户组。
细心的读者会发现这个操作里,出现了“Opertaion not permitted”,意思是当前用户没有权限修改该目录或文件的所有者。这是因为在 Linux 系统中,只有root用户(或具有CAP_CHOWN 权限的进程)才有权更改文件或目录的所有者(chown)。普通用户即使对该目录拥有完全的读写权限,也无权把文件的所有权转让给其他人(如 nobody:nogroup)。所以我们需要使用 sudo 提升权限执行,输入当前账号的密码。sudo chown -R nobody:nogroup data/backup
二、进程与资源监控:当系统突然卡死时,去哪找“罪魁祸首”?-- 你需要请出系统的“监控管家”。
3、top:实时动态查看系统资源与进程状态。在终端直接敲(1)平均负载 (Load Average) —— 位于第一行,分别代表1分钟、5分钟、15分钟的平均负载。如果系统的平均负载数值长期大于CPU 的逻辑核心数(例如 4 核CPU,负载达到了 8 以上),说明系统已经严重过载。(2)CPU 利用率 (Cpu(s)) —— 位于第三行,重点关注wa这一项,如果 wa 很高,说明系统遇到了严重的磁盘性能瓶颈。(3)内存占用 (Mem / Swap) —— 位于第四、五行,关键要看可用内存 (avail mem)是否充足。(4)进程状态 (STAT) —— 进程列表中的状态列,主要看有没有Z (Zombie):僵尸进程。 | |
| UID | 启动该进程的用户或用户 ID。示例中为root,表示该进程由系统超级管理员运行。 |
| PID | 进程ID(唯一标识符)。系统为每个运行中的进程分配的唯一数字编号。示例中系统首个进程 systemd 的 PID 是 1。 |
| PPID | 父进程ID。创建当前进程的那个进程的 PID。示例中 PID 为 1 和 2 的进程,其 PPID 都是 0(代表它们由内核或系统引导直接衍生,没有传统的应用层父进程)。 |
| C | CPU 占用率或处理器调度利用率。指该进程在生命周期中消耗 CPU 的占用权重的综合指标(通常为整数)。 |
| STIME | 进程启动时间。记录该进程开始运行的具体日期或时间。示例中为 Aug13(8月13日)。 |
| TTY | 终端代号。控制该进程的终端设备名称。示例中的 ? 表示该进程没有关联任何终端,通常是系统后台守护进程(Daemon)或内核线程。 |
| TIME | 累计消耗的 CPU 时间总量。指该进程自启动以来,总共占用了 CPU 计算的时间(格式为 时:分:秒),注意这不等同于进程存活的绝对时间。 |
| CMD | 启动该进程的完整命令及参数。如果被方括号 [] 包裹(如 [kthreadd]),通常代表是由 Linux 内核直接创建的内核线程。 |
ps -ef | grep sshd# 精准查找某个服务(如 sshd)的进程 ID(PID)是否存在。
比如我前面截图中的 sshd-session: ubuntu@pts/0 对应的PID是4386,现在强制结束它,我的ssh远程会话就会关闭了。【小虾米实战提示】:使用 kill -9 之前,务必通过 ps 或 top 确认好 PID,千万别把系统关键进程给“误杀”了,否则容易引起线上故障!free -h# 以 MB/GB 的直观单位查看内存总量及剩余情况。
du -sh /var/log/*# 查看目录下每个文件/文件夹的大小,排查是哪个大文件把硬盘撑爆了。
三、 实战场景:排查一次服务器“卡死”的经典步骤 -- 运维标准排查三部曲:
1、查负载和内存:敲 top(或看 free -h 和 df -h),看是 CPU 满、内存溢出,还是磁盘被写满。2、定位坏进程:在 top 界面记下占用资源最高的那个进程的 PID。3、精准处理或揪出元凶:用 ps -ef | grep PID 确认该进程的来源,必要时用 kill 结束它。今天我们学了这 8 个权限与系统管家命令,快到你的服务器上练习吧!chmod、chown、top、ps、kill、free、df、du。在评论区告诉我:你在用top命令查看时,系统当前的内存占用率是多少?有没有发现哪个进程占用资源最高?下篇预告:下一篇我们将进入本系列的收官篇——“Linux 桥梁”,教你如何搞定网络连通性、远程连接、压缩打包,以及运维高手最爱的“命令别名(alias)提效秘籍”,敬请期待!