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

news/2024/7/7 7:06:45

文章目录

  • 0、系列目录
  • 1、应用场景
  • 2、周期性任务 - crontab
    • 安装 crontab
    • 创建任务
    • 参数解释
    • 其他命令
  • 3、一次性任务 - at
    • 安装 at
    • 创建任务
    • 查看任务
    • 删除任务
    • 时间参数
  • 4、总结

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 可能略有出入。

今天就分享这些。

祝大家变的更强。


http://www.niftyadmin.cn/n/4411686.html

相关文章

Proxool 配置

一&#xff0e;Proxool 在hibernate 中的配置1&#xff0c; Hibernate的三种连接池设置C3P0、Proxool和DBCP以下三种连接都是以连接MySQl为例。 <!-- JDBC驱动程序 --> <property name"connection.driver_class">com.mysql.jdbc.Driver</property>…

c# websocket client java websocket server

实现功能&#xff1a;c# websocket 客户端 连接 java websocket 服务端 一&#xff0c;c# websocket 客户端 nuget websocketsharp-netstandard Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi…

【实现一套爬虫数据抓取平台】[3-3-03] Ubuntu 如何升级 CMake

文章目录0、系列目录1、背景2、操作步骤3、总结0、系列目录 写这套文章的时候&#xff0c;不会完全按照目录的顺序一篇一篇写&#xff0c; 大家可以到目录中直接找到对应的章节进行查看。 点我跳转 1、背景 安装某些 Python 依赖库的时候&#xff0c;需要特定版本的 Cmake&…

网上有关回车和换行的一个有趣说法

"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别: 在计算机还没有出现之前&#xff0c;有一种叫做电传打字机(Teletype Model 33)的玩意&#xff0c;每秒钟可以打10个字符。但是它有一个问题&#xff0c;就是打完一行换行的时候&#x…

【实现一套爬虫数据抓取平台】[3-3-04] 使用 Docker-Compose 安装 Kafka

文章目录0、系列目录1、代码0、系列目录 写这套文章的时候&#xff0c;不会完全按照目录的顺序一篇一篇写&#xff0c; 大家可以到目录中直接找到对应的章节进行查看。 点我跳转 1、代码 简单粗暴&#xff0c;直接上代码。 version: 2 services:zookeeper:image: wurstmei…

汇编的有趣问题

int main(){ int a1; int b2; int c-1;} 问题是下面哪个关系成立: &a>&b>&c还是&a<&b<&c? 我们知道局部变量是存放在栈中的,a先PUSH,然后是b,最后是c。 而栈指针SP是从高地址→低地址方向移动的,所以&a>&b>…

【解决方法】如何用 SQL 查询特殊字符(换行符、Tab符)

背景 某些情况下&#xff0c;我们的数据库里面可能会保存有特殊字符&#xff0c;最好的方式是在保存之前处理一下&#xff0c;不然后面的业务使用到的时候可能会有各种奇奇怪怪的问题。 但&#xff0c;不可避免的&#xff0c;总有漏网之鱼&#xff0c;我们需要检查一下库里面…

5条DBA最佳实践指导

本文5条基本最佳实践源于我多年使用大大小小的Oracle系统的实际经验总结……就我而言&#xff0c;最佳实践之所以是最佳实践必须满足 1)它能够被证明是有效的&#xff0c;2)它足够灵活&#xff0c;可以适用于多种环境。下面的5条基本最佳实践源于我多年使用大大小小的Oracle系统…