服务:放入后台,脱离终端运行
at 突发性一次计划
crontab 周期性循环计划
检查at服务是否启动开启,是否开机自启动
## 安装at[root@localhost ~]# rpm -qa |grep ^at[root@localhost ~]# yum -y install at## 启动atd$ systemctl start atd #启动atd服务$ systemctl state atd #检查atd服务状态[root@localhost ~]# systemctl state atdUnknown operation 'state'.[root@localhost ~]# systemctl status atd● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since 二 2022-09-20 19:29:39 CST; 1min 47s ago Main PID: 18716 (atd) CGroup: /system.slice/atd.service └─18716 /usr/sbin/atd -f9月 20 19:29:39 localhost.localdomain systemd[1]: Started Job spooling tools.## systemctl is-enabled atd #是否开机运行[root@localhost ~]# systemctl is-enabled atdenabled## systemctl disable 服务 #服务停用开机自启动## systemctl enable 服务 #服务启用开机自启动## 启动、自启动atd[root@localhost ~]# systemctl enable atd --now## at 时间 #交互式设置定时任务[root@localhost ~]# at now+2minat>## at 时间 < a.txt #(重定向设置)在某个时间设置定时任务为a.txt文件内容的命令[root@localhost ~]# lsanaconda-ks.cfg yq.txt[root@localhost ~]# at now+1min < yq.txtjob 8 at Tue Sep 20 20:00:00 2022[root@localhost ~]# lsanaconda-ks.cfg yq.txt[root@localhost ~]# date2022年 09月 20日 星期二 20:00:02 CST[root@localhost ~]# lsanaconda-ks.cfg yq yq.txt常见的at时间设置
[root@localhost ~]# at 20:00 2023-10-1 #设置定时任务在2023年10月2日at> <EOT>job 11 at Sun Oct 1 20:00:00 2023[root@localhost ~]# at now+1min #设置定时任务在现在的1分钟以后at> <EOT>job 12 at Tue Sep 20 20:13:00 2022[root@localhost ~]# at 17:00 tomorrow #设置定时任务在明天的17点at> <EOT>job 13 at Wed Sep 21 17:00:00 2022[root@localhost ~]# at 6:00 pm +3 days #设置定时任务在三天后的下午6点at> <EOT>job 14 at Fri Sep 23 18:00:00 2022at -l #查看所有at设置的定时任务
[root@localhost ~]# at -l10 Tue Sep 20 20:15:00 2022 a rootatq #查看所有at设置的定时任务
[root@localhost ~]# atq10 Tue Sep 20 20:15:00 2022 a root注:只能查看未执行的定时任务,已经完成的不会显示
## at -c 数字 #查看指定条数的定时任务(普通用户)[root@localhost ~]# at -c 10#!/bin/sh# atrun uid=0 gid=0# mail root 0umask 22XDG_SESSION_ID=24; export XDG_SESSION_IDHOSTNAME=localhost.localdomain; export HOSTNAMESELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTEDSHELL=/bin/bash; export SHELLHISTSIZE=1000; export HISTSIZESSH_CLIENT=192.168.18.1\ 3074\ 22; export SSH_CLIENTSELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGESSH_TTY=/dev/pts/1; export SSH_TTYUSER=root; export USERLS_COLORS=rs=0:di=01\;34:ln=0...MAIL=/var/spool/mail/root; export MAILPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATHPWD=/root; export PWDLANG=zh_CN.UTF-8; export LANGSELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTEDHISTCONTROL=ignoredups; export HISTCONTROLSHLVL=1; export SHLVLHOME=/root; export HOMELOGNAME=root; export LOGNAMESSH_CONNECTION=192.168.18.1\ 3074\ 192.168.18.134\ 22; export SSH_CONNECTIONLESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPENXDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIRcd /root || { echo 'Execution directory inaccessible' >&2 exit 1}${SHELL:-/bin/sh} << 'marcinDELIMITER6d749ca8'init 6 #设置的定时任务marcinDELIMITER6d749ca8## ls /var/spool/at/ #以文件形式查看定时任务(root用户)[root@localhost ~]# ls /var/spool/ata0000a01a7183f spool atrm 数字 #普通用户删除定时任务 rm -rf /var/spool/at/文件名 #root用户删除定时任务[root@localhost ~]# systemctl status crond● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since 二 2022-09-20 18:37:10 CST; 1h 42min ago Main PID: 6121 (crond) CGroup: /system.slice/crond.service └─6121 /usr/sbin/crond -n9月 20 18:37:10 localhost.localdomain systemd[1]: Started Command Scheduler.9月 20 18:37:10 localhost.localdomain crond[6121]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.)9月 20 18:37:11 localhost.localdomain crond[6121]: (CRON) INFO (running with inotify supportcrontab [选项] -e #设置 -l #查看 -u #指定用户 -r #删除[root@localhost ~]# crontab -e */1 * * * * date | xargs >> /root/yq.txt #每分钟将本地时间追加式写入yq.txt[root@localhost ~]# date && cat yq.txt #检查2022年 09月 20日 星期二 20:44:39 CST2022年 09月 20日 星期二 20:38:07 CST2022年 09月 20日 星期二 20:38:54 CST2022年 09月 20日 星期二 20:38:59 CST[root@localhost ~]# date && cat yq.txt2022年 09月 20日 星期二 20:45:29 CST2022年 09月 20日 星期二 20:38:07 CST2022年 09月 20日 星期二 20:38:54 CST2022年 09月 20日 星期二 20:38:59 CST2022年 09月 20日 星期二 20:45:01 CST## 普通用户: crontab -l[root@localhost ~]# crontab -l*/1 * * * * date | xargs >> /root/yq.txt## root用户: crontab -u 用户名 -l[root@localhost ~]# crontab -u yq1 -l*/1 * * * * mail -s "hello" root@192.168.18.134 < /etc/fstab## ll /var/spool/cron[root@localhost ~]# ll /var/spool/cron总用量 8-rw-------. 1 root root 42 9月 20 20:44 root-rw-------. 1 yq1 yq1 61 9月 20 20:49 yq1crontab -e 语法 分 时 日 月 周 命令 * #任意 取值范围内数字 / #每 时间间隔频率 - #数字-数字 连续数字 , #数字,数字 离散数字常见写法:0 21 * * * #每天21点45 4 1,10,22 * * #每月1、10、22日的4点45分45 4 1-10 * * #每月1到10日的4点45分3,15 8-11 */2 * * #每隔两天,上午的8点到11点每个小时的第3和第15分钟0 23-7/1 * * * #每天23点到7点。每隔一小时15 21 * * 1-5 #每周一到周五,每天的21点15分#系统级别的定时任务[root@localhost ~]# ll /etc/crontab-rw-r--r--. 1 root root 451 6月 10 2014 /etc/crontab#系统任务调度的配置文件白名单优先级更高
黑名单默认为空,其他都允许,加入则拒绝执行
白名单默认为空,其他都拒绝,加入则允许执行
/etc/at.deny #at黑名单/etc/cron.deny #cron黑名单/etc/at.allow #at白名单/etc/cron.allow #cron白名单