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:** **定时性的,每隔一定的周期就需要重复执行一次的命令。** **如何使用定时计划任务(设置、查询、删除、限制用户)**

相关推荐
learning-striving19 分钟前
kali连不上网解决方法
linux·开发语言·网络·php·kali
云边有个稻草人20 分钟前
打工人摸鱼新姿势!轻量斗地主服务器,内网穿透让同事远程联机不翻车
运维·服务器·cpolar
阿钱真强道21 分钟前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议
乾元26 分钟前
终端安全(EDR):用深度学习识别未知勒索软件
运维·人工智能·网络协议·安全·网络安全·自动化·安全架构
wbs_scy37 分钟前
Linux 进阶指令实操指南:文件查看、时间管理、搜索压缩全场景覆盖(附高频案例)
linux·运维·服务器
安科瑞刘鸿鹏1737 分钟前
高速路灯故障难定位?用 ASL600 实现精确单灯监测与维护预警
运维·网络·物联网·安全
馨谙39 分钟前
Ansible 事实(Facts)全面指南:自动化运维中的主机信息管理
运维·ansible
Lethehong41 分钟前
实测可用|一文搞定OpenClaw部署,免费kimi-k2.5+飞书远程,新手也能秒上手
linux·运维·服务器·玩转openclaw·云端创意实践
馨谙1 小时前
Ansible处理程序完全指南:实现智能的任务触发机制
运维·ansible
逍遥德1 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring