一、单一一次的执行计划(at 命令)
1. 相关包与服务
- 包名:
at-3.1.23-11.el9.x86_64
- 查看是否安装:
rpm -q at
或rpm -qa | grep at
- 服务进程:
atd
(后台运行的守护进程) - 查看服务状态:
ps -aux | grep atd
2. 时间格式
格式 | 示例 |
---|---|
HH:MM | 12:12(指定小时和分钟) |
[HH:MM] yy-mm-DD | 14:30 25-10-19(指定年月日时分) |
am/pm | 4am(上午 4 点) |
now + count time-units | now + 10 minutes(10 分钟后)、now + 2 hours(2 小时后)等,时间单位支持 minutes、hours、days、weeks |
3. 常用选项
选项 | 功能说明 | 等价命令 |
---|---|---|
-l | 列出当前用户的 at 任务 | atq |
-d | 删除指定 at 任务 | atrm |
-c | 查看任务的脚本内容 | - |
-f | 从文件中读取任务命令 | - |
4. 案例
-
交互式创建任务: bash
at 12:12 # 指定执行时间 at> touch 123 # 输入任务命令 at> <EOT> # 按 Ctrl+D 结束输入,任务创建成功
-
非交互式创建任务: bash
# 通过管道直接传递命令 echo "echo 'hello again' >> at.txt" | at now +1 minutes # 从文件读取命令 echo "echo hello again >> at.txt" >> file # 先写入文件 at now +1 minutes -f file # 指定文件执行
5. 相关路径与配置
- 任务文件存储路径:
/var/spool/at
- 白黑名单(控制用户权限):
etc/at.allow
:允许使用 at 命令的用户列表(优先级高)etc/at.deny
:禁止使用 at 命令的用户列表
二、周期性的执行计划(crontab 命令)
1. 相关包与服务
- 包名:
crontabs-1.11-27.20190603git.el9_0.noarch
- 查看是否安装:
rpm -qa | grep crontab
- 服务进程:
crond
- 查看服务状态:
ps -aux | grep crond
2. 时间格式(核心)
格式:分 时 日 月 周
(空格分隔,共 5 个字段)
符号 | 含义 | 示例 |
---|---|---|
* | 匹配所有值(每) | 分钟位为 * 表示每分钟 |
- | 匹配范围 | 小时位 1-3 表示 1 到 3 点 |
/ | 间隔频率 | 分钟位 */10 表示每 10 分钟 |
, | 分割多个对象 | 日位 1,10,20 表示 1、10、20 日 |
3. 常用选项
选项 | 功能说明 |
---|---|
-l | 列出当前用户的 cron 任务 |
-r | 清空当前用户的所有 cron 任务 |
-u | 指定用户(通常 root 使用) |
-e | 编辑当前用户的 cron 任务 |
4. 相关路径与配置
- 任务脚本存储路径:
/var/spool/cron
- 白黑名单(控制用户权限):
etc/cron.allow
:允许使用 crontab 的用户列表(优先级高)etc/cron.deny
:禁止使用 crontab 的用户列表
- 日志文件:
/var/log/cron
(可通过tail -f /var/log/cron
实时查看)
5. 系统级任务与扩展
-
系统级任务配置文件:
/etc/crontab
-
扩展任务计划(
/etc/anacrontab
):适用于非 24 小时开机的系统,格式示例:bash
1 5 cron.daily nice run-parts /etc/cron.daily # 含义:每隔1天,延迟5分钟,执行 /etc/cron.daily 目录下的所有脚本
三、邮件客户端配置(配合定时任务发送通知)
1. 软件与安装
- 软件:
s-nail
(RHEL7 及以上,替代 mailx) - 安装步骤:
-
挂载光盘:
mount /dev/sr0 /mnt
-
配置 yum 源(
/etc/yum.repos.d/base.repo
):ini
[base] name=BaseOS baseurl=file:///mnt/BaseOS gpgcheck=0 [AppStream] name=AppStream baseurl=file:///mnt/AppStream gpgcheck=0 enabled=1
-
安装:
dnf install s-nail -y
-
2. 邮箱配置(/etc/s-nail.rc
)
在文件末尾追加配置(以 163 邮箱为例):
bash
set from=##########@163.com # 发件人邮箱
set smtp=smtp.163.com # SMTP服务器
set smtp-auth-user=##########@163.com # 用户名
set smtp-auth-password=################ # 授权码(非登录密码)
set smtp-auth=login # 认证方式
3. 发送邮件命令
bash
echo "邮件内容" | mail -s "邮件主题" 收件人邮箱
4. 邮件服务端口
- SMTP(发送):25、465
- POP3(接收,离线):110、995
- IMAP(接收,在线):143、993
四、时区设置
bash
timedatectl set-timezone Asia/Shanghai # 设置为上海时区