Linux 计划任务

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 编辑时的语法:** **分** **时** **日** **月** **周** ![](https://i-blog.csdnimg.cn/direct/a1c61bd4db194ec2afba7da3a79dbecd.png) **一行对应一个任务,特殊符号的含义:** |--------|------------------|------------------| | **\*** | **代表取值范围内的数字** | **(任意/每)** | | **/** | **指定时间的间隔频率** | **\*/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:** **定时性的,每隔一定的周期就需要重复执行一次的命令。** **如何使用定时计划任务(设置、查询、删除、限制用户)**

相关推荐
电脑能手6 分钟前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑
tan77º30 分钟前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
czhc114007566341 分钟前
Linux 76 rsync
linux·运维·python
szxinmai主板定制专家2 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
你不知道我是谁?2 小时前
负载均衡--四层、七层负载均衡的区别
运维·服务器·负载均衡
蓝易云2 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
dyj0952 小时前
【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
运维·nginx·rancher
花落已飘2 小时前
多线程 vs 异步
linux·网络·系统架构
PanZonghui3 小时前
Centos项目部署之Nginx部署项目
linux·nginx
九丝城主3 小时前
2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--中篇
服务器·flutter·macos·vmware