南山商城网站建设多少钱,室内设计师网络接单,WordPress批量修改图片大小,wordpress 多站点 主题Ubuntu 22.04中的任务计划详解
任务计划#xff08;或称为作业调度#xff09;是系统管理中不可或缺的一部分#xff0c;它允许我们在指定的时间或周期性地自动执行命令或脚本#xff0c;从而实现自动化运维。Ubuntu 22.04主要提供了两种任务计划工具#xff1a;at#x…Ubuntu 22.04中的任务计划详解任务计划或称为作业调度是系统管理中不可或缺的一部分它允许我们在指定的时间或周期性地自动执行命令或脚本从而实现自动化运维。Ubuntu 22.04主要提供了两种任务计划工具at用于执行一次性任务和cron用于执行周期性任务。1. 简单的定时at命令at命令用于安排一个任务在未来的某个特定时间点执行一次。执行完毕后该任务便会从队列中消失。1.1at命令的使用知识点:在使用at之前需要确保atd服务atdaemon正在运行。该服务负责读取并执行at队列中的任务。安装部署与详细步骤:步骤 1: 安装并启动atd服务at命令通常默认已安装但atd服务可能未启动。# 安装 at 软件包如果未安装$sudoaptupdate $sudoaptinstallat# 启动 atd 服务$sudosystemctl start atd# 设置 atd 服务开机自启$sudosystemctlenableatd# 检查 atd 服务状态$sudosystemctl status atd# 应该看到 active (running) 的字样步骤 2:at命令的语法与使用方法语法知识点:at的时间指定方式非常灵活绝对时间:HH:MM(如17:00),MMDDYY,MM/DD/YY,DD.MM.YY相对时间:now 时间单位(如now 5 minutes,tomorrow,next week)特殊时间:midnight(午夜),noon(中午),teatime(下午4点)案例代码:案例 1: 交互式添加任务# 在今天下午5点整发送一个提醒$ at17:00# warning: commands will be executed using /bin/sh# at echo 该去开会了 | mail -s 会议提醒 your_emailexample.com# at EOT # 按下 CtrlD 结束输入# job 3 at Tue May 21 17:00:00 2024# job 3 是任务编号案例 2: 通过管道添加任务# 在1分钟后创建一个包含当前日期和时间的文件$echodate /tmp/current_time.txt|at now 1minute# 在明天午夜执行一个备份脚本$echo/home/user/scripts/backup.sh|at midnight案例 3: 从文件读取任务如果任务很复杂可以将其写入脚本文件然后让at执行该脚本。# 创建一个任务脚本$nanomy_at_task.sh# --- 文件内容 ---# #!/bin/bash# tar -czf /backups/home_$(date \%F).tar.gz /home# echo 备份完成: /backups/home_$(date \%F).tar.gz | mail -s 备份成功 your_emailexample.com# --- 文件结束 ---# 让at在明天凌晨3点执行这个脚本$ at-fmy_at_task.sh 03:00 tomorrow# -f 选项后跟脚本文件名步骤 3: 管理at任务# 查看待执行的 at 任务队列$ atq# 或 at -l# 输出示例:# 3 Tue May 21 17:00:00 2024 a user# 4 Wed May 22 03:00:00 2024 a user# 格式: [任务号] [执行时间] [队列] [用户]# 删除一个待执行的任务 (使用任务号)$ atrm3# 或 at -d 3# 再次查看任务3已被删除$ atq# 4 Wed May 22 03:00:00 2024 a user1.2 定时备份系统文件这是一个at命令的典型应用场景。安装部署与详细步骤:步骤 1: 创建备份脚本# 创建一个目录存放脚本$mkdir-p~/scripts $nano~/scripts/system_backup.sh案例代码 (~/scripts/system_backup.sh):#!/bin/bash# 定义备份目录和源目录BACKUP_DIR/var/backups/manualSOURCE_DIR/etcDATE$(date%F_%H-%M-%S)# 创建备份目录如果不存在mkdir-p$BACKUP_DIR# 执行备份使用tar打包并压缩# -c: 创建, -z: gzip压缩, -f: 指定文件名, -p: 保留权限tar-czpf$BACKUP_DIR/etc_backup_$DATE.tar.gz$SOURCE_DIR# 检查上一条命令是否成功if[$?-eq0];thenecho系统配置文件备份成功:$BACKUP_DIR/etc_backup_$DATE.tar.gzelseecho备份失败2# 将错误信息输出到标准错误fi步骤 2: 给脚本添加执行权限$chmodx ~/scripts/system_backup.sh步骤 3: 使用at安排备份任务# 安排在今晚11点执行备份$ at-f~/scripts/system_backup.sh23:002. 控制计划任务的命令crontabcron是一个用于执行周期性任务的守护进程。crontab命令则是用来管理每个用户的cron任务列表即 crontab 文件的工具。2.1crontab的原理知识点:cron守护进程 (crond) 在系统启动时自动运行每分钟都会检查一次/etc/crontab文件以及/var/spool/cron/crontabs/目录下的文件。/var/spool/cron/crontabs/目录中每个用户都有一个以自己用户名命名的文件该文件记录了该用户的所有cron任务。crontab命令就是用来编辑这些文件的避免了直接修改带来的语法错误风险。2.2crontab的使用语法知识点:crontab命令的常用选项crontab -e: 编辑当前用户的crontab文件。首次使用会提示选择编辑器如nano。crontab -l: 列出当前用户的所有cron任务。crontab -r: 删除当前用户的所有cron任务慎用。crontab -u 用户名 -e: 以root身份编辑指定用户的crontab文件。cron任务的时间格式核心知识点:一个cron任务行由6个字段组成前5个是时间字段最后一个是命令。.---------------- 分钟 (0 - 59) | .------------- 小时 (0 - 23) | | .---------- 日 (1 - 31) | | | .------- 月 (1 - 12) | | | | .---- 星期 (0 - 6) (星期0星期天) | | | | | * * * * * 要执行的命令特殊字符:*: 任意值。例如在分钟字段使用*表示每分钟。,: 分隔多个值。例如1,3,5在小时字段表示第1、3、5小时。-: 表示范围。例如1-5在星期字段表示星期一到星期五。/: 表示步长。例如*/10在分钟字段表示每10分钟。案例代码:案例 1: 编辑和管理crontab# 编辑当前用户的cron任务$crontab-e# 当第一次运行时可能会出现以下提示# no crontab for user - using an empty one# Select an editor. To change later, run select-editor.# 1. /bin/nano ---- easiest# 2. /usr/bin/vim.basic# 3. /usr/bin/vim.tiny# 4. /bin/ed# Choose 1-4 [1]: 1 # 选择1nano# 列出当前用户的cron任务$crontab-l# 删除当前用户的所有cron任务 (会要求确认)$crontab-r案例 2: 添加具体的周期性任务在crontab -e打开的编辑器中添加以下行# 每15分钟同步一次时间*/15 * * * * /usr/sbin/ntpdate-stime.nist.gov# 每天凌晨2点30分执行备份脚本302* * * /home/user/scripts/system_backup.sh/var/log/my_backup.log21# 每周一上午9点发送一封周报邮件09* *1mail-s周报managerexample.com/home/user/weekly_report.txt# 每月的1号和15号清空/tmp目录下的临时文件 (谨慎使用)001,15* *find/tmp-typef-atime7-delete# 每小时的第5分钟检查磁盘空间5* * * *df-h|mail-s磁盘空间报告adminexample.com注释: /var/log/my_backup.log 21: 这是一个非常重要的重定向。: 将标准输出追加到日志文件。21: 将标准错误也重定向到标准输出这样错误信息也会被写入日志文件。mail -s 主题 收件人 文件: 将文件内容作为邮件正文发送。2.3 任务配置文件介绍除了用户自己的crontab文件还有系统级的cron配置文件。知识点:/etc/crontab: 系统主cron配置文件。它和用户crontab文件格式略有不同多了一个“用户”字段。# /etc/crontab: system-wide crontab # ... (注释) SHELL/bin/sh PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # ... (其他环境变量) # # m h dom mon dow user command 17 * * * * root cd / run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / run-parts --report /etc/cron.monthly )run-parts: 一个命令它会执行指定目录下的所有可执行脚本。这意味着你可以把需要每天、每周、每月执行的脚本分别放到/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly目录下系统会自动执行。/etc/cron.d/: 这个目录用于存放系统级的cron任务文件。你可以在这里创建一个新的配置文件格式和/etc/crontab一样需要指定用户。这比直接修改/etc/crontab更规范。/etc/cron.allow和/etc/cron.deny:这两个文件用于控制哪些用户可以使用crontab命令。如果cron.allow存在只有列在其中的用户才能使用crontabcron.deny被忽略。如果cron.allow不存在但cron.deny存在则除了列在cron.deny中的用户外其他用户都可以使用crontab。如果两个文件都不存在只有root用户可以使用crontab在Ubuntu等Debian系系统中默认允许所有用户使用。3. 小结本章详细介绍了Ubuntu 22.04中两种核心的任务计划工具at和crontab。at命令简单直观非常适合安排一次性的未来任务如延迟执行、定时提醒等。关键在于掌握其灵活的时间指定方法和任务队列管理atq,atrm。crontab命令功能强大是实现周期性自动化任务的标准工具。核心在于理解其五字段时间格式的语法并学会正确地重定向输出和错误。同时了解系统级的配置文件/etc/crontab,/etc/cron.d/和目录/etc/cron.daily有助于更好地管理整个系统的自动化任务。合理运用at和cron可以将系统管理员从重复、琐碎的日常工作中解放出来极大地提高工作效率和系统的可靠性。