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> <EOT> #结束组合键: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: 定时性的,每隔一定的周期就需要重复执行一次的命令。

如何使用定时计划任务(设置、查询、删除、限制用户)

相关推荐
2301_809051143 小时前
Linux 网络编程 学习笔记
linux·网络·学习
wanhengidc3 小时前
服务器租用有何优点
运维·服务器·安全·web安全
ZGi.ai3 小时前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
坤昱3 小时前
cfs调度类深入解刨——最新内核细节分析2
linux·服务器·cfs·cfs调度·eevdf调度·eevdf·kernel 7.1
艾莉丝努力练剑4 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约4 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
eggcode4 小时前
【Qt学习】Linux(ARM架构)在线安装Qt6.x
linux·qt·学习·arm
wkd_0074 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
企服AI产品测评局4 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
mixboot5 小时前
Linux 进程工作目录查看利器:pwdx 命令详解
linux·运维·服务器