计划任务

Linux 可以自动执行某些工作,包括一次性计划和周期计划

准备


atd 服务不是默认开启的,在某些版本 Linux 上需要手动开启(需要 root 身份)

[root@qmmms ~]# systemctl restart atd
[root@qmmms ~]# systemctl enable atd
[root@qmmms ~]# systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2022-10-01 15:28:38 CST; 1min 20s ago
 Main PID: 5681 (atd)
   CGroup: /system.slice/atd.service
           └─5681 /usr/sbin/atd -f

Oct 01 15:28:38 qmmms systemd[1]: Started Job spooling tools.

使用at命令需要权限,权限处理流程如下:

  1. 如果/etc/at.allow文件存在,则只有这个文件里面的用户可以使用at命令

  2. 如果/etc/at.allow文件不存在,并且/etc/at.deny文件存在,那么只有/etc/at.deny文件里面的用户不能使用at命令

  3. 上面的文件都不存在,只有root可以使用at命令

使用crontab命令需要权限,流程与at命令相似,配置文件为/etc/cron.allow/etc/cron.deny

一次性计划任务


创建一次性计划任务

格式:

参数:

  • -m:在计划完成后,给用户发一封邮件通知已完成

时间格式:

  • HH:MM

  • HH:MM YYYY-MM-DD

  • 其他例子:04pm July 30now + 5 minutes04pm + 3 days

注意:

  • 之后键入具体要执行的命令,这些命令会在预定的时间执行,注意按[Ctrl+d]作为结束

  • 计划任务由系统自动执行,无论用户是否登录

  • 计划任务命令使用独立的shell,环境与用户bash不同,建议命令和文件使用绝对路径

    提醒:查找命令绝对路径:which 命令

  • 同上,echo命令的输出需要重定向到用户终端窗口

    提醒:查看用户终端窗口:tty

例子:

管理一次性计划任务

  • atqat -l:列出一次性计划任务

  • at -c 任务号码:列出任务的详细内容

  • atrm 任务号码at -d 任务号码:删除任务

周期计划任务


基本管理命令

格式:

参数:

  • -e:进入编辑页面

  • -l:查看内容

  • -r:删除所有任务,若删除一项请crontab -e进入编辑

任务内容格式

crontab -e后会进入编辑页面,每一行代表一个任务,一行的格式为

关于特殊字符意义:

字符
意义

*

任意

,

-

范围

/n

每n个单位

例子:

系统计划任务


对于不是针对用户,而是针对系统的计划任务,直接编辑/etc/crontab文件

如注释所示,会多出一个user-name字段,代表以哪个身份执行

最后更新于