首先最近想自动化实现mongodb的管理,因为现在维护mongodb每天要记录总的记录数和每天新增的记录数,无非就是两条查询语句: db.videos.count() 和 db.vid_add.count(),不过每天都要进入mongodb的shell里,执行这两条语句,接着记录日期,复制数据到一个文本文件里,每天都这样重复的操作。所以想写个脚本,在Linux下通过crontab自动维护。
这里用的是mongodb 1.6.4,64位,linux版
网上的mongodb的中文资料少得可怜,只能自己试。首先查询mongo命令的参数,发现有个--shell的参数,在mongodb的官网里有说明,mongodb可以通过这个参数运行js脚本,再通过官网的一个例子:https://github.com/mdirolf/shell_presentation/blob/master/slides.js,发现也不是很难。接着就在linux服务器上写了个简单的脚本,
mongo.js
print("all count:" + db.videos.count() );
print("add count:" + db.vid_add.count() );
接着在linux 试了一下:
/mongo localhost/myCollections --shell /home/bosshida/mongo.js
发现真的可以了:输出
MongoDB shell version: 1.6.4
connecting to: localhost/crawler
type "help" for help
all count:113358593
add count:2940633
不过这时是进入了mongodb 的 shell 控制台,这样就需要再写个脚本来关闭此进程
根据经验就知道是通过ps 列出全部进程,再通过grep找出进程ID, 接着kill掉
因为要去掉grep本身这个进程,又上网查了下资料,可以通过grep -v 'grep'来排除含有grep的进程,最后通过管道怎样kill掉找出的进程,脚本如下:
ps -ef| grep '/home/mongodb/bin/mongo local/myCollection --shell mongo.js' | grep -v 'grep'| awk '{print $2}' | xargs kill
其中awk是提取出进程号,xargs kill 是网上找来的,在man kill也没找到说明,我猜应该是对传过来的参数做为pid,接着kill掉。
其中对awk不熟悉,通过一些资料,大概用法也了解,主要是掌握 awk '/pattern/{action}' 这个规则,就是通过pattern找出符合的(正则),再执行action。
Kill掉进程后,还没完事,还要抽取数据写入文件,
其中要抽取的数据只是
all count:113358593
add count:2940633
这两行,所以我另外写一个脚本来抽取数据并写入到另外的文件
echo `date`>> result.txt | sed -n '4,5p' stat.txt | awk -F : '{print $2}' >> result.txt
说明一下:
脚本的流程是先把日期写入result.txt文件,再通过sed把stat.txt文件的第4,5行抽取出来,通过awk抽取每行的数据追加到result.txt文件。
sed -n '4,5p' stat.txt 的意思是从文件的第4行开始到第5行,截取其内容。
awk -F : '{print $2}'的意思是以冒号":"为分隔符,打印第二个数值。
这样工作就大概完成了,最后写个crontab,每天定时运行脚本,就自动记录Mongodb的数据了。
分享到:
相关推荐
还会涉及高级命令,如grep、sed、awk和管道。 4. **文本编辑器**:讲解Vim和Emacs等常用文本编辑器的使用,帮助用户进行文件编辑和脚本编写。 5. **用户和权限管理**:涵盖用户账户创建、权限设置、文件访问控制...
- Linux命令的掌握,如grep、sed、awk等。 以上是美团Java面试中可能出现的重点知识点,涵盖基础理论、实践应用和技术深度。在准备面试时,应全面理解和熟练运用这些知识点,同时关注最新的技术动态和行业趋势。
- grep、sed、awk是文本操作神器,还有如tail、top、free、find、stat、vim、gzip、tar、chmod、chown、scp、ps等命令。 9. **HttpRunner**: - HttpRunner是一款HTTP协议的通用测试框架,适用于接口测试。 10. ...
4. **命令行工具**:例如终端模拟器(如Windows的PowerShell和macOS的Terminal)、Linux命令行工具(如grep、sed、awk)以及各种CLI(命令行界面)工具,它们在系统管理、自动化任务和脚本编写中发挥着重要作用。...
理解shell命令行工具,如grep、sed、awk以及bash脚本的基本语法,对于自动化运维至关重要。同时,了解Linux系统管理,如用户权限、服务管理、网络配置等,也是运维人员的基础。 **测试** 软件测试包括单元测试、...
- 日志分析:日志文件、grep、awk、sed等工具使用。 - 性能监控:top、vmstat、iostat、netstat、strace等。 5. **框架**: - SSM(Spring、SpringMVC、MyBatis):依赖注入、AOP、事务管理、MVC模式、SQL映射。...
1. Linux基础知识:熟悉Linux命令行操作,能熟练使用grep、sed、awk等工具进行数据处理。 2. 文件系统和权限管理:理解Linux的文件系统结构,了解文件权限和用户组概念。 3. 进程管理:掌握进程的创建、监控、调度和...
3. **命令行界面**:Linux的命令行界面(CLI)是其强大的工具,通过一系列命令如`ls`, `cd`, `mkdir`, `rm`, `cp`, `mv`等进行文件管理,`grep`, `find`, `sed`和`awk`等用于数据处理和文本搜索。 4. **文件系统与...
2. **数据过滤**:使用命令行工具如`grep`、`sed`、`awk`等对输出进行筛选,提取关键信息。例如,`grep`可以查找包含特定字符串的行,`sed`则可用于模式匹配和替换,而`awk`则能进行更复杂的列式处理。 3. **解析和...
- **日志查询**:使用grep、awk、sed等命令行工具,或者Kibana、Grafana等可视化工具。 - **日志聚合**:统计特定时间段内的日志数量,如错误次数、请求频率等。 - **日志挖掘**:通过机器学习技术发现日志中的...
2. **日志分析技巧**:学习如何使用grep、awk、sed等命令行工具,或者Logstash、Splunk等专业日志分析软件来解析和提取日志信息。 3. **安全日志**:理解Web服务器日志、防火墙日志、入侵检测系统日志等,帮助识别和...
熟悉Linux的基本命令行操作是必不可少的技能,这包括但不限于文件管理(如`ls`、`cd`、`mkdir`、`rm`等)、进程管理(如`ps`、`kill`等)、文本处理工具(如`grep`、`awk`、`sed`等)以及简单的脚本编写能力(如使用...
2. **文本处理**:cat、more、less、head、tail、grep、sed、awk。 3. **权限和用户管理**:chmod、chown、chgrp、su、sudo。 4. **进程管理**:ps、kill、pkill、top、htop。 5. **网络操作**:ping、telnet、...
- Linux或Unix命令行工具,如`grep`、`awk`和`sed`,可以用来搜索、处理和显示含有键值对的日志文件。 6. **API交互**: - 在Web服务API中,HTTP请求的查询参数或请求体经常包含键值对,用于传递数据。 7. **...
Linux工具部分可能会介绍一些高效的命令行工具,如文本处理工具`sed`和`awk`,以及文件搜索工具如`find`和`grep`等。这些工具是日常运维工作中不可或缺的,能够帮助用户快速定位问题、处理数据。 #### Linux安全 ...
在Linux下开发网络爬虫,开发者可以利用shell脚本进行文件操作,利用grep、sed、awk等工具处理文本数据,以及使用curl或wget获取网页内容。 其次,C和C++是两种强大的编程语言。C++提供了面向对象的编程特性,允许...
除此之外,还有像curl、grep、sed、awk等命令行工具,它们在日常开发中扮演着不可或缺的角色。 【Composer】 Composer是PHP的依赖管理工具,它允许开发者声明项目所依赖的库,并自动下载和管理这些库,确保项目的...
在Shell环境中,追踪数据库的构建和管理通常涉及到命令行工具,如grep、awk、sed以及日志分析工具如logrotate。通过这些工具,我们可以收集、过滤、解析来自不同来源的日志数据,并将它们整合到一个数据库中。例如,...
例如,`ls`、`cd`、`mkdir`、`rm`等基本命令,以及`grep`、`find`、`sed`、`awk`等高级文本处理工具,都是日常工作中不可或缺的技能。 数据库系统的选择也是关键,常见的有MySQL、PostgreSQL、MongoDB、Oracle等。...