今天在检查一台机器的时候发现,机器上连接了很多用户,甚至有很多是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主要用于服务器同步,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*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^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 : 正则, 匹配, 表达式
最近想折腾下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
安装好了gcc,去编译发现,缺少g++++,于是再去
yum install g++
提示没有这个包。找了下资料,发现原来包的名字叫gcc-c++,再执行
yum install gcc-c++
就OK了。
Posted in : 技术共享by : YullinMarch 7, 20120 CommentsTag : gcc, g++
今天捣腾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
之前一直纠结一个问题,/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}' text3.使用perl:
perl -ne 'print if /^START$/ .. /^END$/' text
第三种目前还只能打印段落,没能匹配关键字,如果有更好的方法,欢迎讨论。
Posted in : 技术共享by : YullinDecember 24, 20113 CommentsTag : shell, sed, awk, perl, 脚本