======================================================
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