1.如何调度延迟的用户任务?
- at 软件包包含 atd守护进程,和一组命令(at、atq等)。在默认的 RHEL 安装过程中,将自动安装并启用 atd守护进程。
- root 及普通用户可以使用 at 命令创建计划任务,atd守护进程提供 a-z 共 26个队列,按字母排序,越后面的队列优先级越低。
使用 at <时间> -f <脚本或命令> 命令指定在未来某个时间点执行任务。常见的时间格式:
now + 5 minutes
:当前时间加上 5 分钟。now + 1 hour
:当前时间加上 1 小时。02:00 PM
:指定某个具体时间。midnight
:今天午夜(00:00)。
使用 atq 或 at -l命令查看用户的待处理作业。
2.如何调度定期任务?
crond守护进程管理周期性作业,由 cronie软件包提供,默认安装并启动。crond守护进程读取多个配置文件,crontab 命令编辑配置文件。
- crontab -l 列出当前用户的计划作业。
- crontab -r 删除当前用户的所有作业。
- crontab -e 编辑当前用户的作业。
- crontab filename 删除所有作业,将文件中的任务添加到当前用户的 cron 表中。如果没有指定文件,系统会自动打开默认编辑器,允许你直接编辑和管理当前用户的 cron 表。
- crontab -u 管理其他用户的作业。 不推荐 crontab 命令来管理系统作业。
3. crontab 文件中的用户作业时间格式怎么解释?
crontab 的字段格式是:分 时 日 月 周 命令。
-
* 表示始终
-
数字可用于指定分钟数或小时数、日期或者工作日
-
x-y 表示范围,x 到 y(含)
-
x,y表示列表,列表也可以包含范围
-
*/x 表示 x 的时间间隔
4. 如果需要以当前用户身份计划周期性作业,在上午8点到晚上9点之间每两分钟一次输出当前日期和时间,该作业只能在周一到周五运行,周六或周日不能运行。要怎么做?
首先使用命令:crontab -e ,打开cron配置,然后添加 */2 8-21 * * 1-5 date 。
5. 要计划周期性系统作业,应该将自定义的crontab文件放入哪个位置?
放在 /etc/cron.d目录下。
6.如何使用 systemd
定时调度任务?
systemd
作为现代 Linux 系统的初始化系统,它提供了比传统的 cron
更加灵活和强大的定时任务管理方式,适合需要系统级别任务调度的情况。systemd
通过 timer 和 service 单元来实现定时任务调度。
(1)在/etc/systemd/system目录下,为你想要定时执行的任务创建一个 systemd 服务单元(.service),完成后重新加载systemd配置:systemctl daemon-reload。
(2)在/etc/systemd/system目录下,创建一个 systemd 定时器(.timer),完成后重新加载systemd配置:systemctl daemon-reload。
(3)启动并启用定时器:systemctl start myscript.timer;systemctl enable myscript.timer