Linux知识库
Linux基础知识!
Linux格式化硬盘以及格式化分区
linux基础常用知识
linux更换yum源
linux挂载windows SMB共享目录
linux开机启动级别
linux网卡配置
linux配置SMB服务
CentOS 8 firewalld配置
Linux软件管理:RPM软件包与YUM管理
Linux用户与组概念
Linux文件与目录权限基础
Linux计划任务管理
Linux中文本文件内容的查看
Linux基础-服务(service)和systemd管理服务
Vim编辑器基本操作
apt更换国内源
Linux程序服务!
Code-server在线编程服务器部署
Cloudreve网盘搭建
Emby多媒体影音系统搭建
chevereto图床搭建教程
Frp内网穿透服务器搭建
FTP服务器搭建
gitlab服务器搭建
Plex搭建
syncthing同步服务器搭建
Wordpress博客搭建
Typecho博客搭建
zabbix搭建(失败)
Aria2离线下载服务器搭建
KMS激活服务器搭建
CentOS搭建NTP服务
Grafana部署与Zabbix集成,部署开源IT系统监控平台
Linux应用环境搭建配置!
nginx编译安装
PHP8编译安装
Linux 关闭selinux
yum安装redis数据库
宝塔环境无法删除.user.ini
宝塔面板安装
mysql8.0.29编译安装
nginx安装(yum方式)
Linux系统基础知识
Linux命令行基础知识
使用Cerbot申请免费证书
ModSecurity 安装编译与连接nginx
Zabbix6.4.8安装部署
本文档使用 MrDoc 发布
-
+
首页
Linux计划任务管理
之前已经学习了一些Linux的基础知识和关机方式与文件系统简介,今天来学习下Linux下的计划任务,因为这个功能自己搭建服务器还是用得上的,比如定期清理垃圾缓存、定期备份数据库和网站等等。 系统环境:Centos8 ## 一、什么是计划任务 类似于windows的计划任务,Linux上也有对应的功能。比如在今天下午18:00执行关机操作,或者在每天00:00进行数据库备份任务。 ## 二、LiNux下的计划任务 Linux下计划任务分两类: - 突发性的,只执行一次的任务 - 例行性的,每隔一定时间执行的 ## 三、atd仅运行一次的计划任务 使用`at`命令执行单一任务,看名字就大概知道这个命令的作用是在指定时间进行操作。 要使用`at`命令需要先启动`atd`这个服务,默认我这里是没有启用的。 ```linux # 查看服务运行情况 systemctl status atd # 如果没有启动则手动运行,running则表示运行了服务了 systemctl start atd ● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-10-05 11:16:03 CST; 3 months 5 days ago Main PID: 1191 (atd) Tasks: 1 (limit: 49140) Memory: 428.0K CGroup: /system.slice/atd.service └─1191 /usr/sbin/atd -f 10月 05 11:16:03 localhost.localdomain systemd[1]: Started Job spooling tools. ``` `at`的使用方式: `at [-mldv] TIME` 参数说明: - -m 完成后发送邮件通知用户,前提是安装好邮件客户端并且配置正确的账号密码 - -l 查看当前的任务与用户 - -d 取消任务 - -v 指定显示的时间格式 TIME 时间格式: - HH:MM :几点几分,12:00 - HH:MM YYYY-MM-DD :具体日期的具体时间 ,13:00 2024-01-12 - HH:MM[am|pm] [Month] [Date] 指定日期的时间,"04:30pm Mar 15" - HH:MM[am|pm] + number [minutes|hours|days|weeks], 08:30am + 30 minutes 执行步骤: - 1、执行`at [-mldv] TIME` 然后进入shell模式 - 2、在shell模式下定义要执行的任务 - 3、通过快捷键`Ctrl + D`保存并退出编辑模式 ```linux [root@localhost ~]# at now + 5minutes # 指定在5分钟后执行 warning: commands will be executed using /bin/sh # 默认在/bin/sh环境下执行 at> mkdir /root/123.txt # 可以输入多行命令操作 at> <EOT> # 快捷键Ctrl + D退出 job 7 at Thu Jan 11 10:34:00 2024 ``` 查看当前任务:`at -l`,每个任务有一个序号,后面删除任务通过序号删除即可。 ```linux [root@localhost ~]# at -l 7 Thu Jan 11 10:34:00 2024 a root ``` 删除任务:`at -d number`,通过序号删除任务 ```linux [root@localhost ~]# at -d 7 [root@localhost ~]# at -l [root@localhost ~]# ``` 简单说就是确定在具体的时间执行多个任务,通过`at -l`查看任务,通过`at -d`删除任务。需要注意的是建议配置好服务器的时间准确,参考之前的NTP时间服务器配置。 ## 四、crond循环执行的计划任务 `at`适合于在指定的时间执行一次,但是有时候我们需要定期执行如备份数据库或者备份网站等定期计划任务,这时需要通过`crontab`来进行。 查看服务状态`systemctl status crond`,只有状态为running才是正常运行状态。 ```linux # 查看服务状态 systemctl status crond # 手动启动服务,一般默认已经开启了 systemctl start crond # 开机自启 systemctl enable crond ``` 使用方法:`crontab [-u username] [-l|-e|-r]`,然后会进入任务编辑模式,说明: - -u :只有root用户可以执行-u参数,给指定用户创建定时任务,默认是给自己创建定时任务 - -l :查看定时任务 - -e :编辑定时任务 - -r :删除整个定时任务文件 实际上`crontab`是根据用户区分的,创建了定时任务会在`/var/spool/cron/`下的创建一个用户名称的定时任务文件。 示例: ```linux # 创建定时任务,只在第一次执行时进行创建,后续对任务的修改都是同一份文件上修改 [root@localhost ~]# crontab -e # 然后就进入了一个类似vim的编辑文件的界面,需要先按i进入编辑模式才能进行编辑 0 12 * * * echo 'world' # 编辑完成按键ESC,然后输入:wq保存文件并退出 # 查看定时任务内容 crontab -l # 删除所有定时 crontab -r # 查看本地文件,但是不建议直接编辑,说明的确在目录下有一个文件,crontab -e就是编辑这个文件的 [root@localhost cron]# pwd /var/spool/cron [root@localhost cron]# ls chuck root [root@localhost cron]# cat root 0 12 * * * echo 'world' [root@localhost cron]# ``` 定时任务内容的格式:`* 12 * * * echo 'world'` | 代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 | | --- | --- | --- | --- | --- | --- | --- | | 数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 需要执行的命令 | 每一行为一个任务,使用空格分开。 除了上面的具体数字,还有一些特殊字符可以表示时间。 | 特殊字符 | 代表意义 | | --- | --- | | *(星号) | 代表任何时刻都接受的意思,0 12 * * * 表示每天的12点 | | ,(逗号) | 表示分隔时段意思,30 3,6 * * *,表示每天的3:30,6:30都执行任务 | | -(减号) | 表示范围,* 8-10 * * *,表示每天的8点到10点 | | /n(斜线) | n数字,表示每隔n单位间隔,*/5 * * * *,表示每隔5分钟 | 上面的数字或者特殊字符一定要写在对应的字段,否则可能效果与实际不一致呢。 示例: ```linux # 下面示例为凌晨1点执行对应的脚本进行数据库备份,执行任务计划建议使用绝对路径 0 1 * * * /root/bak_sh/mysql_zabbix.sh 0 1 * * * /root/bak_sh/mysql_grafana.sh ``` 删除一行任务可以通过`crontab -e`编辑进行删除,删除所有定时任务才使用`crontab -r`,不建议直接编辑`/var/spool/cron/`下的文件。现在一般使用较多的是crond这种方式。 总结:通过上面`at`命令定时执行一次任务,通过`crontab`定时有计划的执行任务,实现服务器管理,数据的备份或者数据的清理。
Chuck
2024年1月11日 13:57
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码