有用的linux操作命令

======================================================

rdesktop 192.168.0.116 -u administrator  -g 800x576

rdesktop 119.191.58.75 -u administrator  -g 800x576

rdesktop gl.lt56.net -u administrator  -g 800x576
=========================================================

1.
定时采集功能

定时访问aaa_caiji_huoqu.php 他远程访问getdata_web.asp(此文件能够异步提交到aaa_caiji_put_notiaozhuan.php)

screen -S dingshi
cd /home/wwwroot/56.souwf.com/
./dingshi_getdata.sh


2.
定时合并功能

screen -S hebing
cd /home/wwwroot/56.souwf.com/
./shstart_hebing.sh
或者
./suoyin_hebing.sh

而suoyin_addwuliu.sh 不用 因为已经放到开机里头去了


! 注意 注意 注意 手动合并索引数据库

cd /home/wwwroot/56.souwf.com/
./hebing_once.sh


/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf wuliu --rotate



重启定时
/etc/init.d/crond restart  
 
/sbin/service crond restart
==================================================


查看系统tcp连接中各个状态的连接数。
 
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看和本机80端口建立连接并状态在established的所有ip
 

netstat -an |grep 802 |grep ESTA |awk '{print$5 "\n"}' |awk 'BEGIN {FS=":"} {print $1 "\n"}' |sort |uniq


输出每个ip的连接数,以及总的各个状态的连接数。
 

netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}' 


netstat -nat|grep -i "802"|wc -l  查看IP

netstat -nat|grep -i "801"|wc -l

netstat -nat|grep -i "80"|wc -l

每次开机后 需要运行的命令 

==================================================
==================================================


==================================================
查看几根内存条 

dmidecode |grep -A16 "Memory Device$"
或
dmidecode -t memory

dmidecode -t 可以看到 可以显示的相关信息



全选 删除

dG

wu423 4231192
 
js 输出 

<div id="test"></div>

alert(document.getElementById("test").innerHTML);


tar czvf aa.tar.gz aa


vi /usr/local/nginx/conf/vhost/www.jbtxyq.com.conf                                                                                                                                                                                                                                                                                                                                                                        


不让他关闭 显示屏 setterm -blank 0


开机自动加载命令: vi /etc/rc.local


vi /etc/sysconfig/iptables

cd /usr/local/nginx/conf/vhost



56.souwf.com.conf

./configure --with-php-config=/usr/local/php/bin/php-config
 
dos2unix myshell.sh
 

解决问题:

首先,

vi /usr/local/php/etc/php-fpm.conf
 
ps -aux
 
/home/wwwroot/56.souwf.com/sha.sh 
 
killall php 杀死所有php的守护进程

重新启动

/etc/init.d/crond restart 

定时操作 编写一个脚本:

#!/bin/sh
while [ 1 ]
do
echo "start index addwuliu!";
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf addwuliu --rotate
sleep 5
done

开机自动运行命令:

vi /etc/rc.d/rc.local



定时操作 用系统自带的方法:

vi /etc/crontab
*/1 * * * * root sh  /home/wwwroot/56.souwf.com/sha.sh 


需要执行命令:useradd -d / -s /sbin/nologin 321liang 添加上帐号指定好ftp帐号的根目录,再执行:passwd 321liang 设置上密码,登录就可以了。

useradd -d /home/wwwroot/56.souwf.com/ftpzhongzhuan -s /sbin/nologin liulei


 启动 memcached

 
5 启动
# /usr/bin/memcached -d -m 64 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid 

参数说明: 
-d 启动为守护进程 
-m <num> 分配给Memcached使用的内存数量,单位是MB,默认为64MB 
-u <username> 运行Memcached的用户,仅当作为root运行时 
-l <ip_addr> 监听的服务器IP地址,默认为环境变量INDRR_ANY的值 
-p <num> 设置Memcached监听的端口,最好是1024以上的端口 
-c <num> 设置最大并发连接数,默认为1024 
-P <file> 设置保存Memcached的pid文件,与-d选择同时使用 
 
  

phpmyadmin出错


要把你安装的PHP目录的temp目录下的子文件全部删除即可


curl "http://192.168.152.129:1218/?name=qiuxu&opt=put&data=lovelovelover qiuxuxiuqu&auth=mypass123"

http://192.168.152.129:1218/?name=qiuxu&opt=put&data=lovelovelover qiuxuxiuqu&auth=mypass123

http://192.168.152.129:1218/?name=qiuxu&opt=get&auth=mypass123


 


查看进程为 ps 或者 ps-A


=========== 本地的  =======

chmod -R 777 /home/wwwroot/*

cd /home/wwwroot/
ulimit -SHn 65535 
httpsqs -d -p 1218 -x /data0/queue

nohup /usr/local/php/bin/php /home/wwwroot/aaa_select_shouhu.php 2>&1 > /dev/null &
nohup /usr/local/php/bin/php /home/wwwroot/aaa_add_shouhu.php 2>&1 > /dev/null &


nohup /usr/local/php/bin/php /home/wwwroot/aaa_edit_shouhu.php 2>&1 > /dev/null &
nohup /usr/local/php/bin/php /home/wwwroot/aaa_delete_shouhu.php 2>&1 > /dev/null &

============== 56.souwf.com:801 网上的 ================= 

chmod -R 777 /home/wwwroot/56.souwf.com/*
cd /home/wwwroot/56.souwf.com/
ulimit -SHn 65535 
httpsqs -d -p 1218 -x /data0/queue


chmod -R 755 /home/wwwroot/phpmyadmin

*********** 开机启动 维护进程 ********************

./shstart.sh          
./shstart_add.sh
./shstart_dantiao.sh
./shstart_search.sh
./shstart_first.sh



./shstart_caiji.sh 采集来

./shstart_gyc.sh  送出去







./shstart_keywords.sh

./shstart_old.sh

./shstart_tj.sh

./shstart_tj_search.sh

./shstart_user.sh



*********** 维护进程 ********************

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_dantiao_shouhu.php 2>&1 > /dev/null &          //单条 只负责更新内存信息 保持显示为20条

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_search_shouhu.php 2>&1 > /dev/null &           //搜索  

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_first_shouhu.php 2>&1 > /dev/null &          //如果 重启机器后 出现内存为空 负责从数据库查出20条

 

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_select_shouhu.php 2>&1 > /dev/null &           //显示 负责查询第几页的信息 

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_add_shouhu.php 2>&1 > /dev/null &    //添加  将数据插入数据库,发送查询信息到dantiao 队列



nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_keywords_shouhu.php 2>&1 > /dev/null &    //添加  将常用关键词插入数据库

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_old_shouhu.php 2>&1 > /dev/null &    //添加  将历史记录插入数据库


nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_caiji_shouhu.php 2>&1 > /dev/null &      //采集  将数据先处理查出城市ID 插入数据库,发送查询信息到dantiao 队列

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_caiji.php 2>&1 > /dev/null &  定时刷采集页面 


nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_tj_shouhu.php 2>&1 > /dev/null &      //统计当前城市信息条数 


nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_tj_search_shouhu.php 2>&1 > /dev/null &      //统计当前城市 搜索结果 信息条数 

nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_user_shouhu.php 2>&1 > /dev/null &      //在线用户统计 


nohup /usr/local/php/bin/php /home/wwwroot/56.souwf.com/aaa_gyc_shouhu.php 2>&1 > /dev/null &  把本系统用户发布的信息 送出去 


-------------------------------------------------------------------------------------------------------

【启动coreseek】

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/lovelover.conf --pidfile 


【停止coreseek】

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/lovelover.conf --stop


【启动httpcws】



cd /usr/local/httpcws-1.0.0-i386-bin/


ulimit -SHn 65535

/usr/local/httpcws-1.0.0-i386-bin/httpcws -d -x /usr/local/httpcws-1.0.0-i386-bin/dict/



【索引coreseek】

注意 索引的时候把配置文件改成127.0.0.1

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf --all    ##--all表示全部索引 开始时索引
 
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf --rotate --all  ##如要已启动服务,要更新索引,请使用
 
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf hnld --rotate





/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf addwuliu --rotate #只更新addwuliu

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf wuliu --rotate #只更新wuliu


/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf --merge wuliu addwuliu --rotate   #合并 wuliu addwuliu 这两个

 
---------------------------------------------------------------------------------------------------------
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf --merge baddown addwuliu --rotate 

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/lovelover.conf baddown --rotate


每分钟执行一次:*/1 * * * * (加可执行脚本)

每10秒执行一次:*:10 * * * * (加可执行脚本)

看明白了,每分钟执行和每10秒执行的格式区别。



*/1 * * * * root sh /home/wwwroot/56.souwf.com/build_addwuliu_index.sh

*/1 * * * * echo `date`" ljn" >> /home/wwwroot/56.souwf.com/ceshi_shuchu.txt

1-59 * * * * echo `date`" ljn" >> /opt/lijie/lj.txt

1-59 * * * * root sh /home/wwwroot/56.souwf.com/build_addwuliu_index.sh



 




(2)crontab

  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

  /sbin/service crond start //启动服务

  /sbin/service crond stop //关闭服务

  /sbin/service crond restart //重启服务

  /sbin/service crond reload //重新载入配置

  /sbin/service crond status //查看服务状态

  你也可以将这个服务在系统启 动的时候自动启动:

  在/etc/rc.d/rc.local这个脚本的末尾加上:

  /sbin/service crond start

  现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

  1、直接用crontab命 令编辑

  cron服务提供 crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

  crontab -l //列出某个用户cron服务的详细内容

  crontab -r //删除某个用户的cron服务

  crontab -e //编辑某个用户的cron服务

  比如说root查看自己的cron设置:crontab -u root -l

  再例 如,root想删除fred的cron设置:crontab -u fred -r

  基本格式 : 

  *  *  *  *  *  command


  分  时  日  月  周  命令

  第1列表示分钟1~59 每分钟用*或者 */1表示

  第2列表示小时1~23(0表示0点)

  第3列表示日期1~31

  第4列表示月份1~12

  第5列标识号星期0~6(0表示星期天)

  第6列要运行的命令

  crontab文件的一些例子:

  #每晚的21:30重启apache。

  30 21 * * * /usr/local/etc/rc.d/lighttpd restart

  #每月1、10、22日

  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

  #每天早上6点10分

  10 6 * * * date

  #每两个小时

  0 */2 * * * date

  #晚上11点到早上8点之间每两个小时,早上8点

  0 23-7/2,8 * * * date

  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

  0 11 4 * mon-wed date

  #1月份日早上4点

  0 4 1 jan * date



=============================================

/usr/local/mysql/bin/mysql -localhost -root -262400 -wuliu -e 'REPLACE INTO sph_counter SELECT 1, MAX(max_doc_id) FROM msg'







下面整个的贴一下代码。

1、首先是建立索引
/usr/local/coreseek/bin/indexer --all --config /data/coreseek/conf/post.conf

2、启动守护进程
/usr/local/coreseek/bin/searchd --config /data/coreseek/conf/post.conf

3、+记录

4、更新增量索引,这个写在脚本里,因为需要每分钟更新。

文件名:/data/coreseek/sh/build_delta_index.sh
内容:/usr/local/coreseek/bin/indexer post_delta --config /data/coreseek/conf/post.conf --rotate

5、合并索引,这个也要写在脚本里,每天合并一次
文件名:/data/coreseek/sh/build_main_index.sh
内容:/usr/local/coreseek/bin/indexer --merge post_main post_delta --rotate --config /data/coreseek/conf/post.conf  //合并索引
/usr/local/mysql/bin/mysql -hhostname -uusername -ppassword -Ddbname -e 'REPLACE INTO sph_counter SELECT 1, MAX(PostId) FROM Post' //更改maxid
/usr/local/coreseek/bin/indexer post_delta --config /data/coreseek/conf/post.conf --rotate >>/var/log/coreseek/deltaindexlog //重建增量索引

再贴下crontab规则
*/1 * * * * /bin/sh /data/coreseek/sh/build_delta_index.sh
30 1 * * * /bin/sh /data/coreseek/sh/build_main_index.sh
这个基本上是没有问题了,冏,要是再有问题,我真不想碰了。

昨天跟今天的其他时间应该是在写demo吧,= =,不想自己写页面,直接从coreseek.cn上扒下来的,居然是table,现在基本实现的功能,高亮这块还要做一下,真想说,sphinx真是个BT!搜索结果只返回id,BuildExcerpts这个用来产生文档片段的方法,我就更不说啥了。刚看文档看到UpdateAttributes,我居然还没处理,冏啊冏。

这两天差不多都干这些了。文档还木有写,木时间了,分词的话,只能用词库了。


===========================================================

 mount -t xfs /dev/sdb /home1


/dev/sdb        /home1     xfs       defaults 0 0




查看占用空间大小  du -sh /home1/wwwroot

显示行号::set nu

调到制定行::200


要自当前光标位置向上搜索,请使用以下命令:

/pattern Enter 

其中,pattern 表示要搜索的特定字符序列。

要自当前光标位置向下搜索,请使用以下命令:

?pattern Enter 

 
wget -c

 

    free -m          #查看内存占用

  free -m -t       #看内存占用并统计

  free -n -t -s 2  #看内存占用并统计,每两秒刷新一次

查看版本 lsb_release -a 2


yum install screen
=============================================
http://192.168.194.129
===============
Linux 关闭mysql日志 删除mysql-bin.0000*
添加评论 2011年6月10日 枫子 
安装完lnmpa 慢慢注重优化了,首先就是要删除mysql日志,删除mysql-bin.0000*类似的文件 看着烦躁。

查看源代码打印帮助 登录  

   

/usr/local/mysql/bin/mysql -u root -p  

   

输入密码  

   

reset master;  

   

http://61.67.209.168:8080/wwwroot/souqg-from-bq12/souqg-from-bq12-20111017.rar 

    

mysql日志满了导致LNMP启动失败


记得vps重启是两个月之前,今天服务商发邮件来说母机今天下午维护,然后问题出现了,维护完全之后,博客访问不了了。

我到shell里面去/root/lnmp restart,显示错误,nginx不在运行!我觉得会不会是删错文件导致的,于是升级nginx.。

升级完成之后,再次restart,这次显示php、mysql启动不了。

因为之前看过mysql日志满了会导致lnmp启动失败的文章,于是到/usr/local/mysql/var/里面看日志,吓了一跳,有1个日志文件1G多,mysql-bin.0000* 类似的文件有19个。立即删除了,lnmp可以正常启动了。

为了避免再次这样杯具,决定关闭mysql日志。

修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

再这两行前面加上#,将其注释掉(大概在第49行和第56行),再执行/etc/init.d/mysql restart即可。


   

即可。 

Linux Linux, mysql 




==========================

./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --without-iconv

查了半天,改Makefile,configure都不可靠。最后在官站上查到:

./configure –without-iconv,就好了。NND,那干嘛还要这个iconv嘛。

看出错代码里,是在xmlunknowencode时才用到。我们都用utf-8,很多时候可能压根用不着这个功能!如若需要的话,可以加上这个lib

---------------------

ifconfig 查看IP

=============================
rar for linux 下载3.6.0

下载地址: http://www.rarsoft.com/rar/rarlinux-3.6.0.tar.gz
下载后就是用tar zxvf  命令解压,然后make install安装下。
如果要解压直接用unrar x  *.rar就可以了。会按安装目录来解压。

===================================================



查看当前路径:pwd

chmod -R 755 phpMyAdmin

查看磁盘大小:df -lh


更改权限:chmod -R 777 /home/admin

删除文件夹:rm -rf /home/wwwroot/s

删除文件:rm -f sss.html


删除某个目录下 所有文件:

cd aaa

rm -rf *



mv 移动
cp 复制r

如何修改安装LNMP时输入的域名?
修改方法:编辑/usr/local/nginx/conf/nginx.conf 查找安装时输入的域名,修改为你想设置的域名,保存,执行:/usr/local/nginx/sbin/nginx -s reload 重启即可。 

unrar x sss.rar 


hillwood@hillwood-opensuse:~/Desktop> locale
LANG=zh_CN.utf8
LC_CTYPE=zh_CN.utf8
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=

批量替换
find -name '*.php' | xargs perl -pi -e 's|搜1|2|g'





kloxo apache 安装在:/etc/httpd

/etc/httpd/conf

网站安装在:

/home/admin/baddown.com




cd /usr/local/
wget http://httpcws.googlecode.com/files/httpcws-1.0.0-i386-bin.tar.gz
tar zxvf httpcws-1.0.0-i386-bin.tar.gz
rm -f httpcws-1.0.0-i386-bin.tar.gz
cd httpcws-1.0.0-i386-bin/
ulimit -SHn 65535
/usr/local/httpcws-1.0.0-i386-bin/httpcws -d -x /usr/local/httpcws-1.0.0-i386-bin/dict/




----------------coreseek----------==========================================================================

以下使用MySQL数据源进行说明,其他系统可以参考配置。关于MySQL数据源的具体配置,可以查看:MySQL数据源配置说明



第一步:安装

  安装coreseek请参考:BSD、Linux、Windows系统安装测试说明文档;

  安装后,请确保安装测试说明文档中的各项测试都可以通过,以便coreseek做好准备,为你服务!



第二步:配置:

  在BSD/Linux安装包的testpack/etc目录下,放置了演示的配置文件;

  在Windows安装包的etc目录下,也放置了演示的配置文件;



  如果是mysql数据库,可以将csft_mysql.conf拷贝为自己的配置文件,然后进行修改!其他数据库可以参考python数据源;



  要查看配置的细节,可以访问Coreseek/Sphinx(0.9)中文手册了解详情和具体的配置参数。



  配置文件的核心,为source和index配置,两者是成对出现的;如果需要设置针对多种情况或者多个数据表的索引,则可针对每一个编写对应的source和index配置;

  source表示从何处取得原始数据,也就是数据源;index表示取得数据后如何索引; 

  source配置中,请确保可以使用给出的数据库服务器地址、用户、密码连接到对应的数据库,执行获取数据的SQL语句可以得到数据;否则coreseek无法得到数据,也就无法提供服务了。

  一般情况下,sql_query给出读取数据的SQL语句,第一列为自增的ID字段,然后可以包括字符串字段,整数数值字段;整数数值字段需要在后面使用sql_attr_uint明确标注,有多个则分别标注即可。 

  index配置中,需要注意修改path参数,确保不与其他的搜索服务发生冲突;最后的search的配置中,也要修改对应的路径参数和端口参数,以防止冲突发生;






url.rewrite-once = (
"^(.*)/search-list/(.*)-1.html$" => "$1/tag.php?q=$2",
"^(.*)/search-list/(.*)-([0-9]+).html$" => "$1/tag.php?q=$2&page=$3",
"^(.*)/search-list/(.*)_p1.html$" => "$1/search-list/class.php?w=$2",
"^(.*)/search-list/(.*)_p([0-9]+).html$" => "$1/search-list/class.php?w=$2&page=$3",
)



第三步:测试

  首先,索引:使用bin目录下的indexer,执行:indexer -c 配置文件的路径 index名称


# /usr/local/coreseek/bin/indexer -c etc/csft.conf --all    ##--all表示全部索引


/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/mysql_csft.conf --all



##Windows下面为bin\indexer -c etc\csft.conf --all
##以下为正常索引全部数据时的提示信息:部分数据信息根据实际数据情况变化
    Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
    Copyright (c) 2007-2010,
    Beijing Choice Software Technologies Inc (http://www.coreseek.com)

     using config file 'etc/csft.conf'...
    indexing index '索引名称'...
    collected 3 docs, 0.0 MB
    sorted 0.0 Mhits, 100.0% done
    total 3 docs, 7585 bytes
    total 0.075 sec, 101043 bytes/sec, 39.96 docs/sec
    total 2 reads, 0.000 sec, 5.6 kb/call avg, 0.0 msec/call avg
    total 7 writes, 0.000 sec, 3.9 kb/call avg, 0.0 msec/call avg
  如果出现以上对应的提示,则表示配置正确,可以正常索引;



  随后,启动搜索:使用bin目录下的searchd,执行:searchd -c 配置文件的路径 --console


# /usr/local/coreseek/bin/searchd -c etc/csft.conf --console

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/mysql_csft.conf --console 




/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/mysql_csft.conf --pidfile 



##Windows下面为bin\searchd -c etc\csft.conf --console

##以下为正常开启搜索服务时的提示信息:其中的port可以在配置文件中修改



    Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
    Copyright (c) 2007-2010,
    Beijing Choice Software Technologies Inc (http://www.coreseek.com)

    using config file 'etc/csft.conf'...
    listening on all interfaces, port=9312



  如要继续测试搜索功能,请不要停止searchd,否则其他程序将无法连接到搜索服务端

  BSD/Linux环境下,测试成功后:

    如要后台运行服务,则使用:searchd -c 配置文件的路径,将searchd作为后台服务运行;

    如果要停止后台服务,则使用:searchd -c 配置文件的路径 --stop;

    如果要更新后台服务的索引,则使用:indexer -c 配置文件的路径 index名称 



  然后,可以参考安装测试说明文档使用bin目录下的search进行测试,检查搜索是否可以正常进行;

------------------------------------






coreseek在windows下的配置、运行与实时更新(sphinx)  2010-11-09 17:22:53|  分类: 服务器管理 |  标签: |字号大中小 订阅 .

官方文档有很多疏漏,故此多方尝试,将正确的贴出来:

1、bin/csft_mysql.conf:

#源定义
source mysql
{
type = mysql

sql_host = localhost
sql_user = root
sql_pass = merry05
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title,content FROM documents
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
sql_attr_uint = group_id #从SQL读取到的值必须为整数
sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性

sql_query_info = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息
sql_query_post_index = REPLACE INTO counter (uid,maxid) VALUES (1,$maxid)
}

#index定义
index mysql
{
source = mysql #对应的source名称
path = var/data/mysql
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = etc/ #Windows环境下设置,/符号结尾
charset_type = zh_cn.utf-8
#charset_table=……
ngram_len=0
}

source delta:mysql
{
    sql_query_pre = SET NAMES utf8
    sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title,content FROM documents WHERE id>(SELECT maxid FROM counter WHERE uid=1)
}

#增量索引
index delta:mysql
{
    source = delta #对应的source名称
    path = var/data/mysql_delta #这里的path要与mysql不一样,不然会运行时错误,进程强制退出
}


#全局index定义
indexer
{
mem_limit = 128M
}

#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = var/log/searchd_mysql.pid
log = var/log/searchd_mysql.log
query_log = var/log/query_mysql.log
}

注解:mysql为主索引,delta为增量索引

2、进行索引

bin/indexer --config etccsft_mysql.conf mysql

3、启动searchd进程

bin/searchd --config etccsft_mysql.conf –-pidfile

注解:–pidfile这个选项一定要添加,强制生成pid,不然在合并索引时会报pid文件无法打开错误(这项非常重要)

4、生成增量索引

bin/indexer –-config etccsft_mysql.conf delta -–rotate

5、主索引和增量索引合并

bin/indexer –-config etccsft_mysql.conf -–merge mysql delta -–rotate

在searchd进程运行时–-rotate选项一定要添加,详见文档

如果要在合并,将某些文档移出索引时,需要:

bin/indexer –-config etccsft_mysql.conf -–merge mysql delta -–rotate -–merge-dst-range group_id 2 2

注解:-–merge-dst-range是合并生成主索引的范围开关;这句的意思是只有主索引的group_id属性为2,并且子索引的group_id属性为2,才能被合并生成;否则会被过滤掉,移出主索引。
过滤器可以多个,并且全部满足时才能在最终合并的索引出现



==============================================================



建立开机启动sphinx服务,此处一定要加入–pidfile文件,以免shell自启动找不到进程pid。
view source
print?
 vi /etc/rc.local
/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/csft.conf --pidfile /usr/local/coreseek/var/log/searchd.pid

每半小时重建索引

 vi /usr/local/coreseek/bin/build_index.sh
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --rotate --all --quiet

 #修改文件执行权限
chmod +x /usr/local/coreseek/bin/build_index.sh

 #修改crontab
crontab -e
*/30 * * * * /bin/bash /usr/local/coreseek/bin/build_index.sh


=====================================


select top 6 a1.s2,a1.s22,a2.shiname as shiname1,a3.shiname as shiname2 from shop_hymsg as a1 left join shop_szshi as a2  on a1.s2=a2.id 
left join shop_szshi as a3 on a1.s22=a3.id 

-




tar 解压缩命令 
tar

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg 
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 

# tar -rf all.tar *.gif 
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 

# tar -uf all.tar logo.gif 
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 

# tar -tf all.tar 
这条命令是列出all.tar包中所有文件,-t是列出文件的意思 

# tar -xf all.tar 
这条命令是解出all.tar包中所有文件,-x是解开的意思 

 


压缩


tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg


tar –czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz


tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2


tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z


rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux


zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

 

解压


tar –xvf file.tar //解压 tar包


tar -xzvf file.tar.gz //解压tar.gz


tar -xjvf file.tar.bz2   //解压 tar.bz2


tar –xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip


总结


1、*.tar 用 tar –xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar –xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar –xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar –xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压



--------------------mysql 获取随机数--------------------

SELECT * 
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 
WHERE t1.id >= t2.id 
ORDER BY t1.id LIMIT 1;


php 缓冲解决方案:

php.ini

output_buffering= Off;


nginx.conf:

                fastcgi_buffer_size 1k;
                fastcgi_buffers 4 1k;
                fastcgi_busy_buffers_size 1k;
                fastcgi_temp_file_write_size 1k;
                fastcgi_intercept_errors on;

                gzip off;

============================================================================================================

【安装Memcache的PHP扩展】
Memcache 就是在服务器监听端口,通过一定的协议交互来写入数据到服务器内存中,或者获取一些值。如果你了解Memcache的交互协议,完全可以自己构建 Memcache的客户端,目前网上也有很多构建好的Memcache客户端的PHPClass,可以直接用,不过我这里为了效率,还是决定使用PECL 中Memcache的专用扩展,因为毕竟是用C写的,效率比较高,而且安装部署比较方便。
下载PECL中的Memcache,因为我的客户端是Windows XP,所以需要下载dll版,我的PHP版本是PHP 5.1.4,必须下载PHP 5.1专用的扩展。
PECL官网:http://pecl.php.net (For Linux)
                       http://pecl4win.php.net(For Windows)
扩展下载: http://pecl4win.php.net/download ... .2/php_memcache.dll
如果你的PHP是其他版本,请到 http://pecl4win.php.net/ext.php/php_memcache.dll 选择你相应的版本,如果是Linux下的PHP,请到 http://pecl.php.net/package/memcache 选择相应想要下载的版本。
下载完了以后,我把php_memcache.dll 拷贝到 c:\php5\ext 目录下,如果你的扩展目录是在是缺省路径,(就是没有修改过php.ini中的扩展路径) 请拷贝到 c:\windows\ 目录下,如果是Linux平台,请自己编译安装,可以在程序中使用dl()函数加载,或者在编译php的时候加载进去。最后重启Web服务器,IIS/Apache。
我的网站目录是在:d:\mysite 目录下,现在建立一个 phpinfo.php 文件在网站根目录下,代码是:
<?phpinfo()?>
看有没有成功加载 php_memcache.dll 扩展。如果显示了 Memcache 选项和相应的版本信息,则说明成功加载了,否则请仔细检查上面的步骤。
如果一切正确无误,那么说明安装成功。

【Memcache初试】
[ 接口介绍 ]
服务器端和客户端都安装配置好了,现在我们就来测试以下我们的成果。Memcache客户端包含两组接口,一组是面向过程的接口,一组是面向对象的接口,具体可以参考PHP手册 “LXXV. Memcache Functions”这章。我们为了简单方便,就使用面向对象的方式,也便于维护和编写代码。Memcache面向对象的常用接口包括:
Memcache::connect -- 打开一个到Memcache的连接
Memcache::pconnect -- 打开一个到Memcache的长连接
Memcache::close -- 关闭一个Memcache的连接
Memcache::set -- 保存数据到Memcache服务器上
Memcache::get -- 提取一个保存在Memcache服务器上的数据
Memcache::replace -- 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::delete -- 从Memcache服务器上删除一个保存的项目
Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats -- 获取当前Memcache服务器运行的状态
[ 测试代码 ]
现在我们开始一段测试代码:

<?php
//连接
$mem
=
new Memcache;
$mem->connect("192.168.0.200",12000);

//保存数据

$mem->set('key1','This is first value',0,60);
$val=$mem->get('key1');
echo "Get key1 value: ".$val."<br>";

//替换数据

$mem->replace('key1','This is replace value',0,60);
$val=$mem->get('key1');
echo "Get key1 value: ".$val."<br>";

//保存数组

$arr=array('aaa','bbb','ccc','ddd');

$mem->set('key2',$arr,0,60);

$val2=$mem->get('key2');

echo "Get key2 value: ";

print_r($val2);

echo "<br>";

//删除数据

$mem->delete('key1');
$val=$mem->get('key1');
echo "Get key1 value: ".$val."<br>";

//清除所有数据

$mem->flush();
$val2=$mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";

//关闭连接

$mem->close();
?>



如果正常的话,浏览器将输出:

Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:

基本说明我们的Memcache安装成功,我们再来分析以下上面的这段程序。

[ 程序分析 ]

初始化一个Memcache的对象:
$mem = new Memcache;
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
$mem->connect("192.168.0.200", 12000);
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:
$mem->set('key1', 'This is first value', 0, 60);
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
$val = $mem->get('key1');
echo "Get key1 value: " . $val;
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val;
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
print_r($val2);
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";


============================================================================================================


/**************  ****************/

server
        {
                listen       80;
                server_name yali.souwf.com;
                location / {
                proxy_pass       http://119.190.29.51:802/;
                proxy_redirect   default;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
        }


/******************************/




csft.conf如下:

source main
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = root
    sql_pass                = xxx
    sql_db                    = test
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8
    sql_query_pre           = SET SESSION query_cache_type=OFF
    sql_query_pre           = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM s_data
    sql_query                = SELECT id, catelog, title FROM s_data WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
    sql_query_info            = SELECT * FROM s_data WHERE id=$id
    sql_attr_uint           = catelog
}
source delta: main
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = root
    sql_pass                = xxx
    sql_db                    = test
    sql_port                = 3306
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET SESSION query_cache_type=OFF
    sql_query_pre = SELECT id,catelog,title FROM s_data WHERE id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
    sql_query_info_pre  = SET NAMES utf8
    sql_query_info      = SELECT * FROM s_data WHERE id=$id
    sql_attr_uint       = catelog
}
index main
{
    source            = main
    path            = /usr/local/coreseek/var/data/main
    docinfo            = extern
    mlock            = 0
    morphology        = none
    html_strip                = 0
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type        = zh_cn.utf-8
    min_prefix_len      = 0
    min_infix_len       = 0
    min_word_len        = 2
    ngram_len           = 0
}
index delta: main
{
    source            = delta
    path            = /usr/local/coreseek/var/data/delta
    docinfo            = extern
    mlock            = 0
    morphology        = none
    html_strip                = 0
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type        = zh_cn.utf-8
    min_prefix_len      = 0
    min_infix_len       = 0
    min_word_len        = 2
    ngram_len           = 0
}
indexer
{
    mem_limit            = 128M
}
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid
    log = /usr/local/coreseek/var/log/searchd_mysql.log
    query_log = /usr/local/coreseek/var/log/query_mysql.log
}

主索引:
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf main --rotate >>/usr/local/coreseek/log/mainindex.log

增量索引:
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf delta --rotate >>/usr/local/coreseek/var/log/deltaindex.log
/usr/local/coreseek/bin/indexer --merge main delta -c /usr/local/coreseek/etc/csft.conf --rotate  >>/usr/local/coreseek/var/log/deltaindex.log

表sph_counter:
CREATE TABLE `sph_counter` (
`counter_id` int(11) NOT NULL,
`max_doc_id` int(11) NOT NULL,
PRIMARY KEY (`counter_id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk

使用的PHPAPI查询:

require_once 'inc/sphinxapi.php';
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetArrayResult ( true );
if($f) {
    $cl->setFilter('catelog',array($f));
}
$cl->SetLimits(0,500);
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
$res=$cl->Query( '@title '.iconv('gbk', 'utf-8//ignore', $iword) , "main;delta");
$cnt = count($res['matches']);
$ids = array();
for($i=0; $i<$cnt; $i++) {
    $ids[] = $res['matches'][$i]['id'];
}
$cl = null;

------------------------




张宴 回复于 2010-3-5 13:00
Nginx与php-cgi是两个独立的程序,通过TCP或Unix套接字通信,不像Apache那样是集成在一起的。所以,Nginx有fastcgi缓冲区,数据超出缓冲区大小、或程序执行完,才会将内容输出到客户端。另外,如果要使用ob_flush,不能开启gzip压缩输出。

nginx.conf:
  fastcgi_buffer_size 1k;
  fastcgi_buffers 4 1k;
  gzip off;

php.ini:

改为output_buffering = Off

如果需要连续循环打印的效果,可以加上一行echo str_repeat(" ",1024);,使得fastcgi_buffer_size 1k;的缓冲区满,从而输出内容到浏览器:

<?php
set_time_limit(0);
ob_end_clean();
ob_implicit_flush(1);

for($i = 0; $i < 10; $i++)
{
    echo $i, "<br />\n";
    echo str_repeat(" ",1024);
       sleep(1);
}
?>


==============================

总结 出现缓冲不能得原因 主要是php_fpm 里头 原先是request_terminate_timeout 是0s 我改成了5s条


第三种原因:

在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。



卸载Mysql
[root@localhost ~]# rpm -qa | grep mysql
mysql-3.23.58-9
php-mysql-4.3.4-11
mod_auth_mysql-20030510-4.1
mysql-server-3.23.58-9

说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,卸载都从最下面的一个包开始,直到卸载掉第一个为止。执行rpm -q php,如果返回php版本,刚是rpm安装;不返回php版本则是二进制安装。
比如:在这个例子中,我们应该先卸载mysql-server-3.23.58-9 方法如下:
rpm –e mysql-server
说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mod_auth_mysql-20030510-4.1包,方法如下:
[root@localhost ~]# rpm –e mod_auth_mysql

卸载Apache
[root@localhost ~]# rpm -qa | grep httpd
httpd-manual-2.2.9-4.i386
httpd-tools-2.2.9-4.i386
httpd-devel-2.2.9-4.i386
httpd-2.2.9-4.i386

[root@localhost ~]# rpm -e httpd --nodeps
[root@localhost ~]# rpm -e httpd-devel --nodeps
[root@localhost ~]# rpm -e httpd-tools --nodeps
[root@localhost ~]# rpm -e httpd-manual --nodeps

卸载PHP
[root@localhost ~]# rpm -qa | grep php

php-odbc-4.3.4-11
php-4.3.4-11
php-mysql-4.3.4-11
php-pear-4.3.4-11
php-ldap-4.3.4-11
php-pgsql-4.3.4-11

说明:方法跟卸载Mysql一样,不用说了吧
注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。

如果实在实在有卸载不掉的包,可以加—nodeps这个参数来卸载,比如我们卸载php-4.3.4-11,实在卸不掉了。就用:
rpm -e php-4.3.4-11 --nodeps(或 rpm -e --nodeps php-4.3.4-11)
命令很强硬,应该行的。

我在装Linux时已经安装了apache,我如何启动它
运行ntsysv命令,选中apache既可。
 
$w3m www.google.cn




你就会看到熟悉的google主页了

3.一些常用的快捷键

H 显示帮助 
q 退出,会有提示的 
j,k,l,h 移动光标,就像vim中一样 
J/K 向下/向上滚屏 
< > 左右滚屏 
在文本框里press Enter会提示TEXT:然后就可以输入了.输入后press Enter,最后按搜索键 
T 打开一个新标签页 
Esc-t 打开所有标签页,供你选择,使用jk来上下移动 
{ } 在标签页中切换 
U 输入新的网址 
B 后退 
Ctrl+q 关闭当前标签页 
/ 向后查找当前页 
? 向前查找当前页 

4.补充
1. < > < 和 > 分别是把画面往左或右方卷动。
2. w W 小写英文字母w与大写英文字母W分别是跳至下一个或上一个单字的字首(英文字母限定?)。
3. Ctrl-e Ctrl-a 移动键盘游标至行末或行首。
4. Esc-m 列出页面中所有的超连结。
5. Esc-g 输入行数并跳至该行开头。
6. [ ] 分别是跳至第一个或最后一个超连结。
7. Tab 跳至页面中的下一个超连结。
8. Esc-Tab,Ctrl-u 跳至页面中的上一个超连结。 
9. I 大写英文字母I可以让你显示目前所选取之超连结所指向的图片。
10. L 大写英文字母L可以显示出超连结及超连结的显示文字。
11. Enter Enter键是进入该超连结所指向之目地的,当然了,用JavaScript做出来的连结是没办法用纯文字浏览器连过去的。 Flash那些影音档的也别肖想能看到了,图片倒是可以看。 
12. Ctrl-t 将目前游标移动到的超连结开到新分页去。
13. v E 小写英文字母v可以显示该页面原始码,大写英文字母E则是用编辑器来修改该页面原始码。
14. R 大写英文字母R可以重新读取该页面。 
15. T 开新的空白分页。 
16. Ctrl-q 关闭目前分页。
17. { } 左大括弧「 { 」和右大括弧「 } 」分别是移动到上一个或下一个分页。 
18. Esc-t 开启选择分页选单。 
19. / ? 按下/或?后输入英数字或切换中文输入法输入中文都可以。 /是向后方找, ?则是向前方这样。 
20. n N 小写英文字母n与大写英文字母N分别是找下一笔或找上一笔。 
21. m 小写英文字母m可以让你的滑鼠生效或不生效。 
22. H 按大写英文字母H可以看说明文件,以及可以选择看日文版Japanese Version的说明哦。
23. o 小写的英文字母o可以开启Option Setting Panel ,还可以看到目前所使用的版本。 设定好后按End跳到最后面的OK按Enter便能让设定生效了。
24. Ctrl-h 列示出所有浏览过的网址。
25. q与Q 小写英文字母q是离开w3m前先做确认,大写英文字母Q则是不做确认直接离开。 
26.大写英文字母U是输入URL。
27.(如Esc-m那种的)选单 方向箭头键左|-离开选单。
28. Alt-方向箭头键下是回到上一页,这在不小心进到Option Setting Panel等的地方也可以用哦。 
29. Home与End分别是跳至文件开头与结尾。 PageUp跟PageDown则是上翻一面跟下翻一 面,空白键Space功能同PageDown 。
30. insert键可以列出很多功能。 



=============================================

shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作  



mysql  -hhostname -Pport -uusername -ppassword  -e  相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。

 

#!/bin/bash

HOSTNAME="192.168.111.84"                                           #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD=""

DBNAME="test_db_test"                                                       #数据库名称
TABLENAME="test_table_test"                                            #数据库中表的名称

 

#创建数据库
create_db_sql="create database  ${DBNAME} IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"

 

#创建表
create_table_sql="create table  ${TABLE} IF NOT EXISTS ${TABLENAME} (  name varchar(20), id int(11) default 0 )"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${create_table_sql}"

 

#插入数据
insert_sql="insert into ${TABLENAME} values('billchen',2)"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${insert_sql}"

 

#查询
select_sql="select * from ${TABLENAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"

 

#更新数据
update_sql="update ${TABLENAME} set id=3"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${update_sql}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"

 

#删除数据
delete_sql="delete from ${TABLENAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_sql}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"



mousedown:鼠标的键钮被按下。 
mouseup:鼠标的键钮被释放弹起。 
click:单击鼠标的键钮。 
dblclick:鼠标的键钮被按下。 
contextmenu :弹出右键菜单。 
mouseover:鼠标移到目标的上方。 
mouseout:鼠标移出目标的上方。 
mousemove:鼠标在目标的上方移动。





 ====================

godaddy

 


================================

linux c 语言


c 操作mysql

gcc -o insert insert.c -lmysqlclient -I/usr/local/mysql/include/mysql/ -L/usr/local/mysql/lib/mysql


指针注明

===================================================


在声明int *piRand中

*表示这个变量是int类型的指针

在声明之外

*可以理解成一个运算符 或者一个函数 

*和&是一对逆运算

&的意思是读一个变量的地址

比如你声明了int a;&a是a的地址可能是xx1001之类的

可以在调试里看一下

*的意思是读一个地址指向的内容
 
======================================================
 
测量长度

 strlen

 sizeof


LNMP0.8 eAccelerator和ionCube安装不上的解决办法


/root/lnmp restart时,报错如下:

Shutting down php_fpm  done
Starting php_fpm Failed loading /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so:  /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so: cannot open shared object file: No such file or directory
Failed loading /usr/local/ioncube/ioncube_loader_lin_5.3.so:  /usr/local/ioncube/ioncube_loader_lin_5.3.so: undefined symbol: zend_resolve_path
done

修改:/usr/local/php/etc/php.ini

原来:zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.3.so"


改成:zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.2.so"


php 5.2.17 使用ioncube_loader_lin_5.2.so不是5.3

原来:zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"


改成:zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

eaccelerator路径是no-debug-non-zts-20060613 而不是no-debug-non-zts-20090626


=====================================================================================


很多TIME_WAIT连接导致Cannot assign requested address的解决办法(2011-07-26 18:35:53)


客户端connect服务器,执行一定时间后,接口返回-99的错误

查看错误信息 OS error code  99:  Cannot assign requested address

猜想端口被用光的原因,网络搜索得到一个解释:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”

通过netstat,的确看到很多TIME_WAIT状态的连接

因为是调用API,所以无法对连接进行opt设置,只能通过设置系统配置得以解决

解决办法:

执行命令修改如下2个内核参数   
sysctl -w net.ipv4.tcp_timestamps=1  

开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用

sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收


sysctl -w net.ipv4.tcp_timestamps=1  
sysctl -w net.ipv4.tcp_tw_recycle=1

==================


求C语言 时间戳和标准格式的转换  


0 int main(int argc, char **argv)
{
    time_t t;
    t = time(NULL);
    struct tm *lt;
    int ii = time(&t);
    printf("ii = %d\n", ii);
    t = time(NULL);
    lt = localtime(&t);
    char nowtime[24];
    memset(nowtime, 0, sizeof(nowtime));
    strftime(nowtime, 24, "%Y-%m-%d %H:%M:%S", lt);
    printf("nowtime = %s\n", nowtime);
    return 1;
} 

===============================
屏幕亮度调节:xgamma -gamma 0.6
原文地址:https://www.cnblogs.com/zhaoguoliang/p/2804524.html