bigdata-05-Linux实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: bigdata-05-Linux实战

1.6-定时器

大家想象一个场景,如果你们老大给你分配了一个任务,每天凌晨1点登录服务器执行一个数据处理的脚本,这个活不难,也不大,但是很费劲,如果你连续一天两天是感觉不到任何不适的,但是当你连续一个月、两个月的话你就会发现,这个活是真不好干,虽然只是一条命令的事。

其实这个事情完全没有必要让我们人工去做,针对这种周期性需要被执行的命令完全可以选择使用定时器定时调度执行。

那我们下面要学习的这个crontab就是干这个事的,它其实是类似于java中的timer定时器的

它可以作用于周期性被执行的命令:例如每天凌晨1点去"偷菜",不知道大家对于偷菜这个游戏有没有概念,如果没有概念的话说明我们的代沟真的不止一两个了。

crontab在使用的是也很简答,只需要配置一条命令即可,连代码都不需要写,这可比java中的timer要方便多了

crontab的格式是这样的: * user-name command

这条配置需要添加到crontab服务对应的文件中,在配置之前,需要先确认crontab的服务是否正常

查看crontab服务状态:systemctl status crond

看到里面的active说明这个服务是启动的,如果服务没有启动可以使用systemctl start crond 来启动,如果想要停止 可以使用systemctl stop crond

确认这个服务是ok的之后,我们就可以操作这个服务对应的配置文件了,/etc/crontab

可以先打开看一下这个配置文件

从这个配置文件里面其实也可以看到我们前面分析的crontab的格式

下面我们就来配置一个。

假设我们有一个需求,每隔1分钟打印一次当前时间,时间格式为年月日 时分秒

这个需求需要写到脚本中,然后在crontab中直接调用脚本即可。

其实我们只需要在脚本中实现打印当前时间的操作即可,每隔1分钟执行一次这个操作让crontab实现即可

创建脚本文件 vi showTime.sh

然后在/etc/crontab文件中配置

每1分钟执行一次,其实是最简单的写法,前面都是*号就行,表示都匹配

最终的效果就是这样的

* root sh /root/shell/showTime.sh

注意:这里建议指定脚本的全路径,这样不容易出问题,还有就是执行命令在这里写好了以后建议拿出来单独执行一下,确认能不能正常执行,这样可以避免出现一些低级别的问题

这样验证脚本可以正常执行以后就可以保存配置文件了,但是还有一个问题

现在这种情况脚本执行之后的结果我们是没有保存的,如果让crontab定时去调度执行,我们压根就看不到执行的结果信息,所以需要把脚本执行的结果重定向到一个文件中,

需要使用追加重定向

* root sh /root/shell/showTime.sh >> /root/shell/showTime.log

保存配置文件即可,等待执行。

我们来看查看一下结果文件,确认一下是否正常执行,可以使用tail -f 监控一会

通过这个文件中的信息可以看出来脚本是每隔1分钟被调度一次。

注意了,这里所说的每1分钟执行一次,其实会在每1分钟的第1秒开始执行

如果我们执行的脚本确实不会产生任何输出信息,那么我们如何确认脚本是否被成功调度了呢?

这个时候可以通过查看crontab的日志来确认

crontab的日志在/var/log/cron文件中,使用tail -f命令实时监控

查看这个日志文件的内容可以发现我们添加的定时任务确实被成功调度了,每调度一次都会记录一条日志数据,便于我们后期排查问题。

这样就成功完成了我们的第一个定时任务,如果这个任务暂时不想调度了,想临时停止一段时间,可以修改配置文件,在这一行配置前面加上#号就可以了,这样这一行配置就被注释了,后期想使用的时候把#号去掉就可以了。

# * root sh /root/shell/showTime.sh >> /root/shell/showTime.log

下面大家思考一个问题,如果设置任务每7分钟执行一次,那么任务分别会在什么时间点执行?

任务会在我们配置好之后7分钟执行吗? 不会的,

注意了,crontab中任务是这样执行的,我们这里设置的7分钟执行一次,那么就会在每个小时的第0、7、14、21、28.....分钟执行,而不是根据你配置好的时候往后推,这个一定要注意了

我们来验证一下,修改配置文件

/7 * root sh /root/shell/showTime.sh >> /root/shell/showTime.log

还有就是这里的间隔时间是7分钟,7分钟无法被60整除,那执行到这个小时的最后一次以后会怎么办呢?它最后会在第56分钟执行一次,再往后的话继续往后面顺延7分钟吗?不是的,下一次执行就是下一个小时的0分开始执行了,所以针对这种除不尽的到下一小时就开始重新计算了,不累计。

这个我在这里就不再等到下一个小时了,没什么意义,大家可以在下面自己做实验验证一下。

实验是检验真理的唯一标准,但是你一定要保证你的实验步骤是正确的,要不然真理都会被你给弄成歪理。

1.7-JDK部署

大数据框架中百分之99的框架都需要依赖JDK环境

JDK的安装就是最基础的环境配置

下面在bigdata01来安装jdk

sftp上传jdk到目录并解压

改名

配置环境变量

激活配置文件并查看版本

软件

链接:https://pan.baidu.com/s/1vsLpE9b71V3hN1NU3qHflg?pwd=7jb5

提取码:7jb5

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
294 2
|
6月前
|
消息中间件 运维 监控
Linux命令lsipc:深入解析与实战应用
`lsipc` (通常指 `ipcs`) 是Linux命令,用于查看系统中的IPC资源,包括消息队列、信号量和共享内存。它显示详细信息,支持过滤,并且需要相应权限。示例用法:显示共享内存(`-m`)、查询消息队列(`-q -i ID`)、查看关联进程(`-m -p`)。注意权限、操作影响及定期监控。结合`ipcrm`等工具可进行更深入管理。
|
7月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
3月前
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
|
4月前
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
356 4
|
4月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
4月前
|
Linux 调度
Linux源码阅读笔记05-进程优先级与调度策略-实战分析
Linux源码阅读笔记05-进程优先级与调度策略-实战分析
|
6月前
|
消息中间件 存储 监控
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
735 11
|
4月前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
374 0
|
5月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
197 1