Linux 计划任务管理与进程调度优先级详解(超全实操教程)

发布时间:2026/7/31 22:32:30

Linux 计划任务管理与进程调度优先级详解(超全实操教程) Linux 计划任务管理与进程调度优先级详解超全实操教程文章目录Linux 计划任务管理与进程调度优先级详解超全实操教程一、一次性计划任务at 服务1\. 核心概念2\. 服务安装与状态检查3. at 命令语法与交互式使用3\.1 基础语法3\.2 交互式实操示例4\. 脚本方式批量执行任务推荐5\. 支持的时间格式timespec6. 任务管理查看、详情、删除6.1 查看任务队列atq / at -l6.2 任务队列优先级a-z 26 级队列6\.3 查看任务详细脚本内容at -c6.4 删除定时任务atrm / at -d7\. 用户权限控制二、周期性计划任务crond 服务1\. 核心概念2. crontab 核心管理命令3\. 定时任务格式详解重中之重4\. 经典实战示例5. 任务导入与用户管理5.1 文件导入定时任务覆盖式5.2 root 管理其他用户任务6\. 综合实操练习经典考题7\. 系统级周期性计划任务7\.1 /etc/crontab系统主配置7.2 /etc/cron.d/自定义任务目录推荐7\.3 /etc/anacrontab容错定时任务三、Linux 进程调度与CPU优先级管理1\. 进程调度原理2\. 实时调度器高优先级核心进程3\. 非实时调度器普通进程默认4. Nice 值优先级非实时进程4\.1 核心规则4.2 权限限制4.3 查看 nice 值4.4 nice 启动指定优先级4.5 renice 动态修改运行进程优先级5\. chrt 实时进程优先级管理6\. 核心优先级结论四、全文总结本文基于 CentOS7 系统完整讲解 Linux 两大核心运维技能一次性计划任务at、周期性计划任务cron以及CPU 进程调度与优先级管理。全文包含原理、命令详解、大量实战案例、权限控制与生产结论适合零基础学习、面试复习与生产落地。一、一次性计划任务at 服务1. 核心概念一次性计划任务指定未来某个时间点执行一次命令/脚本任务执行完成后自动失效仅执行单次。at 功能并非单一命令由两部分组成系统后台守护进程atd负责监听、调度、执行任务交互命令at、atq、atrm、at -c 等用于手动管理任务2. 服务安装与状态检查CentOS 7 最小化安装默认无 at 工具需手动安装# 安装at工具yuminstallat-y# 查看atd服务状态、是否开机自启systemctl status atd正常运行输出示例● atd.service - Job spooling tools Loaded: loaded(/usr/lib/systemd/system/atd.service;enabled;vendor preset: enabled)Active: active(running)since Wed2022-12-2116:54:08 CST;3min 22s ago Main PID:1184(atd)Tasks:1CGroup: /system.slice/atd.service └─1184 /usr/sbin/atd-f3. at 命令语法与交互式使用3.1 基础语法at 时间格式at 从标准输入读取执行命令编辑完成后按CtrlD提交任务按CtrlBackspace删除输入错误内容。3.2 交互式实操示例需求5 分钟后向日志文件写入内容at now 5 minutes# 输入执行命令atechohello world/tmp/hello.log# 按 CtrlD 结束提交自动出现 EOT 标识atEOTjob1at Wed Dec2117:09:0020224. 脚本方式批量执行任务推荐多条复杂命令、脚本执行建议通过文件重定向或-f参数读取脚本避免手动输入出错。# 1. 编写自定义脚本vimmyscript.sh#!/bin/bashdate/tmp/myscript.logechohello myscript/tmp/myscript.log# 2. 重定向方式执行5分钟后运行脚本at now 5 minutesmyscript.sh# 3. -f参数执行100分钟后运行脚本at now 100 minutes-fmyscript.sh5. 支持的时间格式timespecat 支持灵活的时间定义常用格式如下now 5 hours5 小时后执行teatime tomorrow明日 16:00茶点时间noon 4 days4 天后中午 12 点执行5 pm august 3 20262026 年 8 月 3 日下午 5 点执行完整时间规则参考官方文档/usr/share/doc/at/timespec6. 任务管理查看、详情、删除6.1 查看任务队列atq / at -l# 两种命令效果完全一致at-latq6.2 任务队列优先级a-z 26 级队列atd 提供 a-z 共 26 个任务队列字母越靠后任务优先级越低默认使用 a 队列。# 指定b队列执行任务at-qb now 5 minutesmyscript.sh# 仅查看b队列任务at-l-qb6.3 查看任务详细脚本内容at -c# 查看指定ID任务的完整执行脚本at-c任务 ID6.4 删除定时任务atrm / at -d# 两种删除方式atrm 任务ID at-d任务ID# 清空所有任务依次删除所有查询到的任务 ID7. 用户权限控制通过两个配置文件管控用户使用 at 服务的权限优先级规则若/etc/at.allow存在仅文件内用户可使用at 服务务白名单优先若/etc/at.allow不存在读取/etc/at.deny文件内用户被禁止黑名单模式CentOS7 默认状态at.deny为空、无 at.allow所有用户均可使用at 任务。# 查看权限配置文件ls/etc/at.*cat/etc/at.deny二、周期性计划任务crond 服务1. 核心概念周期性计划任务按照分钟、小时、天、月、周循环重复执行命令/脚本是运维自动化核心工具常用于定时备份、日志切割、服务器巡检、数据同步等场景。Cron 体系组成crond 常驻守护进程 crontab 管理命令 系统配置文件。注意若定时任务命令未做输出重定向crond 会将执行日志通过邮件发送给任务所属用户。2. crontab 核心管理命令crontab-l# 查看当前用户所有定时任务crontab-e# 编辑定时任务默认vi编辑器crontab-r# 删除当前用户所有定时任务crontab-u用户名# root专属管理其他用户的定时任务3. 定时任务格式详解重中之重每行任务固定 6 个字段分钟 小时 日期 月份 星期 执行命令字段取值范围分钟0-59小时0-23日期1-31月份1-12 / Jan-Dec星期0-70 和 7 均代表周日/ Sun-Sat通用符号规则*任意时间代表每时每刻都执行x-y连续范围如9-16代表9点到16点x,y离散不连续时间如2,6代表2点、6点*/n间隔执行如*/2每2分钟执行一次4. 经典实战示例# 1. 每年 2 月 2 日 9 点执行年度备份脚本0922* /usr/local/bin/yearly_backup# 2. 7 月每周五 9-16 点每 5 分钟输出一次 Chime*/59-16 * Jul5echoChime# 3. 工作日周一至周五23:58 执行日报脚本5823* *1-5 /usr/local/bin/daily_report# 4. 工作日早 9 点发送工作邮件09* *1-5mutt-sChecking inbossexample.com % Hi boss, just checking in.# 5. 2 点、6-23 点每2分钟记录系统时间*/22,6-23 * * *date/tmp/date.log5. 任务导入与用户管理5.1 文件导入定时任务覆盖式# 1. 编写任务文件vimmycron0922* /usr/local/bin/yearly_backup09* *1-5mutt-sChecking inbossexample.com % Hi boss, just checking in.# 2. 导入任务覆盖当前用户所有原有任务crontabmycron# 3. 查看导入结果crontab-l5.2 root 管理其他用户任务crontab-ulaoma-e# 编辑 laoma 用户定时任务crontab-ulaoma-l# 查看 laoma 用户定时任务crontab-ulaoma-r# 清空 laoma 用户所有定时任务6. 综合实操练习经典考题需求编写脚本11 月奇数日期、11–18 点每 2 分钟执行一次# 1. 编写业务脚本vim/usr/local/bin/myjob#!/bin/bashmd5sum /dev/zero# 后台运行计算任务sleep20# 休眠20秒pkillmd5sum# 终止计算进程# 2. 添加执行权限chmodx /usr/local/bin/myjob# 3. 配置定时任务crontab-e*/211-18 */211* /usr/local/bin/myjob# 4. 监控任务运行journalctl-f# 实时监控cron执行日志top# 监控进程CPU占用状态7. 系统级周期性计划任务用户级任务仅当前用户生效系统级任务由 root 配置全局生效crond 会读取三类系统配置7.1 /etc/crontab系统主配置与用户 crontab 区别多一个执行用户字段可指定任务运行身份cat/etc/crontab# 格式分 时 日 月 周 执行用户 命令* * * * * rootcommand7.2/etc/cron.d/自定义任务目录推荐自定义系统任务统一放此目录避免系统更新覆盖/etc/crontab安全性更高。# 系统默认每小时任务cat/etc/cron.d/0hourly 01 * * * * root run-parts /etc/cron.hourly7.3 /etc/anacrontab容错定时任务CentOS 7 中由 crond 进程接管作用弥补关机错过的定时任务开机自动补执行保障日/周/月任务100%执行。系统固定周期任务目录/etc/cron.daily每日任务/etc/cron.weekly每周任务/etc/cron.monthly每月任务cat/etc/anacrontab# 周期天数 延迟分钟 任务标识 执行命令15cron.dailynicerun-parts /etc/cron.daily725cron.weeklynicerun-parts /etc/cron.weekly monthly45cron.monthlynicerun-parts /etc/cron.monthly三、Linux 进程调度与CPU优先级管理1. 进程调度原理Linux 系统进程数量远大于 CPU 核心数内核通过进程调度器分配 CPU 资源核心调度方式时间片轮转默认 10-20ms 一个时间片进程轮流占用 CPU优先级调度高优先级进程获取更多 CPU 资源低优先级进程受限调度器分为两大类实时调度器、非实时调度器。2. 实时调度器高优先级核心进程用于系统核心、高重要性进程抢占 CPU 能力极强优先级范围1-99数值越大优先级越高。支持两种调度策略SCHED_FIFO先入先出进程不阻塞、不主动让出就持续占用 CPUSCHED_RR时间片轮询同优先级进程均分 CPU 时间片系统保护机制防止实时进程占满 CPUkernel.sched_rt_period_usCPU调度周期默认1秒kernel.sched_rt_runtime_us实时进程最大占用时间默认0.95秒剩余 0.05 秒固定留给普通进程保障系统不卡死、SSH 可正常连接3. 非实时调度器普通进程默认系统绝大多数普通进程使用此调度无实时抢占权限支持三种策略SCHED_NORMALSCHED_OTHER默认时间片轮转策略SCHED_BATCH批量后台任务降低 CPU 竞争频率SCHED_IDLE极低优先级仅系统空闲时执行优先级低于 nice 194. Nice 值优先级非实时进程4.1 核心规则nice 值范围-20 ~ 19默认值 0数值越小优先级越高-20 最高数值越大优先级越低19 最低无CPU竞争时所有进程均可正常占用资源4.2 权限限制普通用户仅可设置正数 nice 值降低进程优先级无法调高优先级root用户可设置 -20~19 所有值自由调整高低优先级4.3 查看 nice 值# 查看系统进程 nice 值ps-onice,cmd$(pgrep systemd)# top 界面查看 NI 列nice 值top4.4 nice 启动指定优先级# 默认 nice10 运行进程nicemd5sum /dev/zero# 普通用户设置正优先级可行nice-n2md5sum /dev/zero# 普通用户设置负优先级权限拒绝nice-n-2md5sum /dev/zero4.5 renice 动态修改运行进程优先级# 普通用户仅能调高 nice 值降低优先级renice-n2进程PID# root 用户调低 nice 值提升优先级renice-n-2进程PID5. chrt 实时进程优先级管理chrt专用于管理实时调度进程仅 root 可操作用于修改进程调度策略与实时优先级。# 查看所有调度策略优先级范围chrt-m# 以RR策略、优先级5运行进程chrt-r5md5sum /dev/zero# 修改为FIFO策略、优先级10chrt-f--pid10进程PID# 恢复为普通非实时进程chrt-o--pid0进程PID6. 核心优先级结论最低优先级的实时进程1优先级 最高优先级的非实时进程-20。生产环境核心服务可配置实时优先级保障高负载下服务稳定性。四、全文总结at一次性任务单次定时执行依赖atd服务支持灵活时间格式、队列优先级、脚本批量执行权限由at.allow/at.deny控制。crond周期性任务循环定时执行分用户级、系统级任务anacrontab可容错补执行是运维自动化核心工具。进程调度分实时/非实时两类调度策略nice值管控普通进程优先级chrt管控实时进程优先级实时进程优先级整体高于普通进程。权限严格区分普通用户仅能降低进程优先级root可自由调整所有进程优先级保障系统安全稳定。

相关新闻