1.常见定时计划任务设置方式:
at: 突发性的,临时决定只执行一次的任务。
crontab: 定时性的,每隔一定的周期就需要重复执行一次的命令。
用**#date****为参考时间**
1.1 at 计划任务的使用:
使用 at 前准备:
使用 at 定时计划之前首先要确认系统中 atd 服务开启状态 ,atd 不开启则 at 定时计划任务无法运行。
root@localhost \~\]# **systemctl start atd** **#启动 atd 服务。**
\[root@localhost \~\]# **systemctl status atd** **#查看 atd 运行状态**。
\[root@localhost \~\]# **systemctl is-enabled atd #查看 atd 是否开机运行**。 使用 at 创建计划任务:
\[root@localhost \~\]# at 20:46
at\> mkdir /tmp/linux01
at\> touch /tmp/linux01/a.txt
at\> \ #**结束组合键:ctrl+d**
**查看和删除 at 将要执行的计划任务** :**普通用户查看方式**
\[root@localhost \~\]# **at -l** #查看计划任务
\[root@localhost \~\]#**atq #查看计划任务**
注意:如果 at 任务已经开始执行或者执行完成了,则不会显示在命令返回结果中。
\[root@localhost \~\]# at -l
5 Sat Aug 19 20:50:00 2017 a root
任务编号 执行的时间 队列 执行者
5 Fri Oct 28 20:55:00 2016 a root
\[root@localhost \~\]# **at -c 5**
\[root@localhost \~\]# **ls /var/spool/at/** **#根据路径查看还未执行的定时计划任务。** **路径方式只有****root****可执行**
a00003018452cb a0000501845084 spool
\[root@localhost \~\]# cat /var/spool/at/a0000501845084 #查看文件具体内容。
at 计划任务的其他写法:
\[root@ localhost \~\]# at 20:00 2018-10-1 #某天。
\[root@ localhost \~\]# at now +10min #在 10 分钟后执行。
\[root@ localhost \~\]# at 17:00 tomorrow #明天下午 5 点执行。
\[root@localhost \~\]# at 6:00 pm +3 days #在 3 天以后的下午 6 点执行。
\[root@localhost \~\]# **at 23:00 \< a.txt #使用重定向方式写入**。
**删除 at 计划任务**:
语法格式:**atrm 任务编号**
\[root@localhost \~\]# **at -l** root用户可以删文件 **普通用户删除,只能删自己创建的任务**
3 Tue May 22 08:43:00 2018 a root
5 Mon May 21 23:00:00 2018 a root
\[root@localhost \~\]# atrm 5
\[root@localhost \~\]# at -l
3 Tue May 22 08:43:00 2018 a root
#### **1.2 crontab 定时任务的使用:**
cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下周期性的运行方式。
cron 同样需要启动服务:
\[root@localhost \~\]# systemctl start crond
\[root@localhost \~\]# systemctl status crond 开机就有
\[root@localhost \~\]# systemctl is-enabled crond
crontab 命令格式介绍:
crontab \[选项\]l
常见选项:
**-e:编辑 cron 定时计划任务。**
**-l:查看当前用户定时计划任务。**
**-u:指定设置 crontab 用户。**
**-r:删除当前用户 cron 定时计划任务。**
例:
crontab -u user1 #指定 user1 用户的 cron 服务
crontab -l #列出当前用户下的 cron 服务的详细内容
**crontab -u user1 -l** #列出指定用户 user1 下的 cron 服务的详细内容
crontab -r #删除 cron 服务
crontab -e #编辑 cron 服务
例如:
crontab -u root -l #root 查看自己的 cron 计划任务
crontab -u san -r #root 想删除 san 的 cron 计划任务
**cron -e 编辑时的语法:**
**分** **时** **日** **月** **周**

**一行对应一个任务,特殊符号的含义:**
|--------|------------------|------------------|
| **\*** | **代表取值范围内的数字** | **(任意/每)** |
| **/** | **指定时间的间隔频率** | **\*/10 0-23/2** |
| **-** | **代表从某个数字到某个数字** | **8-17** |
| **,** | **分开几个离散的数字** | **1,3,5,7** |
## **2.实战-常见的计划任务写法和案例**
**常见写法:**
**创建计划任务**
**例 1:每天凌晨 2 点 1 分开始备份数据**
**\[root@localhost spool\]#** **crontab -e #添加计划任务**
**1 2 \* \* \* tar zcvf /opt/grub2.tar.gz /boot/grub2**
**\[root@localhost \~\]#** **crontab -l #查看**
**例 2:以非 root 用户添加计划任务。这里使用 bin 用户来添加**
**\[root@localhost \~\]#** **crontab -u bin -e**
**\*** **/1** **\* \* \* \* echo "aaaaaaa" \>\> /tmp/bin.txt** **每隔一分钟**
每天晚上 21:00 重启 httpd
0 21 \* \* \* /etc/init.d/httpd restart
每月 1、10、22 日的 4 : 45 重启 httpd。
45 4 1,10,22 \* \* /etc/init.d/httpd restart
每月 1 到 10 日的 4 : 45 重启 httpd。
45 4 1-10 \* \* /etc/init.d/httpd restart
每两天的上午 8 点到 11 点的**第 3 和第 15 分钟** 执行 httpd restart
3,15 8-11 \*/2 \* \* /etc/init.d/httpd restart
晚上 11 点到早上 7 点之间,**每隔一小时** 重启 httpd
**0 1-7/1 \* \* \* /etc/init.d/httpd restart**
周一到周五每天晚上 21:15 寄一封信给 root@panda:
**15 21 \* \*** **1-5** **mail -s "hi" root@panda \< /etc/fstab**
**排查:**
**\[root@localhost \~\]#** **crontab -u 用户名 -l**
**如何排查所有用户的计划任务?**
**注:所有用户的计划任务,都会在** **/var/spool/cron/** **下产生对应的文件。**
**\[root@localhost \~\]# ll /var/spool/cron/**
**total 8**
**-rw------- 1 root root 42 Nov 12 10:11 bin**
**-rw------- 1 root root 19 Nov 12 10:06 root**
**系统级别的计划任务:**
## **3. at 和 cron 黑白名单问题:**
**白优先级高于黑**
**/etc/at.deny** **#at 黑名单,默认存在。** **允许所有,拒绝个别**
**/etc/cron.deny** **#cron 黑名单,默认存在。**
**/etc/at.allow** **#at 白名单,默认不存在。** **设立后允许个别,拒绝所有**
**/etc/cron.allow** **#cron 白名单,默认不存在。**
**定时计划任务的作用是什么?**
1. **自动化工作**:可设置定期备份文件、更新软件包、清理日志、执行数据库维护等日常管理工作,无需人工干预
2. **批量处理**:对于需要在特定时间点大批量完成的任务,如批量发送邮件、生成报告等,可以简化流程并提高效率。
3. **系统监控**:用于监控系统的健康状况,比如定期检查磁盘空间、CPU使用率等。
4. **数据处理**:例如在每天凌晨对前一天的数据进行统计分析或清洗。
5. **网站维护**:适用于动态网站,如每日更新新闻稿、定时发布内容等
**Linux 中定时计划任务的方式有哪些?**
**at:** **突发性的,临时决定只执行一次的任务。**
**crontab:** **定时性的,每隔一定的周期就需要重复执行一次的命令。**
**如何使用定时计划任务(设置、查询、删除、限制用户)**