别只会yum安装!源码编译|自建YUM仓库|计划任务|进程调度全套实战(CentOS7)
Linux软件包管理、计划任务与进程调度实战CentOS7前言在CentOS7运维工作中除rpm/yum包管理器之外源码编译可以自定义编译参数部署软件自建YUM仓库可以解决内网环境软件安装依赖问题at、crontab实现任务自动化进程调度nice、chrt可以管控CPU资源分配本篇把以上高频实操整理为完整笔记。一、源码安装软件1.1 源码编译 NginxNginx是高性能HTTP以及反向代理Web服务器官方地址https://nginx.org# 安装编译依赖[rootserver~18:39:54]# yum install gcc pcre-devel zlib-devel# 下载源码包[rootserver~18:40:20]# wget https://nginx.org/download/nginx-1.24.0.tar.gz# 解压源码[rootserver~18:42:42]# tar -xf nginx-1.24.0.tar.gz# configure配置编译参数指定安装目录[rootserver~18:42:59]# cd nginx-1.24.0/[rootservernginx-1.24.018:46:10]# ./configure --prefix/usr/local/nginx# make编译 make install安装[rootservernginx-1.24.018:47:31]# make install# 查看安装目录[rootserver~18:47:58]# ls /usr/local/nginx/conf html logs sbin配置环境变量全局直接执行nginx命令# 当前会话临时生效[rootserver~18:48:07]# export PATH$PATH:/usr/local/nginx/sbin/# 写入bashrc永久生效[rootserver~18:48:35]# echo export PATH$PATH:/usr/local/nginx/sbin/ ~/.bashrc基础使用# 启动nginx[rootserver~18:48:52]# nginx# 访问验证[rootserver~18:52:08]# curl -s http://localhost | grep ThankpemThank youforusing nginx./em/p# 优雅停止等待现有请求处理完成[rootserver~18:55:56]# ps -C nginxPID TTY TIME CMD8252? 00:00:00 nginx8253? 00:00:00 nginx[rootserver~18:57:20]# nginx -s quit[rootserver~18:57:53]# ps -C nginxPID TTY TIME CMD# 强制停止nginx-sstop# 重载配置文件nginx-sreload把nginx注册为systemd系统服务# 复制sshd.service模板[rootserver~19:13:48]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/nginx.service[rootserver~19:14:07]# vim /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.target重载systemd设置开机自启同时立刻启动服务[rootserver~19:15:08]# systemctl daemon-reload[rootserver~19:15:27]# systemctl enable nginx.service --now二、自建YUM仓库适用场景内网服务器无法访问互联网本地搭建yum源。整体流程准备rpm软件包 → 创建仓库索引 → web发布 → 客户端配置repo文件测试。2.1 服务端操作# 创建目录存放rpm包[rootserver~19:17:00]# mkdir rpms[rootserver~19:19:22]# cd rpms#下载软件包以及全部依赖到当前目录[rootserverrpms19:19:28]# yum install --downloadonly --downloaddir . vim open-vm-tools vsftpd lrzsz bash-completion nginx httpd mariadb-server#把rpm包移动nginx网页目录[rootserver~19:21:37]# mkdir /usr/local/nginx/html/tools[rootserver~19:21:44]# mv rpms /usr/local/nginx/html/tools/Packages#安装createrepo工具生成仓库元数据索引[rootserver~19:22:48]# yum install -y createrepo[rootserver~19:24:47]# createrepo /usr/local/nginx/html/tools/修改nginx配置开启目录浏览autoindex on[rootserver~19:25:24]# vim /usr/local/nginx/conf/nginx.conf在http{}块内添加http { autoindex on; ...... }重载nginx[rootserver~19:26:40]# systemctl reload nginx2.2 客户端配置验证#备份原有repo仓库文件[rootserver~19:27:01]# mkdir /etc/yum.repos.d/old[rootserver~19:27:58]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old#新建本地仓库repo配置[rootserver~19:28:33]# cat EOF /etc/yum.repos.d/tools.repo[tools]namecentos7 tools from server.laoma.cloudbaseurlhttp://server.laoma.cloud/tools/enabled1gpgcheck0EOF[rootserver~19:32:01]# ls /etc/yum.repos.d/old tools.repo#测试安装软件[rootserver~19:32:13]# yum install -y httpd2.3 仓库同步把远端yum仓库完整同步到本地#同步软件包[rootserver~19:32:24]# reposync --repoidtools#重新生成索引[rootserver~19:32:47]# createrepo tools[rootserver~19:33:03]# ls tools/Packages repodata三、Linux计划任务管理3.1 一次性计划任务 atdat用来执行未来某时间一次性任务依赖后台守护进程atd。#安装at工具[rootserver~19:35:19]# yum install at#查看服务状态确认开机自启[rootserver~19:36:24]# systemctl status atd● atd.service - Job spooling tools Loaded: loaded(/usr/lib/systemd/system/atd.service;enabled;vendor preset: enabled)Active: active(running)since 一2026-07-2710:10:35 CST;2days ago Main PID:1259(atd)CGroup: /system.slice/atd.service └─1259 /usr/sbin/atd-f7月2710:10:35 server.liuyifei.cloud systemd[1]: Started Job spooling tools.基础示例#1分钟之后执行任务输入完成按CtrlD提交任务[rootserver~19:36:45]# at now 1 minutesatechohello world/tmp/hello.log atEOTjob1at Wed Jul2919:39:002026[rootserver~19:39:26]# cat /tmp/hello.loghello world读取脚本执行任务[rootserver~19:39:46]# vim myscript.shdate/tmp/myscript.logechohello myscript/tmp/myscript.log#方式1 重定向[rootserver~19:40:56]# at now 1 minutes myscript.shjob2at Wed Jul2919:42:002026[rootserver~19:41:52]# cat /tmp/myscript.log2026年 07月29日 星期三19:42:00 CST hello myscript#方式2 使用-f参数[rootserver~19:42:09]# at now 100 minutes -f myscript.sh时间语法示例now 5 hours5小时之后teatime tomorrow明天16点noon 4 days4天后中午12点5 pm august 3 2016指定年月日下午5点任务管理命令#查看任务队列 atq等价 at -l[rootserver~19:43:35]# atq#指定队列提交任务 a-z字母越靠后优先级越低[rootserver~19:43:36]# at -q b now 5 minutes myscript.sh#查看任务详情[rootserver~19:43:43]# at -c 3#删除任务 atrm等价 at -d[rootserver~19:43:53]# atrm 3用户权限控制文件/etc/at.allow白名单只有写在此文件内用户允许使用at/etc/at.deny黑名单写在此文件用户禁止使用at规则如果存在at.allow只允许白名单用户如果没有at.allow读取at.deny黑名单内禁止其余全部允许3.2 周期性计划任务 crondcrond守护进程实现循环重复执行任务分为用户级crontab、系统级crontab。用户级 crontab命令说明crontab -l查看当前用户定时任务crontab -e编辑定时任务crontab -r清空当前用户所有定时任务crontab -u 用户名root管理其他用户任务crontab时间格式分钟 小时 日期 月份 星期 命令时间字段符号说明*任意时间x-y连续范围x,y多个离散时间*/n每隔n单位执行示例[rootserver~19:45:16]# export EDITORvim[rootserver~19:46:07]# crontab -e1# For details see man 4 crontabs23# Example of job definition:4# .---------------- minute (0 - 59)5# | .------------- hour (0 - 23)6# | | .---------- day of month (1 - 31)7# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...8# | | | | .---- day of week (0 - 6) (Sunday0 or 7) OR sun,mon,tue,wed,thu,fri, sat9# | | | | |10# * * * * * command to be executed11*14,1510-31 */21-5 /bin/bash /root/myscript.sh bash[rootcentos7 ~22:06:15]# crontab -l*/22,6-23 * * *date/tmp/date.log注意crontab任务标准输出、错误输出默认发送邮件命令建议做重定向。系统级计划任务/etc/crontab系统全局任务格式多一列执行用户字段/etc/cron.d/*.conf推荐自定义系统定时任务防止包更新覆盖/etc/crontab/etc/anacrontab弥补关机错过执行的任务定义daily、weekly、monthly任务/etc/cron.daily每日脚本/etc/cron.weekly每周脚本/etc/cron.monthly每月脚本[rootcentos7 ~22:12:10]# cat /etc/crontab[rootcentos7 ~22:12:35]# cat /etc/anacrontabrun-parts批量执行目录下面所有可执行脚本四、Linux进程调度管理CPU资源少于进程数量时内核调度器分配CPU时间分为实时调度器、非实时调度器。4.1 调度策略实时调度器优先级更高SCHED_FIFO先入先出抢到CPU一直运行直到阻塞或者更高优先级抢占SCHED_RR轮询同等优先级轮流分配时间片非实时调度器绝大多数普通进程SCHED_OTHER(SCHED_NORMAL) 默认时间片轮转SCHED_BATCH 批量后台任务SCHED_IDLE 极低优先级最小优先级实时进程优先级也高于最高优先级普通进程。内核可调参数防止实时进程占满CPUkernel.sched_rt_period_usCPU周期默认1000000us1skernel.sched_rt_runtime_us周期内实时进程最大占用时间默认950000us4.2 nice值普通进程优先级nice范围-20 ~ 19-20优先级最高19优先级最低默认0CPU空闲的时候nice高低不会体现差异只有CPU竞争才生效。#启动进程时设置nice[rootcentos7 ~22:20:12]# nice md5sum /dev/zero #指定调整值[rootcentos7 ~22:20:40]# nice -n 2 md5sum /dev/zero #查看进程nice[rootcentos7 ~22:21:15]# ps -o pid,nice,command#修改已经运行进程nice renice[rootcentos7 ~22:22:02]# renice -n 2 55782#普通用户只能增大nice不能调小root可以任意修改[rootcentos7 ~22:23:10]# renice -n -2 55782top交互界面按r输入PID可以修改nice值。4.3 chrt 修改实时调度策略rootchrt用来查看、修改进程调度策略与实时优先级。#查看允许优先级范围[rootcentos7 ~22:30:10]# chrt -m#以RR策略优先级5运行程序[rootcentos7 ~22:30:42]# chrt -r 5 md5sum /dev/zero #修改正在运行PID为56225进程为FIFO优先级10[rootcentos7 ~22:31:20]# chrt -f --pid 10 56225#改回普通调度SCHED_OTHER[rootcentos7 ~22:31:45]# chrt -o --pid 0 56225#查看进程调度信息[rootcentos7 ~22:32:10]# ps -o pid,cls,rtprio,command 56225总结crontab 计划任务用户级任务使用crontab -l / -e / -r管理格式为分 时 日 月 周 命令日期和星期是逻辑或关系这点极易踩坑。任务输出建议重定向日志避免系统邮件堆积。系统级定时任务优先使用/etc/cron.d/*.confanacron用来弥补关机错过的定时作业run‑parts批量运行目录内脚本。进程调度Linux 分为实时调度策略SCHED_FIFO、SCHED_RR和普通非实时调度所有实时进程优先级高于普通进程。nice控制普通进程优先级范围‑20 ~ 19仅 CPU 竞争时优先级才生效。chrt用来修改进程实时调度策略需要 root 权限top 命令r快捷键可快速修改 nice。实操提醒定时任务尽量全部使用绝对路径不要随意修改实时调度防止系统卡死。

相关新闻

零售业连锁收银软件源头厂家怎么选?

零售业连锁收银软件源头厂家怎么选?

每天面对几百上千笔订单,收银台前的那几秒钟延迟,往往就是排队长龙的开始。对于高客流的连锁门店来说,稳定性不是锦上添花,而是生死线。很多店主在初期为了省钱,随便凑合了一套通用软件,结果随着分店增加&a…

2026/10/17 14:39:23 阅读更多 →
Linux 进程调度与进程优先级管理详解|nice/renice/chrt 实操教程 ⚙️

Linux 进程调度与进程优先级管理详解|nice/renice/chrt 实操教程 ⚙️

Linux 进程调度与进程优先级管理详解|nice/renice/chrt 实操教程 ⚙️ 前言 Linux 服务器同时运行成百上千个进程,CPU 资源有限,内核依靠进程调度器分配 CPU 时间片。不同业务进程重要程度不同,我们可以手动调整进程优先级&#x…

2026/10/16 6:27:16 阅读更多 →
政务 AIGC 落地实践:北软公文助手全功能解析

政务 AIGC 落地实践:北软公文助手全功能解析

政务公文标准化、合规化、高效率是数字政府建设核心诉求,传统人工撰写、校核、排版模式存在格式不规范、政治合规风险、重复工作量大等痛点。基于大模型构建专业化公文智能工具成为行业落地主流方案。本文基于北软 PKUSE 推出的北软公文助手,从底层底座、…

2026/10/16 13:21:20 阅读更多 →

最新新闻

LabVIEW与VisionPro集成实战:从.NET直调到C#中间层方案

LabVIEW与VisionPro集成实战:从.NET直调到C#中间层方案

搞机器视觉集成这些年,"用LabVIEW做流程控制、拿VisionPro干算法活"的组合,我在不止一个项目里见过。LabVIEW 2020的图形化开发环境做交互界面、运动控制和数据流逻辑确实顺手,但真要处理复杂的视觉检测、精密定位、多模板匹配&…

2026/10/18 5:40:42 阅读更多 →
【基于 Swoole+Hyperf 的微服务实战】第十一周·周二:构建异步日志采集与分析系统

【基于 Swoole+Hyperf 的微服务实战】第十一周·周二:构建异步日志采集与分析系统

【基于 SwooleHyperf 的微服务实战】第十一周周二:构建异步日志采集与分析系统今天我们进入第十一周周二,继续构建异步日志采集与分析系统。昨天我们实现了日志接收服务,将日志投递到 Kafka。今天要打造系统的消费与存储能力:编写…

2026/10/18 5:40:42 阅读更多 →
nuScenes数据集深入解析:多模态自动驾驶数据读取与坐标系变换

nuScenes数据集深入解析:多模态自动驾驶数据读取与坐标系变换

简介:面向自动驾驶研究与开发者,这份代码包围绕nuScenes数据集的下载、安装与可视化分析展开,完整梳理了1000个复杂场景、40万关键帧、140万相机图、1400万3D标注框以及多传感器配置和23类目标对象的处理逻辑,可帮助中高级算法工程…

2026/10/18 5:40:42 阅读更多 →
LabelImg 目标检测标注工具安装使用与VOC转YOLO实战

LabelImg 目标检测标注工具安装使用与VOC转YOLO实战

简介:LabelImg 是一款基于 Python Qt 开发的开源目标检测标注工具,本教程 PDF 面向机器学习初学者、算法工程师及数据标注人员,旨在解决目标检测任务中训练数据难以快速准备的问题。文档从环境要求讲起,给出使用清华源安装 label…

2026/10/18 5:40:42 阅读更多 →
x64dbg字符串搜索:逆向调试中的精准定位与实战技巧

x64dbg字符串搜索:逆向调试中的精准定位与实战技巧

做逆向调试,拿到一个陌生程序,很多人的第一反应是跟API、翻反汇编,绕来绕去半小时找不到北。我的习惯恰恰相反——先搜字符串。字符串是程序跟用户“说话”的痕迹,也是开发者留在代码里的路标。x64dbg里的字符串搜索功能&#xff…

2026/10/18 5:40:42 阅读更多 →
栈实现综合计算器:双栈分工与优先级处理详解

栈实现综合计算器:双栈分工与优先级处理详解

栈这个结构,很多人学的时候觉得简单,不就是后进先出嘛,拿个数组或者链表模拟一下,push、pop 一写就完事了。但真到了要拿它解决一个稍微像样点的问题,比如做一个能算加减乘除、带括号、还能处理多位数的计算器&#xf…

2026/10/18 5:39:42 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →