标签归档:linux

vim xxx编辑完了后发现没有写权限

很多时候我们在vim一个文件然后保存的时候却发现没有写权限,这个很纠结,尤其是在编辑了一个文件的好几处,而且不在一屏的时候,其实有个变通的方法,原理稍后介绍,现在你可以在保存的时候使用下面的命令: :w !sudo tee % 原理是w ! 可以把当前尚未保存的内容输出到标准输入中,然后用tee 把标准输入的东西写入到%文件中。 而在vim中,%代表当前正在编辑的文件。

发表在 Operating System | 标签为 | 留下评论

error while loading shared libraries: libgearman.so.1

当运行 /usr/local/sbin/gearmand -d 时 出现 error while loading shared libraries: libgearman.so.1 运行一下 /sbin/ldconfig -v ,然后再去运行gearman就可以了 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表. ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

发表在 Operating System | 标签为 | 留下评论

实时统计搜索引擎抓取

先来看一张图: 这是一个简单的脚本,利用Tcpdump将当前网络包加以分析,把带有rebot标识的agent输出到终端,代码如下: tcpdump -i eth0 -l -s 0 -w – dst port 80 | strings | grep -i user-agent | egrep -i ‘bot|crawler|slurp|spider’ 关于Tcpdump的解释看维基百科 eth0是网卡接口,有可能你的不是这个名字,请运行ifconfig命令确认自己的网卡接口名称 这个脚本只是根据User Agent 来识别蜘蛛,如果有不轨者修改了自己的User Agent在访问,也会显示在这里 本脚本的意义不在于显示在终端上好玩,而是可以通过运行后台进程,然后将信息记到log中,再用一些简单的脚本就能大致统计出,各个搜索引擎的抓取次数、频率等

发表在 Operating System | 标签为 | 留下评论

rsync ssh 无密码增量同步设置

A:192.168.0.1 (目标/需要同步服务器) B:192.168.0.2(备份服务器) A: yum -y install xinetd vi /etc/xinetd.d/rsync 将“disable = no” chkconfig xinetd on service xinetd start vi /etc/rsyncd.conf [site] #name path = /var/www/html #copied directory hosts allow = 192.168.0.2 hosts deny = * list = true uid … 继续阅读

发表在 Operating System | 标签为 | 3 条评论

500 OOPS: cannot change directory错误

其实这个错误都遇到过好几次了,就是因为默认centos selinux限制了,不过今天居然一时没想起来 现在再做个记录吧: 他的系统是CentOS,是RH派系的。我把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误: 500 OOPS: cannot change directory:/home/ftp 原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。 //查看SELinux设置 # getsebool -a|grep ftp ftpd_disable_trans –> off 或者 ftp_home_dir–>off //使用setsebool命令开启 # setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1 //查看当前状态是否是on的状态 # getsebool -a|grep ftp ftpd_disable_trans –> on 或者 ftp_home_dir–>on … 继续阅读

发表在 Excellence Article | 标签为 , | 留下评论

N-Gram学习笔记

统计语言模型 假设一个句子S可以表示为一个序列S=w1w2…wn,语言模型就是要求句子S的概率P(S): 这个概率的计算量太大,解决问题的方法是将所有历史w1w2…wi-1按照某个规则映射到等价类S(w1w2…wi-1),等价类的数目远远小于不同历史的数目,即假定: N-Gram模型 当两个历史的最近的N-1个词(或字)相同时,映射两个历史到同一个等价类,在此情况下的模型称之为N-Gram模型。 N-Gram模型被称为一阶马尔科夫链。 N的值不能太大,否则计算仍然太大。 根据最大似然估计,语言模型的参数: 其中,C(w1w2…wi)表示w1w2…wi在训练数据中出现的次数 平滑技术的引入 传统的估计方法对于随机变量£的N次独立观察的样本容量N有如下要求: N>>K 其中K为随机变量能够取到的值的个数。 实际语言模型中往往无法满足这个要求。 例如:词性标注问题,共有140个可能的标记,考虑当前词前后两个词的影响的三阶模型。 K=140*140*140=2,744,000 给定一个10万词左右的人工标注训练集,即 N=100,00,可见训练数据显得非常不足。 假设k泛指某一事件,N(k)表示事件k观察到的频数,极大似然法使用相对频数作为对事件k的概率估计: p(k)=N(k)/N 在语言模型中,训练语料中大量的事件N(k)=0,这显然没有反映真实情况。我们把这个问题称为数据稀疏问题。 这种零值的概率估计会导致语言模型算法的失败,例如:概率值作为乘数会使结果为0,而且不能做log运算。 计数等价类 根据对称性原理,事件除了出现次数之外不应具有细节特征,即所有具有相同计数r=N(k)的事件k(事件出现的次数称为事件的计数)应当具有相同的概率估计值,这些计数相同的事件称为计数等价,将它们组成的一个等价类记为计数等价类Gr。 对于计数为r的计数等价类,定义nr为等价类中成员的个数,pr为等价类中事件的概率,R是最大可能出现的计数次数,则 交叉检验 交叉检验就是把训练样本分为m份,其中一份作为保留部分,其余m-1份作为训练部分。训练部分作为训练集估计概率pr,保留部分作为测试集进行测试。 我们使用Cr表示保留部分中计数为r的计数等价类的观察个数。对于保留部分使用最大似然法对进行概率pr进行估计,即使对数似然函数最大化: 使用拉格朗日乘子解决约束条件下的最大值问题,即: 对pr求偏导,得到交叉检验估计: 如果测试部分也作为保留部分的话,就是典型的极大似然估计: 留一估计 留一方法是交叉检验方法的扩展,基本思想是将给定N个样本分为N-1个样本作为训练部分,另外一个样本作为保留部分。这个过程持续N次,使每个样本都被用作过保留样本。 优点:充分利用了给定样本,对于N中的每个观察,留一法都模拟了一遍没有被观察到的情形。 对于留一方法,pr的极大似然估计为: Turing-Good公式 因为nRpR与1相比一般可以忽略,留一估计公式可以近似为: 留一估计可以利用计数r=1的事件来模拟未现事件,对于未现事件有如下估计: 这个公式就是著名的Turing-Good公式。 空等价类 … 继续阅读

发表在 Study & Reading | 标签为 , | 一条评论

AMQP协议介绍

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 AMQP在消息提供者和客户端的行为进行了强制规定,使得不同卖商之间真正实现了互操作能力。 JMS是早期消息中间件进行标准化的一个尝试,它仅仅是在API级进行了规范,离创建互操作能力还差很远。 与JMS不同,AMQP是一个Wire级的协议,它描述了在网络上传输的数据的格式,以字节为流。因此任何遵守此数据格式的工具,其创建和解释消息,都能与其他兼容工具进行互操作。 AMQP规范的版本: 0-8        是2006年6月发布 0-9        于2006年12月发布 0-9-1     于2008年11月发布 0-10      于2009年下半年发布 1.0 draft  (文档还是草案) AMQP的实现有: 1)OpenAMQ AMQP的开源实现,用C语言编写,运行于Linux、AIX、Solaris、Windows、OpenVMS。 2)Apache Qpid Apache的开源项目,支持C++、Ruby、Java、JMS、Python和.NET。 3)Redhat Enterprise MRG 实现了AMQP的最新版本0-10,提供了丰富的特征集,比如完全管理、联合、Active-Active集群,有Web控制台,还有许多企业级特征,客户端支持C++、Ruby、Java、JMS、Python和.NET。 4)RabbitMQ 一个独立的开源实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。RabbitMQ发布在Ubuntu、FreeBSD平台。 5)AMQP Infrastructure Linux下,包括Broker、管理工具、Agent和客户端。 … 继续阅读

发表在 Excellence Article | 标签为 | 留下评论

Linux网络管理中的几个小工具

1、ifconfig 提供基本的配置信息,在侦测错误IP地址、不正确的网络掩码和不适当的广播地址时,都很有用。 2、arp 提供Ethernet与IP地址的转换信息,它可以用不过来侦测网络上的IP地址配置错误的系统,Arp是Unix系统的一部分 3、netstat 提供各式各样的网络信息,通常用来显示个网络接口,socket及路由表等统计信息。 4、ping 做技术的地球人都知道的一个玩意,主要作用是指出IP包是否能够到达某台主机,同事也会显示分组包漏失与传送时间等统计信息 5、nslookup 提供DNS域名服务的有关信息 6、dig 也提供域名服务相关的信息,和nslookup类似的玩意 7、ripquery 提供系统发送或者接受RIP更新分组包的内容。riquery是gated软件一部分,但你并非一定要执行gated,它可以在所有执行RIP的系统上操作。 8、tracerute 告诉你到远程系统分组包使用哪一条路由,每一站的记录都会显示(理论上如此,实际上很多特殊应用的路由会关闭自己反馈信息,tracerute将跟踪不到,比如著名的万里长城) 9、snoop 分析每一个网络上主机间彼此传送的分组包。soop是一种TCP/IP协议分析器,用来分析分组包内容包括其表头,这是分析协议问题时最有用的工具之一。 10、tcpdump 功能和snoop类似,比前者提供更多的功能,以巨多的参数和强大的功能而闻名

发表在 Operating System | 标签为 | 留下评论

varnish安装记录

varnish和squid相比最大的优势就是简单快速,简单是安装和配置都简单,快速是运行速度比squid更快,当然,快的前提是varnish比squid占用更多的内存,估计当年设计squid的时候内存还是很贵的东西,所以更多的侧重硬盘,使用内存多,当然还有一个很显而易见的弱点是机器冷启动时候恢复缓存的时间相比squid要长。 wget http://downloads.sourceforge.net/project/varnish/varnish/2.0.6/varnish-2.0.6.tar.gz?use_mirror=ncu tar zxvf varnish-2.0.6.tar.gz cd varnish-2.0.6 ./configure  –prefix=/srv/varnish make make install 启动命令: /srv/varnish/sbin/varnishd -a :8088 -b localhost:8080 由于我指定了安装目录,所以加上了路径,-a参数表示varnish的监听端口,正常情况下应该监听是80端口,也就是web服务端口,我测试机上被使用掉了,所以用了8088端口, -b 是表示后端(backend)的地址,如果backend在这里指定,那么只能指定一个后端,如果使用的配置文件可以指定多个backend,我的配置文件位置位于/srv/varnish/etc/varnish。 在web服务器的目录中创建一个index.html文件,然后通过varnish进行代理访问. 第一次访问结果如下: 第二次访问结果如下: 根据请求头,我们看到的确是通过vanish来代理访问后端的,第一次访问age 为0 ,第二次访问age为71,说明这个文件已经在varnish中缓存了,此时可以通过/srv/varnish/bin/varnishstat 来查看一些参数,其中Hitrate 一行应该为1,因为命中了一次。 varnish 配置文件还是很有搞头的一个东西,有点类似与Nginx的语法,虽然不是很像,比如对正则的支持,可以绑定和去除head、Cookie等等功能,有时间的话,翻译一下varnish的introduction

发表在 Operating System | 标签为 | 一条评论

VPS上安装Centos的几个错误解决

error: C++ compiler cannot create executables…. 安装相关开发包: yum install gcc gcc-c++ gcc-g77 autoconf automake flex bison bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel Debian: apt-get install gcc g++ build-essential VPS为了保证效率和最小化安装,很多东西都没有所以出现上面的错误,有个偷懒的方法就是: yum groupinstall ‘Development Tools’ 这样和我们本地安装时勾选development tools的效果是一样的,什么编辑器啊,make,automake之类的都有了。 configure: error: *** … 继续阅读

发表在 Operating System | 标签为 | 留下评论