CN109271354A - 一种日志文件句柄更新方法及系统 - Google Patents
一种日志文件句柄更新方法及系统 Download PDFInfo
- Publication number
- CN109271354A CN109271354A CN201810792870.5A CN201810792870A CN109271354A CN 109271354 A CN109271354 A CN 109271354A CN 201810792870 A CN201810792870 A CN 201810792870A CN 109271354 A CN109271354 A CN 109271354A
- Authority
- CN
- China
- Prior art keywords
- journal file
- inode node
- file
- inode
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志文件句柄更新方法及系统,其中,方法包括以下步骤:S1、启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;S2、按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;S3、获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程并返回执行S1。本发明在判定两个inode节点不相同后,自动结束脚本进程并重新初始化日志文件,从而更新文件句柄,可广泛应用于数据通信技术领域。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种日志文件句柄更新方法及系统。
背景技术
Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。日志文件是用于记录系统操作事件的记录文件或文件集合,但是现有的python日志文件,会出现在日志文件更新后,而文件句柄得不到更新的问题,从而影响了日志文件的运行。
名词解释:
inode节点:索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
logrotate插件:用于管理记录文件,它提供自动替换,压缩,删除和邮寄记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。
Kafka:是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
发明内容
为了解决上述技术问题,本发明的目的是提供一种能够更新文件句柄的日志文件句柄更新的方法。
本发明的另一目的是提供一种能够更新文件句柄的日志文件句柄更新的系统。
本发明所采用的技术方案是:
一种日志文件句柄更新方法,包括以下步骤:
S1、启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;
S2、按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;
S3、获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程并返回执行S1。
进一步,所述步骤S1中所述保存第一日志文件的第一inode节点的步骤,具体为:
采用全局变量保存第一日志文件的第一inode节点。
进一步,所述预设插件采用logrotate插件。
进一步,所述步骤S2,具体包括以下步骤:
S21、执行脚本时,依次获取并执行每条消息数据;
S22、执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,继续返回执行S21。
进一步,所述步骤S3,具体为:
S31、获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,若相同,执行步骤S21;若不相同,自动结束脚本进程并返回执行S1。
进一步,步骤S21中所述的消息数据为kafka的消息数据。
本发明所采用的另一技术方案是:
一种日志文件句柄更新系统,包括初始化模块、更新模块和比对模块,所述更新模块分别与初始化模块和比对模块连接,所述比对模块与初始化模块连接;
所述初始化模块用于在启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;
所述更新模块用于按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;
所述比对模块用于获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程,并发送重启信息至初始化模块。
进一步,所述保存第一日志文件的第一inode节点的步骤,具体为:
采用全局变量保存第一日志文件的第一inode节点。
进一步,所述预设插件采用logrotate插件。
进一步,所述更新模块包括第一单元和第二单元,所述初始化模块依次通过第一单元和第二单元与比对模块连接;
所述第一单元用于执行脚本时,依次获取并执行每条消息数据;
所述第二单元用于执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,发送执行信息至第一单元。
本发明的有益效果是:本发明在启动脚本后,初始化第一日志文件和获得第一日志文件的文件句柄,对第一日志文件进行更新后,如果第一inode节点与第二inode节点不相同,则自动结束脚本进程并重新初始化日志文件,从而更新文件句柄,解决了日志文件更新,而文件句柄不更新的问题。
附图说明
图1是本发明一种日志文件句柄更新方法的步骤流程图;
图2是本发明一种日志文件句柄更新系统的结构框图。
具体实施方式
实施例一
如图1所示,一种日志文件句柄更新方法,包括以下步骤:
A1、启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点。其中,采用全局变量保存第一日志文件的第一inode节点。
A2、按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件。所述预设插件采用logrotate插件。
其中,步骤A2具体包括A21~A22:
A21、执行脚本时,依次获取并执行每条消息数据。所述的消息数据为kafka的消息数据。
A22、执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,继续返回执行A21。
A3、获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程并返回执行A1。
其中,步骤A3具体为:获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,若相同,执行步骤S21;若不相同,自动结束脚本进程并返回执行A1。
上述方法的工作原理为:在脚本启动后,先初始化日志文件,该日志文件即为第一日志文件,同时记录这个日志文件inode节点,用全局变量保存该inode节点。执行脚本时,都是获取并执行kafka的消息数据,在执行完一条消息数据后,再执行下一条消息数据。在执行下一条消息数据前,先判断执行时间是否在设定的预设更新时间段,所述更新时间段为日志文件的更新的时间段,在本实施例中,更新时间段设置为每天凌晨3点到6点,即在每天凌晨3点到6点之间把昨天的日志文件备份,其中,采用logrotate插件实现日志文件的更新备份。如果执行时间是否在设定的预设更新时间段,则生成新的日志文件,即第二日志文件;如果不在预设更新时间段,则继续依次获取并执行每条消息数据。当生成新的日志文件后,此时有两个日志文件,分别为新的第二日志文件,和旧的第一日志文件。第一日志文件对应第一inode节点,第二日志文件对应第二inode节点。对比判断第一inode节点和第二inode节点是否相同,如果相同,则依次获取并执行每条消息数据;如果不同,则自动结束脚本进程,脚本会在1分钟后重新启动,接着初始化日志文件,并更新文件句柄,如此,就可以解决日志文件更新,脚本拿到的文件句柄不更新的问题,避免影响日志文件的运行。
实施例二
如图2所示,一种日志文件句柄更新系统,包括初始化模块、更新模块和比对模块,所述更新模块分别与初始化模块和比对模块连接,所述比对模块与初始化模块连接;
所述初始化模块用于在启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;
所述更新模块用于按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;
所述比对模块用于获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程,并发送重启信息至初始化模块。
上述系统的工作原理为:初始化模块在启动脚本后,初始化第一日志文件,和获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点,执行完后发送信息给更新模块。在更新模块中,按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件,执行完上述步骤后,发送信息给比对模块。在比对模块中,获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程,并发送重启信息至初始化模块。初始化模块在接收到重启信息后,从新启动脚本,并初始化第一日志文件和获取第一日志文件的文件句柄,从而在更新日志文件后,脚本能够获得更新后的文件句柄。
进一步作为优选的实施方式,所述保存第一日志文件的第一inode节点的步骤,具体为:
采用全局变量保存第一日志文件的第一inode节点。
进一步作为优选的实施方式,所述预设插件采用logrotate插件。
进一步作为优选的实施方式,所述更新模块包括第一单元和第二单元,所述初始化模块依次通过第一单元和第二单元与比对模块连接;
所述第一单元用于执行脚本时,依次获取并执行每条消息数据;
所述第二单元用于执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,发送执行信息至第一单元。
上述系统在启动脚本后,初始化第一日志文件和获得第一日志文件的文件句柄,对第一日志文件进行更新后,如果第一inode节点与第二inode节点不相同,则自动结束脚本进程并重新初始化日志文件,从而更新文件句柄,解决了日志文件更新,而文件句柄不更新的问题。
本实施例的一种日志文件句柄更新系统,可执行本发明方法实施例所提供的一种日志文件句柄更新方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (10)
1.一种日志文件句柄更新方法,其特征在于,包括以下步骤:
S1、启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;
S2、按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;
S3、获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程并返回执行S1。
2.根据权利要求1所述的一种日志文件句柄更新方法,其特征在于,所述步骤S1中所述保存第一日志文件的第一inode节点的步骤,具体为:
采用全局变量保存第一日志文件的第一inode节点。
3.根据权利要求2所述的一种日志文件句柄更新方法,其特征在于,所述预设插件采用logrotate插件。
4.根据权利要求3所述的一种日志文件句柄更新方法,其特征在于,所述步骤S2,具体包括以下步骤:
S21、执行脚本时,依次获取并执行每条消息数据;
S22、执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,继续返回执行S21。
5.根据权利要求4所述的一种日志文件句柄更新方法,其特征在于,所述步骤S3,具体为:获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,若相同,执行步骤S21;若不相同,自动结束脚本进程并返回执行S1。
6.根据权利要求4所述的一种日志文件句柄更新方法,其特征在于,步骤S21中所述的消息数据为kafka的消息数据。
7.一种日志文件句柄更新系统,其特征在于,包括初始化模块、更新模块和比对模块,所述更新模块分别与初始化模块和比对模块连接,所述比对模块与初始化模块连接;
所述初始化模块用于在启动脚本并初始化第一日志文件后,获取第一日志文件的文件句柄,并记录和保存第一日志文件的第一inode节点;
所述更新模块用于按照预设方式执行脚本,并采用预设插件对第一日志文件文件进行更新备份后,生成第二日志文件;
所述比对模块用于获取第二日志文件的第二inode节点后,判断第一inode节点与第二inode节点是否相同,并在判定第一inode节点与第二inode节点不相同后,自动结束脚本进程,并发送重启信息至初始化模块。
8.根据权利要求7所述的一种日志文件句柄更新系统,其特征在于,所述保存第一日志文件的第一inode节点的步骤,具体为:
采用全局变量保存第一日志文件的第一inode节点。
9.根据权利要求8所述的一种日志文件句柄更新系统,其特征在于,所述预设插件采用logrotate插件。
10.根据权利要求9所述的一种日志文件句柄更新系统,其特征在于,所述更新模块包括第一单元和第二单元,所述初始化模块依次通过第一单元和第二单元与比对模块连接;
所述第一单元用于执行脚本时,依次获取并执行每条消息数据;
所述第二单元用于执行完每条消息数据后,判断当前时间是否在预设更新时间段,若是,采用logrotate插件对第一日志文件文件进行更新备份后,生成第二日志文件;反之,发送执行信息至第一单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810792870.5A CN109271354A (zh) | 2018-07-18 | 2018-07-18 | 一种日志文件句柄更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810792870.5A CN109271354A (zh) | 2018-07-18 | 2018-07-18 | 一种日志文件句柄更新方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109271354A true CN109271354A (zh) | 2019-01-25 |
Family
ID=65148172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810792870.5A Pending CN109271354A (zh) | 2018-07-18 | 2018-07-18 | 一种日志文件句柄更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271354A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110620768A (zh) * | 2019-09-16 | 2019-12-27 | 北京方研矩行科技有限公司 | 一种用于物联网智能终端的基线安全检测方法及装置 |
CN113392071A (zh) * | 2021-08-17 | 2021-09-14 | 云智慧(北京)科技有限公司 | 一种文件采集器的文件采集处理方法、装置及设备 |
-
2018
- 2018-07-18 CN CN201810792870.5A patent/CN109271354A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110620768A (zh) * | 2019-09-16 | 2019-12-27 | 北京方研矩行科技有限公司 | 一种用于物联网智能终端的基线安全检测方法及装置 |
CN113392071A (zh) * | 2021-08-17 | 2021-09-14 | 云智慧(北京)科技有限公司 | 一种文件采集器的文件采集处理方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309218B (zh) | 一种数据交换系统和数据写入方法 | |
CN106933703B (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
CN104166600B (zh) | 数据备份与恢复方法及装置 | |
WO2017162032A1 (zh) | 执行数据恢复操作的方法及装置 | |
CN104461693B (zh) | 一种桌面云计算环境下的虚拟机更新方法和系统 | |
CN108459951B (zh) | 测试方法和装置 | |
CN109063005B (zh) | 一种数据迁移方法及系统、存储介质、电子设备 | |
CN109460358B (zh) | 基于Cmdb的配置管理方法及系统 | |
CN105989160A (zh) | 一种针对Redis数据库的内存数据持久化方法和装置 | |
US20190227710A1 (en) | Incremental data restoration method and apparatus | |
CN104317749A (zh) | 信息写入方法和装置 | |
WO2018068639A1 (zh) | 数据恢复方法、装置和存储介质 | |
CN113297309A (zh) | 流数据写入方法、装置、设备及存储介质 | |
CN109271354A (zh) | 一种日志文件句柄更新方法及系统 | |
CN112527562A (zh) | 分布式存储系统的数据备份方法、装置和计算机设备 | |
CN111355802A (zh) | 信息推送方法和装置 | |
CN102833273A (zh) | 临时故障时的数据修复方法及分布式缓存系统 | |
CN113051102B (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
CN110597821B (zh) | 数据仓库表结构变更方法及装置 | |
CN109361553B (zh) | 配置回滚方法及装置 | |
CN102937923B (zh) | 一种自动保存用户界面状态的方法 | |
CN104572339A (zh) | 基于分布式文件系统的数据备份还原系统及方法 | |
CN113254045A (zh) | 软件初始化方法、系统及计算机可读存储介质 | |
CN112131177A (zh) | 数据迁移方法及装置、存储介质、电子设备 | |
CN109389271B (zh) | 应用性能管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190125 |