- 博客(27)
- 资源 (4)
- 收藏
- 关注
原创 为什么进程无法Kill掉
前段时间,同事碰到一个很奇怪的问题。公司一台Linux服务器突然负载告警,经检查该机器拉起了非常多的Perl脚进程,而且一直未退出,导致处理器和内存负载均很高。为尽快恢复服务,我决定先kill掉该进程,然后再排查原因。但我使用kill -9 PID结束进程时,我却发现完全没有反应,而且也未报错,即使使用root用户也无法杀掉。于是google了一下,发现有下面两种情况进程是无法杀掉
2013-02-05 11:27:18
4579
原创 关于SecureCRT及Vim的使用
听说大部分的搞网络或者被网络搞的同学,每天都会使用SecureCRT在Linux下进行开发、测试等工作。正所谓“工欲善其事,必先利其器”,一个趁手的开发环境对工作效率的提升是不言而喻的。我在这里简单介绍一下个人在日常使用中积累下来的常用设置及操作,希望对不熟悉的朋友能有一点点参考作用,一家之言,欢迎拍砖。【SecureCRT篇】1、 自动登录服务器如果我们需要经常登录固定某
2012-09-19 21:45:01
7857
原创 一次Ajax的503错误的处理
【故障描述】近期有同学在使用一个内部应用系统时,偶尔会出现页面报错的情况,Ajax报503错误。【错误现象】在页面上操作并提交之后,过一段时间(通常不超过1分钟)之后Ajax会返回503错误码,无法正常使用。在其它同学机器上反复测试,错误一直无法重现。【错误定位】503在HTTP状态码中表示Service Unavailable,首先怀疑是服务端繁忙或逻辑异常。排查了后端R
2012-09-19 21:38:02
6734
原创 lsof命令导致CPU负载异常的问题总结
出于安全及统计需要,运营系统需要采集所有生产服务器的对外端口开放情况。4月27日凌晨,在近万台生产服务上批量推送了端口自检及扫描脚本,初期观察无异常。下午收到反馈有部分机器因为losf命令导致CPU负载很高,登录到机器上发现是自检脚本调用netstat及lsof命令引起单颗CPU负载过高。于是紧急回退脚本,同时向运维同事要了一台连接数较大的机器测试,测试结果显示在连接数非常大时lsof及n
2012-06-10 03:02:12
3500
原创 Perl获取指定进程的子进程
因为项目中需要获取指定进程的子进程个数以便控制并发,首先想到的是Linux命令方式,代码如下:sub check_job_process{ while (1) { eval { foreach my $ppid (keys %g_job_process) { my $cnt = `ps --no-hea
2012-06-10 03:01:33
1164
原创 Perl中哈希结构的深度拷贝
下午修改一段Perl代码的时候,遇到了一个深度拷贝的问题。废话少说,上代码: my ($rc, $refdata) = db_query($sql_text, "hashref"); unless ($rc) { return ($rc, $refdata); } my @arrayhash = (); foreach my
2012-06-10 03:00:31
1949
原创 Perl中的each方法
each函数用以一次一个键字/数值对的方式遍历一个散列。 在散列内部,它以一种看上去是随机的顺序维护它自己的记录。each 可以遍历这个序列是因为每个散列都记得上一次返回的是哪条记录。这个序列的实际的顺序可能在将来的 Perl 版本里会改变,但有一点可以保证,就是 keys(或者 values)函数在同一个(未修改)的散列上生成的顺序是一样的。 每个散列都有一个遍历器,由在
2012-06-10 02:59:04
2158
原创 Perl中foreach循环变量
看下面代码:#!/usr/bin/perl -wmy $x = 1;for $x (5 ... 8){ print "In the for loop, \$x=[$x]\n";}print "\nOut of for loop, \$x=[$x]\n";[/perl]输出结果如下:[perl]$ ./test.pl In the for loo
2012-06-10 02:55:57
9402
原创 Perl函数的声明与调用
关于Perl中函数的声明以及调用,举例如下:1、第一种使用方式:# declare but not definedsub fun;# call function, the () is not necessaryfun $arg; # okfun($arg); # ok# define the functionsub fun{ //do s
2012-06-10 02:51:47
3361
原创 设置WordPress博客头像
WordPress使用Gravatar为其提供头像功能。我们只需要注册 http://en.gravatar.com 并上传自己的个性化头像,然后在留言或者需要显示的头像的地方留下自己的邮箱即可。而且,Gravatar不仅仅限于WordPress博客使用,只要网站能够获取你的Email信息并且使用了Gravatar的API,那么都能够获取并显示自定义头像。
2012-06-10 02:48:46
889
原创 WordPress主题未汉化一例
下午打开WordPress博客,然后就注意到博客主题显示形式居然是中英文混杂的,比如“发表评论”被显示为“Leave a replay”。第一反应就是主题未汉化,因为后台控制面板是正常显示中文的。于是打开主题目录 wp-content\themes\twentyeleven\languages,目录下果然缺少中文模板。重新下载该主题,上传汉化文件zh_CN.mo和zh_CN.po到该目
2012-06-10 02:47:54
621
原创 WP-PageNavi分页插件的使用
WordPress默认自带的分页功能过于简单,于是准备使用第三方的分布插件WP-PageNavi。按照说明文档,应该把index.php中的下面代码← Older posts', 'twentyten' ) ); ?>→', 'twentyten' ) ); ?>替换为但问题来了,我找遍该文件,根本没有上述代码(可能和版本有关系)。于是只好自己想办法,然后注意到
2012-06-10 02:46:43
1423
原创 Linux服务器无法解析域名
公司很多内部服务为了负载均衡以及便于迁移,都配置了域名访问,而不是直接通过IP。今天在测试代码时,发现一台服务器报错404 Not Found,经确认该服务之前一直通常IP访问,最近刚好迁移了服务器位置,从而导致服务不可用。39_37:~ #ping tsysserver.wsd.comPING tsysserver.wsd.com (75.101.146.67) 56(84) byt
2012-06-10 02:41:42
1138
原创 使用libxml2库设置encoding的问题
因为用 xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); 语句默认生成的 XML 结构未指定编码。如下:于是使用 xmlNewDocProp 方法,发现无任何作用,猜测可能是libxml2的bug:xmlNewDocProp(doc, BAD_CAST "encoding", BAD_CAST "gb2312");使用方法 doc->
2012-06-10 02:36:04
2585
原创 数字与undef进行比较
看下面一个例子:#!/usr/bin/perl -wuse strict;my $var = undef;if($var > 0){ print "> 0\n";}elsif($var == 0){ print "== 0\n";}else{ print "< 0";}执行结果如下:[running]test@localhost:/
2012-06-10 02:34:21
415
原创 Shell生成随机数
对于大多数程序员来说,时不时都会用到随机数。那么,在Shell中如何生成随机数呢?一、使用RANDOM环境变量:在shell中有一个环境变量RANDOM,它的范围是0--32767。 如果我们想要产生0-25范围内的数,如何做呢?$RANDOM % 26用这个环境变量对26取模,就可以得到最小是0,最大是25的数了。 如果想得到1--68范围内的数呢?$RANDOM % 6
2012-06-10 02:31:41
869
原创 Perl脚本包含多个BEGIN及END块
众所周知,Perl中的BEGIN块在其它代码执行前执行,而END块在其它代码执行后执行。可是,如果Perl脚本中同时包含多个BEGIN及END块呢,其执行情况如何?看下面测试代码:#!/usr/bin/perl -wuse strict;END{ print "the [" . __LINE__ . "] end block\n"; }print "The other ["
2012-06-10 02:29:43
668
原创 FindBin模块在文件嵌套时的返回值
我们知道,Perl的FindBin模块可以取得当前正在运行的Perl脚本的文件路径以及文件名。可是,如果多个文件嵌套调用呢,例如文件A调用文件B,那么B中的FindBin返回的脚本名称应该是B还是A呢?这里做一个试验,详述如下:一、被调用脚本in.pl#!/usr/bin/perl -wuse FindBin;use strict;sub fun { print "
2012-06-10 02:28:21
505
原创 使用eval时的注意事项
在perl中,异常处理使用 eval { statements; }; if( $@ ) {do something } 结构捕获异常。这里有一点必须要注意:就是 eval 语句块内的 return 语句只从 eval 块内返回,并不会从它所在的方法中返回,即 eval {} 块内的 return 语句只退出当前 eval 块,并不会退出当前函数或方法。示例如下:#!/usr/bin/pe
2012-06-10 02:26:40
1234
原创 Perl中数组的delete操作
PERL中使用delete 操作符删除数组元素时,数组下标并不会减小,而仅仅是对应下标的值变为 undef。如 @array = ( 1, 2, 3 ) 这时下标为数组元素下标分别为0, 1, 2 ,数组包含三个元素。使用 delete $array[1] 之后,数组仍然包含三个元素,下标仍然是0,1,2,此时元素值为 (1, undef, 3 ),这一点在使用时要注意。
2012-06-10 02:25:03
1079
原创 Perl中数组的delete操作
PERL中使用delete 操作符删除数组元素时,数组下标并不会减小,而仅仅是对应下标的值变为 undef。如 @array = ( 1, 2, 3 ) 这时下标为数组元素下标分别为0, 1, 2 ,数组包含三个元素。使用 delete $array[1] 之后,数组仍然包含三个元素,下标仍然是0,1,2,此时元素值为 (1, undef, 3 ),这一点在使用时要注意。
2012-06-10 02:25:02
712
原创 Perl模块的安装
安装PERL模块过程如下: 1、进入Perl模块安装目录(推荐使用root账户)。 2、perl Makefile.PL #生成 Makefile 文件 3、make install #安装perl模块一个最简单的 Makefile.PL 文件如下所示:use ExtUtils::MakeMaker; #必须的#需要的模块,可省略require
2012-06-10 02:24:07
1259
原创 使用NFS在服务器间共享文件
今天手上负责的一个管理平台发布,测试的时候发现处理详情无法直接在页面展示。这里的处理详情是通过WEB后台的JAVA程序直接读取磁盘文件获取,但现在后台和WEB分布在两台机器上,当然无法显示。考虑到两台机器分别申请了不同的网络策略,互相不可迁移,必须通过某种机制保证两台服务器能够实时同步文件。考虑的方案有下面两种:1、使用 rsync 定期同步文件,比如每分钟同步,但这样延迟会比较大
2012-06-10 02:16:56
568
原创 使用find删除包含特殊字符文件
文件名如下:8_140_3g:~ #ll-rw-r--r-- 1 admin root 0 2011-11-29 23:18:41 --header=Host: 172.16.8.166直接用rm,删除失败8_140_3g:~ #rm --header\=Host\:\ 172.16.8.166 rm: unrecognized option `--header=Host: 1
2012-06-10 02:12:19
994
原创 一次由脚本升级引发的故障
在日常开发及运维工作中,可能会遇到各种各样的程序故障。大部分故障都是由代码bug或操作不当引起,下面就9月2日发生的一次脚本升级故障说起。最近对进程监控相关脚本进行优化,周五在几台机器上测试OK。考虑到这次修改并不涉及主要逻辑变更,还是选择了下班后更新脚本。晚上十点多钟的时候接到运维同事打来的电话,反映有好几台机器上的log_monitor.pl进程占用大量系统资源,严重影响业务程序运
2012-06-10 02:08:37
638
原创 Linux下killall命令的使用
我们知道,Linux下提供了一个killall命令,用于通过进程名称杀掉所有同名的进程。下午在检查一个角本Bug的时候,发现killall命令与kill命令的一个不同之处:假设有脚本 test.pl ,假设内容如下:#!/usr/bin/perl -wsleep 60; 则测试结果如下:1、如果通过 /home/MNET/m_yancyliu/tmp/x.pl 命令启动,此
2012-06-10 01:48:59
1361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人