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

相关推荐
这儿有一堆花23 分钟前
Apache 配置负载均衡详解(含配置示例)
运维·apache·负载均衡
dessler34 分钟前
Kubernetes(k8s)-Reloader介绍&使用
linux·运维·kubernetes
Linux技术芯1 小时前
#Linux内存管理# 在系统启动时,ARM Linux内核如何知道系统中有多大的内存空间?
linux
the_nov1 小时前
9.进程信号
linux·c++
小关1231 小时前
嵌入式Linux驱动—— 1 GPIO配置
linux
用手码出世界2 小时前
【Linux】进程间通信、匿名管道、进程池
linux·运维·服务器
垂金烟柳2 小时前
CentOS 7上配置SQL Server链接其他SQL Server服务器
服务器·数据库·sqlserver
小镇青年达师傅2 小时前
条件锁存在的意义:用生活中的例子秒懂线程间的"暗号系统"
linux·嵌入式·多线程·互斥锁·系统编程·条件锁
想拿高薪的韭菜2 小时前
操作系统高频(六)linux内核
linux·操作系统
HHONGQI1232 小时前
Linux 基础入门操作 前言 linux操作指令介绍
linux·运维·服务器