Linux软件包管理+计划任务管理+进程管理
2026/7/30 4:46:31 网站建设 项目流程

文章目录

  • 1.核心知识点 Markdown
    • 一、软件管理
      • 1. 源码安装三步固定流程
      • 2. 自建 YUM 仓库核心要点
    • 二、计划任务(高频考点)
      • 1. at 一次性任务
      • 2. crond 周期性定时任务(重中之重)
    • 三、进程调度(易混淆大题考点)
      • 1. 非实时调度 SCHED_OTHER (TS) Linux 默认
      • 2. 实时调度 SCHED_FIFO / SCHED_RR(仅 root 有权限操作)
  • 2.实操
    • 一、源码编译安装 Nginx
    • 二、源码安装 cmatrix 代码雨工具
    • 三、自建 YUM 本地仓库
      • 服务端操作
      • 客户端操作
    • 四、一次性计划任务 at(依赖 atd 服务)
    • 五、周期性定时任务 crontab(高频考点)
    • 六、进程调度 nice & renice & chrt
      • 6.1 非实时进程 nice/renice
      • 6.2 实时进程 chrt(仅 root 可用)
      • 6.2 实时进程 chrt(仅 root 可用)

1.核心知识点 Markdown

一、软件管理

1. 源码安装三步固定流程

bash

./configure → make → make install
  • --prefix指定软件自定义安装路径
  • export PATH临时环境变量仅当前终端生效;写入~/.bashrc永久生效
  • 源码部署软件需手动编写systemd服务文件,新增 / 修改服务配置后必须执行:

bash

systemctl daemon-reload

2. 自建 YUM 仓库核心要点

  1. 仓库服务端:createrepo扫描 rpm 目录,生成仓库元数据 repodata
  2. Nginx 发布仓库目录配置:autoindex on开启文件目录浏览
  3. 客户端 repo 配置四大核心参数:
    • name:仓库名称描述
    • baseurl:仓库访问地址
    • enabled=1:启用该仓库
    • gpgcheck=0:关闭签名校验(本地仓库必加)
  4. 同步远端完整仓库:reposync拉取全部 rpm 包,再执行createrepo生成本地索引

二、计划任务(高频考点)

1. at 一次性任务

  • 依赖后台服务atd,需保证服务正常运行
  • 使用at 时间进入交互式编辑任务,Ctrl+D结束输入
  • 管理命令:
    • atq / at -l:查看待执行任务
    • atrm / at -d:删除指定任务
  • 用户权限管控文件:/etc/at.allow(白名单)、/etc/at.deny(黑名单)

2. crond 周期性定时任务(重中之重)

  1. 任务标准格式:

    分 时 日 月 周 执行命令

    通配符说明:

    *
    x-y

    范围

    x,y

    列表

    */x

    间隔

  2. 用户级定时

    crontab
    • crontab -e:编辑当前用户定时,保存自动加载,无需重载服务
    • 直接修改/var/spool/cron/用户名/etc/cron.d文件,必须执行systemctl reload crond
    • 配套指令:crontab -l查看、crontab -r清空、crontab -u 用户名管理其他用户任务
  3. 系统级定时

    • /etc/crontab:比用户定时多一列「执行用户」字段
    • /etc/anacrontab:开机补跑关机期间错过的日 / 周 / 月定时任务

三、进程调度(易混淆大题考点)

1. 非实时调度 SCHED_OTHER (TS) Linux 默认

  • nice 取值范围:-20(最高优先级) ~ 19(最低优先级),数值越大 CPU 抢占能力越弱
  • nice:启动进程时直接设置 nice 值
  • renice:修改正在运行进程的 nice
  • 权限限制:普通用户仅能调高 nice;root 可任意修改正负 nice

2. 实时调度 SCHED_FIFO / SCHED_RR(仅 root 有权限操作)

  • 实时优先级区间:1 ~ 99,数字越大优先级越高

  • 优先级规则:所有实时进程优先级 > 全部普通 nice 进程

  • 专属管理命令

    chrt

    无法调整普通进程 nice 值

    • chrt -m:查看全系统调度策略优先级范围
    • chrt --pid:修改已运行进程调度策略
    • chrt -o:切换回 SCHED_OTHER 普通分时调度
  • 查看调度信息专用指令:

bash

ps -o pid,cls,rtprio

普通非实时进程RTPRIO列显示-

2.实操

一、源码编译安装 Nginx

bash

# 安装编译nginx所需依赖包:gcc编译器、make编译工具、pcre正则库、zlib压缩库 [root@centos7 ~]# yum install gcc make pcre-devel zlib-devel # 官网下载nginx源码压缩包 [root@centos7 ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz # 解压源码包,不创建多余目录层级 [root@centos7 ~]# tar -xf nginx-1.24.0.tar.gz # 进入解压后的源码目录 [root@centos7 ~]# cd nginx-1.24.0/ # ★重点考点:源码安装第一步configure,--prefix 指定软件安装根目录 [root@centos7 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx # ★重点考点:第二步编译、第三步安装,合并执行 make && make install [root@centos7 nginx-1.24.0]# make && make install # 查看nginx安装目录下生成的文件夹:conf配置、html网站根目录、logs日志、sbin程序 [root@centos7 ~]# ls /usr/local/nginx/ conf html logs sbin # 临时配置环境变量,仅当前终端生效,可直接执行nginx命令 [root@centos7 nginx-1.24.0]# export PATH=$PATH:/usr/local/nginx/sbin/ # ★重点考点:写入.bashrc实现环境变量永久生效 [root@centos7 nginx-1.24.0]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >> ~/.bashrc # 启动nginx服务 [root@centos7 ~]# nginx # curl访问本地80端口,过滤nginx欢迎字符验证服务正常运行 [root@centos7 ~]# curl -s http://localhost | grep Thank <p><em>Thank you for using nginx.</em></p> # 优雅停止nginx,等待现有请求处理完成再关闭进程 [root@centos7 ~]# nginx -s quit # 复制sshd的systemd服务文件作为模板,修改为nginx服务 [root@centos7 ~]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/nginx.service [root@centos7 ~]# vim /etc/systemd/system/nginx.service

nginx.service 配置文件

ini

[Unit] Description=Nginx server daemon [Service] Type=forking 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] WantedBy=multi-user.target

bash

# ★重点考点:新增/修改systemd服务文件后必须重载systemd管理器 [root@centos7 ~]# systemctl daemon-reload # ★重点考点:--now 参数同时实现开机自启 + 立即启动服务 [root@centos7 ~]# systemctl enable nginx.service --now

二、源码安装 cmatrix 代码雨工具

bash

# 安装编译依赖:gcc编译工具、autoconf自动配置工具、ncurses终端字符图形库 [root@centos7 ~]# yum -y install gcc make autoconf ncurses-devel # 从本地课堂服务器下载cmatrix源码包 [root@centos7 ~]# wget http://192.168.50.200/class/course-materials/softwares/stage01/cmatrix-1.2.tar.gz # 解压源码包 [root@centos7 ~]# tar -xf cmatrix-1.2.tar.gz # 进入源码目录 [root@centos7 ~]# cd cmatrix-1.2/ # ★重点考点:configure指定自定义安装路径 [root@centos7 cmatrix-1.2]# ./configure --prefix=/usr/local/cmatrix # ★重点考点:编译安装组合命令 [root@centos7 cmatrix-1.2]# make && make install # 临时添加程序目录到环境变量 [root@centos7 ~]# export PATH=$PATH:/usr/local/cmatrix/bin # 查看cmatrix所有参数帮助文档 [root@centos7 ~]# cmatrix --help # 直接运行代码雨默认效果 [root@centos7 ~]# cmatrix # -b加粗字体,-u 3刷新速度,-C red指定红色字体 [root@centos7 ~]# cmatrix -b -u 3 -C red

三、自建 YUM 本地仓库

服务端操作

bash

# 创建存放rpm包的目录 [root@server ~]# mkdir rpms # 进入rpm包目录 [root@server ~]# cd rpms # ★重点考点:--downloadonly 只下载不安装,批量下载软件及全部依赖 [root@server rpms]# yum install --downloadonly --downloaddir . vim open-vm-tools vsftpd lrzsz bash-completion nginx httpd mariadb-server # 创建nginx网站发布目录 [root@server ~]# mkdir /usr/local/nginx/html/tools # 将所有rpm包移动到网站目录下Packages文件夹 [root@server ~]# mv rpms /usr/local/nginx/html/tools/Packages # 安装生成仓库索引的工具createrepo [root@server ~]# yum install -y createrepo # ★重点考点:扫描rpm目录,生成仓库元数据repodata,仓库必备 [root@server ~]# createrepo /usr/local/nginx/html/tools/ # 编辑nginx主配置文件 [root@server ~]# vim /usr/local/nginx/conf/nginx.conf

nginx.conf 片段

nginx

http { # ★重点考点:autoindex on 开启目录浏览,浏览器可直接列出rpm包 autoindex on; ...... }

bash

# 重载nginx,不中断服务加载新配置 [root@server ~]# systemctl reload nginx

客户端操作

bash

# 创建旧仓库备份文件夹 [root@client ~]# mkdir /etc/yum.repos.d/old # 把系统原有repo仓库文件全部移走备份 [root@client ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old # ★重点考点:自定义repo仓库配置四大核心参数(简答题默写) [root@client ~]# cat << 'EOF' > /etc/yum.repos.d/tools.repo [tools] name=centos7 tools from server.laoma.cloud baseurl=http://server.laoma.cloud/tools/ enabled=1 gpgcheck=0 EOF # 查看客户端仓库文件 [root@client ~]# ls /etc/yum.repos.d/ old tools.repo # 使用自建仓库安装httpd测试 [root@client ~]# yum install -y httpd # ★重点考点:同步远端仓库所有rpm包到本地 [root@client ~]# reposync --repoid=tools # 同步完成后重新生成本地仓库索引 [root@client ~]# createrepo tools [root@client ~]# ls tools/ Packages repodata

四、一次性计划任务 at(依赖 atd 服务)

bash

# 安装at工具包 [root@centos7 ~]# yum install at # 查看atd后台服务运行状态 [root@centos7 ~]# systemctl status atd # 5分钟后执行任务,进入交互式输入界面 [root@centos7 ~]# at now +5 minutes # 任务内容:输出文本写入日志文件 at> echo hello world > /tmp/hello.log # Ctrl+D结束输入,自动生成<EOT>标记 at> <EOT> # 编写任务脚本 [root@centos7 ~]# vim myscript.sh #!/bin/bash date >> /tmp/myscript.log echo hello myscript >> /tmp/myscript.log # 重定向脚本给at,5分钟后执行 [root@centos7 ~]# at now +5 minutes < myscript.sh # -f 指定脚本文件,100分钟后执行 [root@centos7 ~]# at now +100 minutes -f myscript.sh # ★重点考点:atq / at -l 两种方式查看待执行任务队列 [root@centos7 ~]# at -l [root@centos7 ~]# atq # -q b 指定使用b队列创建任务 [root@centos7 ~]# at -q b now +5 minutes < myscript.sh # 只查看b队列任务 [root@centos7 ~]# at -l -q b # -c 加任务编号,查看任务完整执行脚本 [root@centos7 ~]# at -c 3 # ★重点考点:atrm / at -d 删除指定编号任务 [root@centos7 ~]# atrm 3

五、周期性定时任务 crontab(高频考点)

bash

# 自定义编辑器为vim [laoma@centos7 ~]$ export EDITOR=vim # ★重点考点:编辑当前用户定时任务,保存自动生效无需reload [laoma@centos7 ~]$ crontab -e # ★重点考点:定时语法:分 时 日 月 周 命令 */2 2,6-23 * * * date >> /tmp/date.log # ★重点考点:crontab -l 查看当前用户定时任务 [laoma@centos7 ~]$ crontab -l # 实时跟踪日志,验证定时任务输出 [laoma@centos7 ~]$ tail -f /tmp/date.log # ★重点考点:crontab -r 清空当前用户全部定时任务 [laoma@centos7 ~]$ crontab -r # root用户 -u 指定laoma,管理其他用户定时 [root@centos7 ~]# crontab -u laoma -e # 从本地文件导入定时任务,覆盖原有任务 [laoma@centos7 ~]$ crontab mycron # 定时练习脚本 [root@server ~ 11:16:02]# vim /usr/local/bin/myjob #!/bin/bash md5sum /dev/zero & sleep 20 pkill md5sum # ★重点考点:脚本必须赋予执行权限才能被cron运行 [root@server ~ 11:18:23]# chmod +x /usr/local/bin/myjob # 编辑定时任务 [root@server ~ 11:21:22]# crontab -e # 11月奇数日期,11-18点每2分钟执行脚本 [root@server ~ 11:22:35]# crontab -l */2 11-18 */2 11 * /usr/local/bin/myjob # 实时监控cron系统日志 journalctl -f # 实时查看进程占用 top

六、进程调度 nice & renice & chrt

6.1 非实时进程 nice/renice

bash

# 后台运行md5sum消耗CPU,默认nice=0 [laoma@centos7 ~]$ md5sum /dev/zero & # $$ 代表当前shell进程PID,同时查看shell和md5sum的nice值 [laoma@centos7 ~]$ ps -o pid,nice,command $$ 55725 # ★重点考点:nice 启动进程时设置优先级,默认+10 [laoma@centos7 ~]$ nice md5sum /dev/zero & # 普通用户无法设置负nice,权限拒绝 [laoma@centos7 ~]$ nice -n -2 md5sum /dev/zero & # 普通用户仅能设置正数nice [laoma@centos7 ~]$ nice -n 2 md5sum /dev/zero & # ★重点考点:renice 修改正在运行进程的nice值 [laoma@centos7 ~]$ renice -n 2 55782 # 普通用户降低nice(提高优先级)权限不足 [laoma@centos7 ~]$ renice -n -2 55782 # root可任意修改nice为负数 [root@centos7 ~]# renice -n -2 55782 # 批量杀死所有md5sum进程 [laoma@centos7 ~]$ pkill md5sum

6.2 实时进程 chrt(仅 root 可用)

bash

# ★重点考点:-m 查看系统所有调度策略的优先级区间 [root@centos7 ~]# chrt -m # -r RR调度,优先级5,后台运行md5sum实时进程 [root@centos7 ~]# chrt -r 5 md5sum /dev/zero & # ★重点考点:ps查看调度类型、实时优先级 [root@centos7 ~]# ps -o pid,cls,rtprio,command 56225 # -f FIFO策略,--pid修改已有运行进程 [root@centos7 ~]# chrt -f --pid 10 56225 # ★重点考点:-o 切换回普通非实时SCHED_OTHER调度 [root@centos7 ~]# chrt -o --pid 0 56225 # 普通进程RTPRIO显示横线- [root@centos7 ~]# ps -o pid,cls,rtprio,command 56225 centos7 ~]$ pkill md5sum

6.2 实时进程 chrt(仅 root 可用)

bash

# ★重点考点:-m 查看系统所有调度策略的优先级区间 [root@centos7 ~]# chrt -m # -r RR调度,优先级5,后台运行md5sum实时进程 [root@centos7 ~]# chrt -r 5 md5sum /dev/zero & # ★重点考点:ps查看调度类型、实时优先级 [root@centos7 ~]# ps -o pid,cls,rtprio,command 56225 # -f FIFO策略,--pid修改已有运行进程 [root@centos7 ~]# chrt -f --pid 10 56225 # ★重点考点:-o 切换回普通非实时SCHED_OTHER调度 [root@centos7 ~]# chrt -o --pid 0 56225 # 普通进程RTPRIO显示横线- [root@centos7 ~]# ps -o pid,cls,rtprio,command 56225

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询