【实现一套爬虫数据抓取平台】[3-3-02] CentOS 设置定时任务/计划任务

0、系列目录

写这套文章的时候,不会完全按照目录的顺序一篇一篇写, 大家可以到目录中直接找到对应的章节进行查看。

点我跳转

1、应用场景

实际生产中,总有一些任务需要定时执行:

  • 定期清理日志
  • 定期执行备份
  • 定期检测服务是否正常

实现的方式也有很多种,可以自己写服务来监测、可以使用 pm2

我们今天介绍两个最简单、最基础,也是最常用的,atcrontab

2、周期性任务 - crontab

这里先介绍周期性任务 crontab,这个在我们实际生产中使用的更多一些。

安装 crontab

CentOS 默认自带 crontab,可以用以下命令检测是否已安装 crontab

[root@docker]# rpm -qa | grep crontab
crontabs-1.11-6.20121102git.el7.noarch

看到如上返回值,说明 crontab 已正常安装。

如果未安装,直接使用 yum 安装即可。

yum install -y crontabs

创建任务

这里以「每隔 5min 检测一次超时进程」为例,shell 脚本在 这里

创建 /root/opshell 目录,我一般习惯把运维脚本都统一放在一起,这里就假设是 /root/opshell

我们把执行脚本放到目录下:

[root@docker]# ls /root/opshell/timeout_task_monitor.sh
/root/opshell/timeout_task_monitor.sh

同时,给脚本赋予可执行权限:

[root@docker]# chmod +x /root/opshell/timeout_task_monitor.sh

执行 crontab -e 命令来创建计划任务:

[root@docker]# crontab -e

编辑器的使用方式和 vim 一样,不赘述了,这里我们先把内容编辑为:

*/5 * * * * /root/opshell/timeout_task_monitor.sh >>/tmp/logs/task.log

这句话的含义是:每隔五分钟执行一次 /root/opshell/timeout_task_monitor.sh 脚本,并把输出内容写入 /tmp/logs/task.log 文件。

保存退出,任务会自动开始执行。

参数解释

我们对上面写好的配置做一个简单的解释。

# .---------------- 分钟,取值范围为 0-59,*/5 表示每5分钟
# |   .------------- 小时,取值范围为 0-23
# |   |  .---------- 日,取值范围为 1-31
# |   |  |  .------- 月,取值范围为 1-12
# |   |  |  |  .---- 星期,取值范围为 0-7,0 和 7 都表示星期日
# |   |  |  |  |      .-- 要执行的命令
# |   |  |  |  |      |
 */5  *  *  *  * /root/opshell/timeout_task_monitor.sh >>/tmp/logs/task.log

这里需要注意的是,/root/opshell/timeout_task_monitor.sh >>/tmp/logs/task.log 是作为一个完整的参数,是一个整体,上面的参数可以理解为:

分钟 小时 日 月 星期 命令

另一点需要注意的是,命令中使用到的路径,尽量写成 绝对路径,避免出现奇奇怪怪的问题。

推荐大家一个在线服务 crontab执行时间分析器,有需要的同学可以试试。

其他命令

查询任务

[root@docker]# crontab -l
*/5 * * * * /root/opshell/timeout_task_monitor.sh >>/tmp/logs/task.log

删除任务

慎用,会删除当前用户的所有任务,一般推荐用 crontab -e 去手动修改。

[root@docker]# crontab -r

3、一次性任务 - at

安装 at

crontab 类似,at 也是被 CentOS 默认安装的,可以执行以下命令检测以下:

[root@docker]# rpm -qa | grep at
at-3.1.13-24.el7.x86_64

看到类似上面的输出,说明系统中已经有 at 了,如果没有的话,同样使用 yum 安装即可,不赘述。

创建任务

[root@docker]# at 12:00 2021-03-17
at> ls /root > /tmp/test_log.log
at> <EOT>
job 3 at Wed Mar 17 12:00:00 2021

Ctrl + D 可以提交任务。

这里我们执行了一次 ls /root,并把结果输出到 /tmp/test_log.log 中。

查看任务

[root@docker]# atq
3       Wed Mar 17 12:00:00 2021 a root

这里的查看任务只会显示待执行的任务。

这个就是我们刚刚创建好的那个。

删除任务

[root@docker]# atrm 3

可以使用 atrm 来删除待执行的任务,这里的参数 3 是指任务id,即上面 atq 查询结果的第一列的内容。

时间参数

对于 at 命令来说,最核心的应该就是设置任务开始时间了。

时间类型格式示例
绝对时间HH:MM, DD.MM.YY, MM/DD/YY, YYYY-MM-DDat 12:00 2021-1-1
相对时间now + count 时间单位at now + 4 minutes
模糊时间noon(12:00PM), midnight(12:00AM),teatime(4:00PM)at noon

上面的 时间单位 可选值为:minuteshoursdaysweeks

4、总结

以上就是 CentOS 常用的定时任务/计划任务使用方式,主要是 crontabat

本篇文章使用的系统版本是 CentOS 7.6,其他发型版本的 Linux 可能略有出入。

今天就分享这些。

祝大家变的更强。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值