LINUX断开用户连接

     今天在检查一台机器的时候发现,机器上连接了很多用户,甚至有很多是2月份就连在上面的,于是赶紧改了密码。断开这些莫名其妙用户:

      查看可以用who命令,结果显示如下:


root     pts/1        2012-02-23 17:05 (192.168.1.1)
root     pts/2        2012-02-24 17:56 (192.168.1.2)
root     pts/3        2012-02-24 21:17 (192.168.1.3)
root     pts/4        2012-02-25 16:21 (192.168.1.4)

     结束可以用fuser命令:


fuser -k /dev/pts/0

    0表示pts号,可以是1,2,3等你想断开的那个用户。


 

 

 

 

 

Posted in : 技术共享by : YullinMay 9, 20120 CommentsTag : fuser, 断开用户

自动同步软件推荐-SERSYNC

最近在弄两台服务器的内容同步,公司有自己研发的同步软件,不过不是太成熟,在网上发现一款简单好用的。推荐给大家:sersync.

先来看下介绍啊:

sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:

1.sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。

2.相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。

3.另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。

4.本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。

5.本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。

6.本项目socket与http插件扩展,满足您二次开发的需要。

项目托管于GOOGLE:http://code.google.com/p/sersync/

作者博客:http://blog.johntechinfo.com/

 

此软件同步数据是使用rsync,所以首先要配好rsync服务,rsync的配置就不在此详说了。sersync有编译好的二进制文件,可以下载下来直接使用,非常方便。 其配置文件为一个xml文件,其中主要用到几处:


        <localpath watch="/opt/tongbu">
            <remote ip="127.0.0.1" name="tongbu1"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>


其中的“/opt/tongbu”为你要监视的目录路径,当这个目录下有文件更新时,sersync会自动调用rsync来进行同步;“127.0.0.1”修改为你要同步的远程主机;“tongbu1”为远程rsync模块名。还可以添加多个远程rsync主机。

另一处为:


        <rsync>
            <commonParams params="-artuz"/>
            <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>


auth start="false"表示不适用验证,改为ture,则使用验证;“root”为远程rsync用户名;“/etc/rsync.pas”则为远程验证使用的密码文件。

Read More...

Posted in : 技术共享by : YullinApril 25, 20122 CommentsTag : rsync, sersync, 同步

常用正则匹配表达式

经常要用正则匹配一些特定的规则,每次都要去想或者找,真麻烦,收集一下,以后使用就方便了:

      匹配双字节字符(包括汉字在内):[^x00-xff] 

  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

  匹配空白行的正则表达式:ns*r 

  评注:可以用来删除空白行 

  匹配HTML标记的正则表达式:<(S*?)[^>]*&gt;.*?|<.*? /> 

  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

  匹配首尾空白字符的正则表达式:^s*|s*$ 

  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 

  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 

  评注:表单验证时很实用 

  匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 

  评注:网上流传的版本功能很有限,上面这个基本可以满足需求 

  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 

  评注:表单验证时很实用 

  匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 

  评注:匹配形式如 0511-4405222 或 021-87888822 

  匹配腾讯QQ号:[1-9][0-9]{4,} 

  评注:腾讯QQ号从10000开始 

  匹配中国邮政编码:[1-9]d{5}(?!d) 

  评注:中国邮政编码为6位数字 

  匹配身份证:d{15}|d{18} 

  评注:中国的身份证为15位或18位 

  匹配ip地址:d+.d+.d+.d+ 

  评注:提取ip地址时有用 

Read More...

Posted in : 技术共享by : YullinMarch 22, 20122 CommentsTag : 正则, 匹配, 表达式

Zend Studio SSH端口配置

最近想折腾下PHP,找了下PHP的IDE。PHPEclipse,看起来很美,装上后弄了半天sftp也没搞定,于是放弃,试了下zend studio挺好使,装上即可用。

这里主要想说下使用sftp的时候,配置非默认端口的情况:

当建立好连接后,在Remote Systems窗口找到Sftp Files,右键打开Properties,即可看见端口配置的地方。Sftp使用起来可比ftp神马的方便多了!

Posted in : 技术共享by : YullinMarch 12, 20120 CommentsTag : zend studio, ssh, sftp

REDHAT安装g++

安装好了gcc,去编译发现,缺少g++++,于是再去


yum install g++

提示没有这个包。找了下资料,发现原来包的名字叫gcc-c++,再执行


yum install gcc-c++

就OK了。

Posted in : 技术共享by : YullinMarch 7, 20120 CommentsTag : gcc, g++

php报错:缺少mysqli 扩展.请检查PHP配置

今天捣腾PHP的时候遇到一个报错:“缺少mysqli 扩展.请检查php配置”,由于当初没有编译的时候并没有加上这个扩展,所以得补上。方法如下:

1.首先找到当初的源码包,如果已删除,可以下载一个同一版本的PHP源码包,解压后进入ext/mysqli/目录,然后如下


#/usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
#./configure --prefix=/usr/local/mysqli --with-php-config=/usr/local/php/bin/php-config  --with-mysqli=/usr/local/mysql/bin/mysql_config
#make && make test
#make install

2.编辑php.ini,找到extension_dir = "./"修改为


extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613/" 
extension = "mysqli.so"

3.重启APACHE即可生效,如果重启APACHE无效,重启服务器即可搞定。

Posted in : 技术共享by : YullinFebruary 8, 20120 CommentsTag : php, mysqli, lamp

细节问题:resolv.conf文件中nameserver写法

之前一直纠结一个问题,/etc/resolv.conf中的是有nameserver记录的,但每次wget的时候就会报“Temporary failure in name resolution.”。 今天才注意到nameserver记录前面有个空格。将空格删除之后即正常。魔鬼真是藏在细节中啊!

Posted in : 技术共享by : YullinJanuary 8, 20120 CommentsTag : dns, linux, resolv.conf

脚本笔记-提取包含某个关键字的段落

今天尝试在将文本分段后,打印包含某个关键字的段落的方法,在网上找了几种方法,列举一下:

1.使用sed:


  sed -n '/REGEX1/,/REGEX2/p' text |sed 's/REGEX1/\nREGEX1/' |sed -e '/./{H;$!d;}' -e 'x;/KEYWORD/!d'

2.使用awk:  


awk 'BEGIN{RS="REGEX1"} /KEYWORD/ {print $0}' text

3.使用perl:  


perl -ne 'print if /^START$/ .. /^END$/' text

  第三种目前还只能打印段落,没能匹配关键字,如果有更好的方法,欢迎讨论。

Posted in : 技术共享by : YullinDecember 24, 20113 CommentsTag : shell, sed, awk, perl, 脚本