在使用 Linux 系统时, 我们有时会需要让系统在某个时间去执行特定的任务, 这时就需要去了解 Linux 提供的定时任务功能
种类
Linux 的定时任务分为两种: 单一型和循环型
单一型: at
atd 启动
at: 是一个可以处理仅执行一次就结束的命令, 执行 at 时, 必须开启 atd 服务.
使用
/etc/init.d/atd status
或
systemctl status atd
来查看 atd 服务状态.
如果系统中没有此服务, 可以使用 yum -y install at 来安装. 安装后, 再来查看 atd 状态.
安装后是关闭状态, 执行
systemctl start atd
开启即可.
systemctl enable atd
设置开机启动, 可以使用
systemctl list-unit-files | grep atd
或
systemctl is-enabled atd
来确认是否设置成功
at 执行方式
at 将要执行的工作以文本的方式写入 / var/spool/at / 中, 等待 atd 服务的调用与执行.
可以通过 / etc/at.allow 和 / etc/at.deny 两个文件来管理 at 的使用权限
先查询 / etc/at.allow 文件, 只有存在此文件中的用户才能使用 at
如果 / etc/at.allow 文件不存在, 则寻找 / etc/at.deny, 存在于 / etc/at.deny 中的用户则不能使用 at
如果上述两个文件都不存在, 则只有 root 才能使用 at
/etc/at.allow 的优先级要高于 / etc/at.deny
at 基本用法
使用 man at 可以查看 at 的用法
常用参数:
-m:at 工作完成后, 发送 Email 告知用户工作已完成.
-l:atq 的别名, 列出系统上所有该用户的 at 工作.
-d:atrm 的别名, 取消一个 at 工作.
-v: 使用易读的时间格式列出 at 工作列表.
-c: 列出某项工作的具体内容, 后面要加上某工作的 id, 如 at -c 6
添加任务示例:
删除任务示例:
batch: 系统空闲时才会执行
batch 当 CPU 负载小于 0.8 时, 才会执行设定的工作任务. 添加任务时
不需要指定时间
, 系统会在空闲时自动执行, 其他操作同 at, 如:
循环型: crontab
crond 启动
使用 systemctl start crond 来启动服务
crontab 权限管理
与 at 相似
/etc/cron.allow: 写在其中的账号可以使用 crontab
/etc/cron.deny: 写在其中的账号被禁止使用 crontab
crontab 命令语法
使用 crontab -e 会进入 vi 编辑页面, 一项任务一行:* * * * * command
第一列表示分钟, 取值范围: 0-59,*/30 表示每 30 分钟执行
第二列表示小时,* 代表每个小时都会执行
第三列表示每月的第几天, 取值: 1-31
第四列表示月份, 取值: 1-12
第五列表示每周的第几天, 取值: 0-7,0 和 7 都代表周日
第六列表示要执行的命令
取值除了用 *, 也可以使用, 和 - 表示: 如
10,20,30 * * * 1-5 command
表示在工作日的每 10 分钟, 20 分钟, 30 分钟执行
使用 crontab -l 来查看当前已设定的任务:
使用 crontab -r 删除所有设定的任务, 如果需要删除某项特定的任务, 需使用 crontab -e 进入到编辑页面, 然后删除指定行
来源: https://www.cnblogs.com/feanmy/p/crontab-at.html