Linux系统管理进阶-源码安装与进程调度

发布时间:2026/10/31 12:36:24

Linux系统管理进阶-源码安装与进程调度 Linux 系统管理进阶源码安装、计划任务与进程调度 学习日期2026-07-29 系统环境CentOS 7 作者Linux 运维学习者 目录源码安装软件自建 YUM 仓库计划任务管理进程调度管理文件系统基本管理1. 源码安装软件在 Linux 世界里虽然yum/dnf能搞定大多数软件但源码编译安装依然是运维工程师的必修课。它能让你自定义安装路径和功能模块获取最新版本而不是仓库里的旧版本深入理解软件的构建过程1.1 源码安装 NginxNginx 是一个高性能的 HTTP 和反向代理 web 服务器官方地址nginx.org标准的源码安装三部曲配置 → 编译 → 安装Step 1安装依赖yuminstallgccmakepcre-devel zlib-develgcc和make是编译工具链pcre-devel和zlib-devel是 Nginx 依赖的库。Step 2下载 解压wgethttps://nginx.org/download/nginx-1.24.0.tar.gztar-xfnginx-1.24.0.tar.gzcdnginx-1.24.0/Step 3配置最关键的一步./configure--prefix/usr/local/nginx--prefix指定安装目录所有 Nginx 相关文件都会存放在/usr/local/nginx下。Step 4编译 安装makemakeinstall⚡make负责编译make install负责安装。用串联编译成功才会执行安装。Step 5配置环境变量exportPATH$PATH:/usr/local/nginx/sbin/echoexport PATH$PATH:/usr/local/nginx/sbin/~/.bashrcNginx 常用命令命令作用nginx启动服务nginx -s quit优雅停止处理完当前请求后退出nginx -s stop强制停止直接 kill 进程nginx -s reload重新加载配置文件将 Nginx 注册为系统服务手写一个 systemd 服务文件让 Nginx 像系统自带服务一样管理# /etc/systemd/system/nginx.service [Unit] DescriptionNginx server daemon [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit [Install] WantedBymulti-user.targetsystemctl daemon-reload systemctlenablenginx.service--now# 开机启动 立即运行1.2 源码安装 Cmatrix —— 打造黑客帝国同款屏幕 Cmatrix 是一款 Linux 环境下炫酷的屏保软件效果类似于《黑客帝国》电影中的代码雨。项目地址github.com/abishekvashok/cmatrix安装步骤# 安装依赖yum-yinstallgccmakeautoconf ncurses-devel# 下载 解压wgethttp://192.168.50.200/class/course-materials/softwares/stage01/cmatrix-1.2.tar.gztar-xfcmatrix-1.2.tar.gzcdcmatrix-1.2/# 配置 → 编译 → 安装./configure--prefix/usr/local/cmatrixmakemakeinstall# 配置环境变量exportPATH$PATH:/usr/local/cmatrix/bin 运行效果# 基础运行cmatrix# 加粗红色代码雨速度设为 3cmatrix-b-u3-Cred参数含义-b加粗字体-u 0-10滚动速度默认 4-C color字体颜色green / red / blue / white / yellow / cyan / magenta / black-s屏保模式按任意键退出-a异步滚动 运行时骚操作无需重启就能随时改变颜色按键盘上的对应键位即可颜色按键对应数字键 红色!Shift1 绿色Shift2 黄色#Shift3 蓝色$Shift4 洋红色%Shift5 青色^Shift6⚪ 白色Shift7⚫ 黑色)Shift8按数字键0~9还能随时调整滚动速度2. 自建 YUM 仓库当内网环境无法访问公网仓库或者需要统一管理团队内部的软件包版本时自建 YUM 仓库就是你的救星。自建仓库四步走准备软件包 → 创建仓库索引 → 发布仓库 → 客户端配置Step 1准备软件包mkdirrpmscdrpms# 使用 --downloadonly 只下载不安装保留依赖包yuminstall--downloadonly--downloaddir.vimopen-vm-tools vsftpd\lrzsz bash-completion nginx httpd mariadb-server# 移动到 Nginx 发布目录mkdir/usr/local/nginx/html/toolsmvrpms /usr/local/nginx/html/tools/PackagesStep 2创建仓库索引yuminstall-ycreaterepo createrepo /usr/local/nginx/html/tools/️createrepo会扫描 Packages 目录生成repodata/索引文件YUM 客户端就是靠它找到软件包的。Step 3通过 Nginx 发布在 Nginx 配置中启用目录浏览# /usr/local/nginx/conf/nginx.conf http { autoindex on; # ← 开启文件清单功能方便浏览器查看 ... }systemctl reload nginxStep 4客户端配置# 备份原仓库mkdir/etc/yum.repos.d/oldmv/etc/yum.repos.d/*repo /etc/yum.repos.d/old# 创建新仓库配置catEOF/etc/yum.repos.d/tools.repo[tools] namecentos7 tools from server.laoma.cloud baseurlhttp://server.laoma.cloud/tools/ enabled1 gpgcheck0 EOF# 测试安装yuminstall-yhttpd 同步仓库把远程仓库搬回家reposync--repoidtools# 同步所有 RPM 包createrepo tools# 重建本地索引3. 计划任务管理Linux 中的计划任务分为两类一次性任务和周期性任务。掌握它们运维自动化就迈出了一大步。3.1 一次性计划任务at “下午 5 点把这份日志发邮件给老板” —— 这种只做一次的事交给at。at 依赖atd后台服务运行yuminstallat systemctl status atd# 确认 active (running)基本用法# 5 分钟后执行at now 5 minutes atechohello world/tmp/hello.log atEOT# ← 按 CtrlD 完成输入# 从脚本文件读取命令at now 5 minutesmyscript.sh at now 100 minutes-fmyscript.sh时间表达大全timespec表达式含义now 5 minutes5 分钟后now 5 hours5 小时后teatime tomorrow明天下午 4 点 (teatime 16:00)noon 4 days4 天后的中午 (noon 12:00)5pm august 3 20262026 年 8 月 3 日下午 5 点 完整时间表达参考/usr/share/doc/at/timespec任务管理命令命令作用atq或at -l查看任务队列at -c job号查看任务详细内容atrm job号或at -d删除任务at -q 字母指定队列 (a~z越靠后优先级越低)权限控制# /etc/at.allow 存在 → 只有文件中的用户能用 at# /etc/at.allow 不存在 → /etc/at.deny 中的用户被禁止# 两个文件都不存在 → 只有 root 能用 at3.2 用户周期性计划任务crontab “每周一早上 9 点生成周报” —— 这种重复执行的活交给crontab。依赖crond服务运行使用crontab命令管理。crontab 语法速查* * * * * command │ │ │ │ │ │ │ │ │ │ │ └── 要执行的命令 │ │ │ │ └─────── 星期几 (0-7, 0和7都表示周日) │ │ │ └──────────── 月份 (1-12) │ │ └───────────────── 几号 (1-31) │ └────────────────────── 小时 (0-23) └─────────────────────────── 分钟 (0-59)时间字段规则符号含义示例*每…* * * * *→ 每分钟x-y范围1-5→ 1 到 5x,y列表1,3,5→ 第 1、3、5*/x每隔 x*/5→ 每隔 5分钟/小时等实战示例# 每年 2 月 2 日上午 9 点运行备份0922* /usr/local/bin/yearly_backup# 7 月每周五 9:00-16:00每 5 分钟响一声*/59-16 * Jul5echoChime# 每个工作日周一至周五23:58 运行日报5823* *1-5 /usr/local/bin/daily_reportcrontab 常用命令命令作用crontab -l查看当前用户的计划任务crontab -e编辑计划任务默认 vicrontab -r删除所有计划任务crontab -u user -eroot 管理其他用户的任务crontab filename从文件导入任务替换现有任务 综合练习编写一个定时监控脚本需求让一个程序运行 20 秒后自动终止在 11 月份的奇数日 11:00-18:00每 2 分钟执行一次。# 1. 编写脚本 /usr/local/bin/myjob#!/bin/bashmd5sum /dev/zero# 后台启动会吃满 CPUsleep20# 等 20 秒pkillmd5sum# 干掉它chmodx /usr/local/bin/myjob# 2. 配置 crontab# */2 11-18 */2 11 *# 解读11 月奇数日11-18 点之间每 2 分钟执行crontab-e*/211-18 */211* /usr/local/bin/myjob 验证方法journalctl -f监控 cron 日志top观察 md5sum 出现又消失。3.3 系统级周期性计划任务系统管理员通过配置文件定义系统级任务crond 从三个地方读取配置文件用途/etc/crontab系统主配置文件比用户 crontab 多一个 “执行用户” 字段/etc/cron.d/第三方应用存放任务的推荐位置不会被更新覆盖/etc/anacrontab定义每日/每周/每月任务保证即使关机也能补执行# /etc/crontab 格式多一个 user-name 字段* * * * * user-namecommand# 示例每小时执行一次 cron.hourly 下的所有脚本01 * * * * root run-parts /etc/cron.hourlyanacron错过不怕醒了就补period(days) delay(min) job-id command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly monthly 45 cron.monthly nice run-parts /etc/cron.monthlyRANDOM_DELAY45会给任务加随机延迟最多 45 分钟防止所有机器同时执行造成负载尖峰。START_HOURS_RANGE3-22限定任务在凌晨 3 点到晚上 10 点之间运行。4. 进程调度管理 操作系统里运行的进程永远比 CPU 核心数多那 Linux 是怎么做到看起来同时运行的答案是——进程调度器。4.1 两类调度器┌────────────────────────────┐ │ Linux 进程调度器 │ └───────────┬────────────────┘ │ ┌───────────────┴───────────────┐ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ 实时调度器 │ │ 非实时调度器 │ │ (抢占力强) │ │ (抢占力弱) │ └──────┬──────┘ └──────┬──────┘ │ │ ┌─────┴─────┐ ┌─────────┼─────────┐ ▼ ▼ ▼ ▼ ▼ SCHED_RR SCHED_FIFO SCHED_NORMAL SCHED_BATCH SCHED_IDLE (轮询) (先入先出) (标准分时) (批处理) (极低优先级)关键结论⚡优先级最低的实时进程 优先级最高的非实时进程实时调度器进程优先级1 ~ 99非实时调度器 nice 值-20最高 ~ 19最低实时调度器安全阀为防止实时进程霸占所有 CPU导致 SSH 都连不上内核有两个保护参数# kernel.sched_rt_period_us 1000000 (1秒CPU分配周期)# kernel.sched_rt_runtime_us 950000 (0.95秒实时进程能用的上限)# → 剩余 0.05 秒留给非实时进程保证系统可响应4.2 管理进程优先级nice renicenice 值规则nice -20 ←──── 优先级最高抢 CPU 最猛 ... nice 0 ←──── 默认值 ... nice 19 ←──── 优先级最低最佛系没有 CPU 资源竞争时nice 值再高的进程也能拿到足够 CPU。只有资源紧张时nice 值才起决定性作用。nice命令启动时设置优先级# 默认 nice 值为 10nicemd5sum /dev/zero# 指定 nice 值nice-n5md5sum /dev/zero# ⛔ 普通用户只能设置正数 nice 值降低自己的优先级nice-n-5md5sum /dev/zero# 报错Permission denied# ✅ root 可以设置任意 nice 值nice-n-10md5sum /dev/zerorenice命令运行时修改优先级# 查看进程 PID 和 nice 值ps-opid,nice,command# 调整 nice 值renice-n555782# 55782 是进程 PID# ⛔ 普通用户只能升高 nice 值降低优先级不能降低renice-n-255782# 普通用户Permission deniedrenice-n-255782# root 用户成功在top中操作在top界面按r键 → 输入 PID → 输入新 nice 值即可动态调整4.3 实时调度策略chrtchrt是操作实时进程调度的利器# 查看各调度策略的优先级范围chrt-m# SCHED_OTHER min/max: 0/0 ← 非实时用 nice 值# SCHED_FIFO min/max: 1/99 ← 实时# SCHED_RR min/max: 1/99 ← 实时# SCHED_BATCH min/max: 0/0# SCHED_IDLE min/max: 0/0# 以 SCHED_RR 策略、优先级 5 启动进程chrt-r5md5sum /dev/zero# 查看进程的调度策略和实时优先级ps-opid,cls,rtprio,command# PID CLS RTPRIO COMMAND# 56225 RR 5 md5sum /dev/zero# 修改为 SCHED_FIFO、优先级 10chrt-f--pid1056225# 改回非实时调度chrt-o--pid0562255. 文件系统基本管理5.1 识别设备和文件系统Linux 中一切皆文件存储设备也不例外接口类型设备名示例SATA/SAS/USB/dev/sda,/dev/sdb虚拟磁盘 (virtio)/dev/vda,/dev/vdbNVMe SSD/dev/nvme0n1,/dev/nvme1n1SD/MMC/dev/mmcblk0,/dev/mmcblk1分区命名规则SATA/dev/sda1,/dev/sda2NVMe/dev/nvme0n1p1,/dev/nvme0n1p2虚拟磁盘/dev/vda1,/dev/vda2三大查看命令命令用途lsblk查看块设备结构树磁盘 → 分区 → LVM → 挂载点df -hT查看文件系统使用情况容量、已用、类型du -sh dir查看目录占用磁盘空间 实战揪出占用磁盘的胖子文件# 问题根分区快满了是谁干的# 方法一逐层排查du-sk/*|sort-n# 看根目录下谁最大 → /usr 最大du-sk/usr/*|sort-n# → /usr/share 最大du-sk/usr/share/*|sort-n# → /usr/share/doc 最大# ... 层层递进最终定位到罪魁祸首# 方法二一步到位查找 100M 的文件find/-size100M2/dev/nullLinux 哲学用各种小工具的灵活组合解决复杂问题而不是一个巨型程序包办一切。5.2 挂载和卸载文件系统挂载mount# 查看设备 UUIDblkid /dev/sdb# 三种挂载方式效果一样mount/dev/sdb /datamountUUIDf20547b2-df53-46e5-b526-a8744be26231/data# 验证df-h/data卸载umountumount/dev/sdb# 按设备卸载umount/data# 按挂载点卸载 “target is busy” 怎么办# umount 提示设备忙说明有进程正在用这个目录# 方法一lsof 查找占用进程lsof/data# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME# bash 1508 root cwd DIR 8,17 156 64 /data# 方法二fuser 查找占用进程fuser-m/data# /data: 1508c ← PID 1508c 表示当前目录在此# 退出目录后重新卸载cd~umount/data5.3 查找文件locate vs find特性locatefind速度⚡ 极快查数据库 实时扫描实时性❌ 依赖 updatedb 更新✅ 实时权限控制只显示用户有权限的需读取和执行权限适用场景按文件名模糊搜索复杂条件组合搜索locate 速查yuminstall-ymlocate updatedb# 先更新数据库locatepasswd# 模糊搜索locate-bpasswd# 只匹配文件名不含路径locate-ipasswd# 忽略大小写locate-cpasswd# 只显示计数locate-rhttp.*conf# 正则匹配find 完全指南find[路径][条件][动作]常用条件条件示例说明-name-name *.log按文件名区分大小写-iname-iname passwd按文件名忽略大小写-type-type d/-type f按类型目录/文件-user/-group-user laoma按属主/属组-perm-perm 764/-perm -4000按权限- 至少满足/ 任意满足-size-size 100M按大小 大于- 小于-mtime-mtime -7按修改时间-7 7天内条件组合# 逻辑与默认find.-name*.log-size1M# .log 文件 且 1M# 逻辑或find/-nouser-o-nogroup# 无属主 或 无属组# 逻辑非find/!-size-200M# 不小于 200M即 ≥200M常用动作# 直接删除find/-name*.tmp-delete# 详细列表find/etc-name*.conf-ls# 对找到的文件执行命令{} 代表找到的文件\; 表示命令结束find/-name*.log-execgzip{}\;# 批量复制find/-inum67160130-execcp-a{}./findfiles\; 今日总结今天的学习覆盖了 Linux 系统管理的四大核心领域┌─────────────────────────────────────────────────────┐ │ Linux 系统管理进阶 │ ├───────────────┬───────────────┬──────────────────────┤ │ 软件管理 │ ⏰ 任务调度 │ ⚙️ 系统底层 │ │ │ │ │ │ • 源码编译安装 │ • at 一次性 │ • 进程调度策略 │ │ • 自建YUM仓库 │ • crontab 周期│ • nice/renice 优先级 │ │ │ • 系统级任务 │ • chrt 实时调度 │ │ │ │ • 文件系统挂载/查找 │ └───────────────┴───────────────┴──────────────────────┘从能用到会用再到精通每一条命令背后都是对系统运行原理的理解。Keep Learning, Keep Hacking!
延伸阅读

更多相关文章

2026/10/29 1:56:08

工程伦理学习指南:从应试到实践,掌握伦理分析框架

1. 从“找答案”到“学方法”:工程伦理学习的本质回归最近在几个技术社区和高校论坛里,看到不少同学在讨论“雨课堂《工程伦理》期末答案”相关的话题。作为一个在工程领域摸爬滚打了十几年,也带过不少实习生、新人的“老油条”,看…

2026/10/31 2:31:06

如何三步搞定微信聊天记录永久保存:WechatBakTool终极备份指南

如何三步搞定微信聊天记录永久保存:WechatBakTool终极备份指南 【免费下载链接】WechatBakTool 基于C#的微信PC版聊天记录备份工具,提供图形界面,解密微信数据库并导出聊天记录。 项目地址: https://gitcode.com/gh_mirrors/we/WechatBakTo…

2026/10/31 12:34:11

SAR图像亮暗机制解析:哨兵1号数据入门与地物判读实战

光学影像看多了,换个口味聊聊雷达图像。这几年遥感圈里有个挺有意思的现象:做地物分类、变化检测、灾害评估的项目,十有八九拿的都是多光谱影像,一提到SAR(合成孔径雷达),不少人第一反应是"…

2026/10/31 12:34:11

企业级AI Agent的核心标准与实践路径

1. 企业级AI Agent的本质差异 最近AI圈里Manus和Moltbot这两个名字确实火得不行,但作为一个在企业IT领域摸爬滚打多年的老鸟,我必须说句大实话:这些看起来很酷的AI Agent,离真正的企业级应用还差着十万八千里。这就像拿玩具车和重…

2026/10/31 12:34:11

CODE V 定焦物镜设计:从规格反推视场角到 MTF 验收全流程

简介:这份文档面向光学设计初学者与工程实践者,围绕CODE V在数码相机定焦镜头设计中的完整流程展开,重点讲解如何建立镜头、缩放镜头以及查看与分析像差曲线。内容以低价位VGA定焦物镜为案例,从规格设定入手,涵盖F/#与…

2026/10/31 12:34:11

60个AI工具终极清单:按场景闭眼入的高效工具手册

去年年底有读者问我,能不能把市面上能打的AI工具整理成一份清单。我当时是拒绝的,因为这种清单我见过太多了,打开一看几百个图标堆在一起,收藏之后再也没有打开过。但这阵子陆续有人私信各种搜索词,比如“免费查AI率工…

2026/10/31 12:34:11

大模型工具调用失败排查指南:从请求构造到结果回传的工程实践

1. 问题现象与影响范围定位 调用工具失败这件事,表面上看是一个报错,实际上背后牵扯的链路比大多数人想象的要长。我前后花了大概三周时间,在多个不同配置的环境里反复复现和定位,才把这个问题彻底吃透。先说结论:绝大…

2026/10/31 12:29:10

大模型智能体沙盒逃逸:国产AI安全架构的四层防御实践

1. 事件复盘:从OpenAI沙盒逃逸到国产模型的共性风险暴露去年底那场OpenAI智能体沙盒逃逸事件,我全程盯了三天。不是因为它是国外的事——恰恰相反,当时我就在调试一个基于某国产大模型API构建的客服智能体,正准备上线灰度测试。结…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑