http://liyanblog.cn/李岩的博客 李岩 java lucene 搜索 nosql hadoop 博客 mongodb, 李岩原创2024-03-19T11:16:00+08:00李岩的博客监控某个进程的cpu开销,监控每秒cpu占用最高的Pid ,监控top信息脚本savagertnullhttp://liyanblog.cn/articles/2019/07/03/1562146051379.html2019-10-10T15:07:55+08:00<p> </p>
<p>监控某个进程的cpu开销<br />#!/bin/bash<br />PID=5586<br />FileName="res.txt"<br />echo -en "%CPU\t%MEM\t$PID" > $FileName<br />for (( i = 0; i < 30; i++ )) do<br /> ttime=`date +"%m-%d %H:%M:%S"`<br /> output=`top -n 1 -p $PID > tmp`<br /> res=`gawk '{if (NR == 8) { printf "%d\t%d", $10, $11 } }' tmp`<br /> echo -en "$res\t$ttime\n" >> $FileName<br /> sleep 1<br />done<br /><br />监控每秒cpu占用最高的Pid vi a.sh<br />#!/bin/bash<br />FileName="res.txt"<br />echo -en "%CPU\t%MEM\t%PID\t%TIME" > $FileName<br />for (( i = 0; i < 30; i++ )) do<br /> ttime=`date +"%m-%d %H:%M:%S"`<br /> output=`top -i -b -n 1 > tmp`<br /> res=`gawk '{if (NR == 8 && $9>1) { printf "%d\t%d\t%d", $9, $10,$1 } }' tmp`<br /> if [ -n "$res" ] ; then<br /> echo -en "$res\t$ttime\n" >> $FileName<br /> fi<br /> sleep 1<br />done<br /><br />然后用nohup sh a.sh &</p>事物是什么,和你希望事物是什么。是有很大不同的。savagertnullhttp://liyanblog.cn/articles/2017/07/04/1499145586588.html2018-02-22T09:49:22+08:00<p>事物是什么,和你希望事物是什么。是有很大不同的。我们判断一个事物的时候。要排除小我对事物的希望,而去做出真实的判断。排除小我的方法就是,不要想着对自己肉身有利的方向想。要站在真我的角度,也就是本我。本我是精神的,是无形的,是不生不灭的。</p>跨越 19 个版本b3log Solo 博客升级过程记录 savagertnullhttp://liyanblog.cn/articles/2017/03/02/1488440205164.html2017-03-06T15:14:19+08:00<p>第一次用还是大概5-6年前。但是用的版本是0.5.0 现在已经新出了19个版本。感谢Solo开发者这么长期的坚持。<br /><br /><br />Release 1.9.0 - Jan 21, 2017<br />Release 1.8.0 - Jan 23, 2017<br />Release 1.7.0 - Nov 9, 2016<br />Release 1.6.0 - Sep 8, 2016<br />Release 1.5.0 - Aug 10, 2016<br />Release 1.4.0 - Jun 28, 2016<br />Release 1.3.0 - Dec 19, 2015<br />Release 1.2.0 - Dec 2, 2015<br />Release 1.1.0 - Oct 1, 2015<br />Release 1.0.0 - Sep 16, 2015<br />Release 0.6.9 - Jun 28, 2015<br />Release 0.6.8 - Mar 24, 2015<br />Release 0.6.7 - Oct 16, 2014<br />Release 0.6.6 - Apr 26, 2014<br />Release 0.6.5 - Nov 1, 2013<br />Release 0.6.1 - Aug 25, 2013<br />Release 0.6.0 - Apr 26, 2013<br />Release 0.5.6 - Feb 19, 2012<br />Release 0.5.5 - Nov 24, 2012<br />Release 0.5.0 - Aug 25, 2012<br /><br /><br />数据备份<br /><br /> 登录mysql:mysql -u root -p<br /> 查看数据库:show databases;<br /> 数据库备份:退出mysql执,并行mysqldump -uusername -ppassword b3log > /backupfile20170217.sql;<br /> 将备份的数据拷贝到本机,将在本机完成升级后再部署到云上。<br /><br />升级前准备<br /><br /> 在进行升级前需要准备从0.5.0到1.80各版本的编译后war包,解压<br /> ,并把他们放在tomcat配置文件指定的部署路径下面。<br /> 将先前备份的数据文件,导入到本机的mysql(新建数据库的时候注意编码)下面。<br /><br />升级及验证<br /><br /> 从0.5.0到1.90,逐个部署文件,每次部署完成后,启动前,修改latke.properties及local.properties。<br /> 启动tomcat,输入localhost请求首页,此时系统会自动完成升级。<br /> 等待30S,检查 preference或option表的version字段,看是否升级成功(版本号是否更新)。<br /> 视情况进行下一步或排错。<br /><br /> 都做好测试无误后,上线。</p>
<p>#########</p>
<p>最后还发现一个百度云加速的问题。只要我把网址使用百度云加速。在添加和修改文章的时候就会遇到非常缓慢的问题。开始以为是程序版本久的原因。这些升级新版本后依然存在。所以才开始怀疑是百度云加速的问题。看来百度云加速的坑很大啊。以后会慢慢把其他域名也迁移出百度云加速。</p>真难savagertnullhttp://liyanblog.cn/articles/2015/05/06/1430892143293.html2015-05-06T14:02:23+08:00<p><strong><span style="font-size: xx-large;">真难</span></strong><strong><span style="font-size: xx-large;">真难<strong><span style="font-size: xx-large;">真难</span></strong><strong><span style="font-size: xx-large;">真难</span></strong><strong><span style="font-size: xx-large;">真难</span></strong><strong><span style="font-size: xx-large;">真难</span></strong><strong><span style="font-size: xx-large;">真难!</span></strong></span></strong></p>
<p><strong><span style="font-size: xx-large;">真难,人的一生会遇到很多难事。但做了一件难事也有好处。就是以后遇到的难事如果没有这件事难,那就不会感到难。也有更多机会做更难的事。<br /></span></strong></p>
<p><strong><span style="font-size: xx-large;">难不怕,不怕难!<br /></span></strong></p>mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。savagertnullhttp://liyanblog.cn/articles/2013/09/07/1378520866654.html2013-09-07T10:27:46+08:00<p>db.copyDatabase("from","to","127.0.0.1:16161");</p>
<p>将127.0.0.1上的from库。拷贝到to库。</p>
<p>这样做有一个额外的好处。就是from库中可能是删除过数据的库。看我们知道删除数据时磁盘空间是不会被释放的。参考博客里的另一篇文章:<a href="http://liyanblog.cn/articles/2013/08/31/1377941853853.html" target="_blank"><span style="font-size: small;">mongodb删除集合后磁盘空间不释放</span></a></p>
<p>肯能造成占用很大磁盘空间。虽然可以用 db.repairDatabase()修复数据。但这种方法有两个不好的地方。1.在生产上操作如果意外停止可能会造成数据无法恢复的危险。2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了 db.repairDatabase()的。</p>
<p>所以介绍用db.copyDatabase可以备份复制数据的方法。</p>
<p>1.db.copyDatabase("from","to","127.0.0.1:16161");复制出一个新的to数据库。这个已经是最小数据占用的数据。会在数据目录下产生to的相关数据文件。</p>
<p>2.将所有程序的配置从from库改为to库。测试无误。</p>
<p>3.这时可以删除from库。方法。use from 后 db.dropDatabase()。这个方法的好处是可以时间将磁盘上的数据删除掉。节省出很大的空间。</p>
<p>磁盘紧张的同学可以参考以上方法。</p>vmstat 记录保存成文件savagertnullhttp://liyanblog.cn/articles/2013/01/06/1357441496465.html2013-03-06T10:52:10+08:00<p> 遇到个问题。机器在晚上的运行情况需要监控下。采用vmsata将日志保存成文件。第二天来看。</p>
<p>方法 vmstat 60 >a.log</p>
<p>缺点:无法显示每条记录的具体时间。</p>
<p>解决方法。写另外一个脚本 定时往a.log文件中写入时间</p>
<p>脚本如下 a.sh</p>
<p>while :<br />do<br />echo `date`>>a.log<br />sleep 600<br />done</p>
<p> </p>
<p>最终方法。1.先启动定时写时间脚本 nohup sh a.sh &</p>
<p> 2.启动vmstat : nohup vmstat 60 >a.log(主要这里是一个>号)</p>
<p> </p>
<p>####################</p>
<p>补充如果只是监控 load average可以用如下脚本,也要用nohup启动</p>
<p>while :<br />do<br />echo `date`>>e.txt<br />echo `uptime`>>e.txt<br />sleep 60<br />done</p>Mongodb 集群启动带安全认证,adduser时报错savagertnullhttp://liyanblog.cn/articles/2012/11/27/1353981449789.html2012-11-27T09:57:29+08:00<p>Mongodb 集群启动带安全认证,adduser时报错</p>
<p>在use admin 后。添加用户 db.addUser("admin","123456")时 由于其他节点还没有admin用户,并且还是用-keyFile参数,需要权限认证。造成第一次无法,创建用户。</p>
<p>现象如下</p>
<p>switched to db admin<br />{<br /> "user" : "admin",<br /> "readOnly" : false,<br /> "pwd" : "dfb2b4f665d248c6887cfba7b1f0c9fc",<br /> "_id" : ObjectId("50b41bb41e7bf4084c43a793")<br />}<br />Tue Nov 27 09:47:32 uncaught exception: couldn't add user: SyncClusterConnection::insert prepare failed: 10.200.7.106:10021:{ errmsg: "need to login", ok: 0.0 } 10.200.7.221:10021:{ errmsg: "need to login", ok: 0.0 } 10.200.7.226:10021:{ errmsg: "need to login", ok: 0.0 }</p>
<p> </p>
<p>解决办法。第一次启动时不要加-keyFile参数。启动后首先创建admin用户。然后停止所有节点。</p>
<p>添加-keyFile参数。再启动集群。便可。</p>
<p>./bin/mongod -shardsvr -replSet shard1 -port 10020 -dbpath data/shard1a -keyFile /data/support/mongodb-2.2.1/mongokey -oplogSize 100 -logpath logs/shard1a.log -logappend -fork -rest --nojournal </p>hadoop Browse the filesystem打不开savagertnullhttp://liyanblog.cn/articles/2012/11/22/1353554151442.html2012-11-22T11:16:02+08:00<p>原因是需要访问集群中的节点时。采用的是主机名的方式,而不是ip。</p>
<p>如果我们在本机打开时我们的hosts文件里找不到主机名对应的地址。所以就打不开。</p>
<p>解决方法</p>
<p>在本机hosts文件里加入集群中的所有主机名对应ip即可。</p>linux 常用实用命令(自用)savagertnullhttp://liyanblog.cn/articles/2012/11/05/1352079715425.html2012-11-05T09:43:13+08:00<p>查看磁盘<br />df -h<br />查看当前目录下文件文件夹的大小。<br />du -sh *</p>
<p>查看系统cpu<br />top 然后按“1”:可以查看有多少核cpu<br />free -m 查看有多少内存。</p>
<p>查看2743线程占用的句柄<br />/usr/sbin/lsof -p 2743 <br />/usr/sbin/lsof -p 2743 |grep del |wc -l :2743进程相关的模块中包含del字符的数量。<br />wc是统计<br />-l是多少行 -c是含有多少字符</p>
<p>查看系统中线程占用句柄数目。和对应线程号<br />/usr/sbin/lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more <br />查看某个线程号的详细信息。<br />ps -aef|grep 24204</p>
<p>没有释放句柄占用的文件存放路径<br />用root权限登录 cd /proc<br />ls 会显示当前所有进程号命名的目录<br />找到对应进程进入<br />cd fd<br />ls<br />闪烁的为被标记为deleted的文件。</p>
<p>产生没有释放句柄的原因: 第一线程打开文件。另一个线程将该文件删除。就会出现给问题。将整儿进程kill掉才能释放全部句柄。</p>
<p>grep ERROR stdout.log |more -c 查看错误日志<br />grep ERROR stdout.log.* -c</p>
<p>获取某个线程所占用的端口<br />netstat -anp| grep 13755</p>
<p>查询某个端口是否被占用<br />netstat -a | grep 14444</p>
<p>用isysearch用户就可以登录root。(特地加入的功能)<br /> sudo su - root<br /> <br /> 登录mysql<br /> mysql -u username -p<br /> <br />vi中不支持输入中文。<br />解决方法:在esc状态下 :set encoding=utf-8<br />但只能用在当前窗口。<br />要想用户始终有效,需要再用户主目录<br />vim .vimrc<br />键入set encoding=utf-8</p>
<p>查看主机 uname -a<br />reboot重启机器</p>
<p>看压力工具线程 ps -ef|grep JM</p>
<p><br />查看某文件夹下文件的个数,包括子文件夹里的。 <br />ls -lR|grep "^-"|wc -l <br />查看某文件夹下文件夹的个数,包括子文件夹里的。 <br />ls -lR|grep "^d"|wc -l</p>
<p>grep的-i选项表示忽略大小写</p>
<p>vi跳到最后一行 ]]<br />vi跳到第一行 [[<br />vi跳到行首 $<br />vi跳到行末 ^</p>
<p>df -m 以M显示<br />df -h 以G显示</p>
<p>文件夹链接<br />ln -s /home/support/nosql_data nosql_data #nosql_data指向其他目录<br />删除<br />rm nosql_data</p>
<p>查看文件时显示行号<br />nl a.txt</p>
<p>修改文件夹所有者<br />Chown –R username /dir 打dir给username用户</p>
<p><br />查看磁盘io<br />vmstat 1 100</p>
<p>ll -t 按照最新时间排序</p>
<p>将ssh中的变量传给脚本做除计算。可以有小数。<br />a=2<br />b=4<br />echo $a,$b |awk -F "," '{print $1/$2}'</p>
<p>将脚本的结果传给ssh中的变量 (用`号包含)<br />L10=`grep "$TODAY" $FILE_PATH_STROE_GET|wc -l`</p>
<p>显示主机所有限制条件<br />ulimit -a</p>