安装pcntl等PHP扩展–tag

***背景
编译安装PHP扩展,有些可以像apache一样的 动态扩展,并不要重新编译整个php,有些哥刚刚过来的哥, 动不动就 –enable-pcntl 吓我一跳,还是写下让更多人知道一下,当然也方便我以后查看

××××××××××php添加pcntl扩展 start××××××××××
1,下载相对应版本的php源码
http://php.net/releases/index.php
2,解压并进入相对应目录
cd ext/pcntl
/usr/bin/phpize
./configure --with-php-config=bin/php-config #(ps:请正确的指定php-config的目录)
make && make install

ls /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
pcntl.so eaccelerator.so mcrypt.so memcache.so

3,配置
然后编辑php.ini
extension=pcntl.so

测试 pcntl
测试是否安装成功

××××××××××php添加pcntl扩展 the end××××××××××

ls /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
pcntl.so eaccelerator.so mcrypt.so memcache.so

,配置
然后编辑php.ini(如果php安装在/usr/local/php则php.ini在/usr/local/php/lib/php.ini中添加
extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/”
extension = “mcrypt.so”

gettext
其它的 类似的扩展也是同样道理

#这个是s135的例子 哈哈
wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar zxvf autoconf-latest.tar.gz
cd autoconf-2.69/
./configure –prefix=/data/apps/libs
make &&make install

wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxvf memcache-2.2.7.tgz
cd memcache-2.2.7/
export PHP_AUTOCONF=”/data/apps/libs/bin/autoconf”
export PHP_AUTOHEADER=”/data/apps/libs/bin/autoheader”
/Data/apps/php/bin/phpize
./configure –with-php-config=/data/apps/php/bin/php-config
make && make install
cd ../

打开 php/etc/php.ini 查找 ; extension_dir = “ext”
  在其后增加一行:
extension = “memcache.so”

rhel5_R8168B—R8168网卡rhel却自带R8169驱动

前天晚上,被小胖叫过去了,原来有台亚游的服务器 rhel的,老是网络连不上,提示 什么不知道的芯片组 ,开始以为是网络配置格式出错, 最后google到一个教程

lspci |grep Ethernet
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

重启网络时怎么提示是R8169呢

看来应该是系统自己自带的驱动是R8169,而网卡其实是R8168 于是 哈哈
R8168网卡,rhel却自带R8169驱动了

于是到realtek 官网

http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2

[root@c ~]# uname -r
2.6.18-194.el5
于是选择 8.036.00这个版本下载 r8168-8.036.00.tar.bz2
然后 解压 进入 相对应目录 执行 autorun.sh
重启网络后

ethtool -i eth0
driver: r8168 #提示有这个

##改一下原来加载的模块
vim /etc/modprobe.conf
alias eth0 r8168
#这里原来是 r8169 把他改成r8168就好了

http://storysky.blog.51cto.com/628458/307438/

pssh简单入门

第一 安装
×××××××××××××××××

1)##rhel 系列 yum
Download the latest rpmforge-release rpm from

#4 centos6.x rhel 6.x and sl6.x
http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/
#4 centos5.x rhel 5.x and sl5.x
http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/
Install rpmforge-release rpm:
# rpm -Uvh rpmforge-release*rpm
Install pssh rpm package:
# yum install pssh -y

2)##debian 系列
sudo apt-get install pssh

vi ~/.bashrc
alias pssh='parallel-ssh'
alias pscp='parallel-scp'
alias prsync='parallel-rsync'

export PSSH_HOSTS="/root/servers.txt"
export PSSH_USER="root"
export PSSH_PAR="32"
export PSSH_OUTDIR="/tmp"
export PSSH_VERBOSE="0"
export PSSH_OPTIONS="UserKnownHostsFile /root/.ssh/known_hosts"

source .bashrc #或者
source ~/.profile

3)##源码安装
wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
tar zxvf pssh-2.3.1.tar.gz
cd pssh-2.3.1/
python setup.py install

第二 配置和使用
×××××××××××××××××

#ssh-keygen #一直回车

#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.16.X #复制公钥到远端服务器

ps.如果端口不是默认22 ,需要使用:ssh-copy-id -i .ssh/id_rsa.pub ”-p 4567 yin@192.168.16.X”

创建主机列表文件:
root@evan-laptop:~# cat servers.txt
192.168.21.208
192.168.22.106

parallel-scp -h servers.txt 1 /tmp/

重启 Nginx:
pssh killall -HUP nginx
批量复制文件:
pscp /etc/hosts /tmp/hosts
为了便于管理,可以使用 -h 参数指定主机列表文件,给主机分组

pssh参数
-h 执行命令的远程主机列表 或者 -H user@ip:port 文件内容格式[user@]host[:port]
-l 远程机器的用户名
-p 一次最大允许多少连接
-o 输出内容重定向到一个文件
-e 执行错误重定向到一个文件
-t 设置命令执行的超时时间
-A 提示输入密码并且把密码传递给ssh
-O 设置ssh参数的具体配置,参照ssh_config配置文件
-x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X 同-x 但是一次只能传递一个命令
-i 显示标准输出和标准错误在每台host执行完毕后
-I 读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入

5 介绍软件包内其他命令
pscp 传输文件到多个hosts,他的特性和scp差不多
pslurp 从多台远程机器拷贝文件
pnuke kill远程机器的进程

参考资料
http://bbs.linuxtone.org/thread-3626-1-4.html
http://my.oschina.net/guol/blog/59977

批量部署ssh私钥认证以及pssh工具使用方法
http://research.blog.51cto.com/2258479/922317

http://pkgs.org/centos-6-rhel-6/repoforge-i386/pssh-2.0-1.el6.rf.noarch.rpm.html
http://linuxfun.me/?p=748

http://qubaoquan.blog.51cto.com/1246748/742674

mysql 慢查询测试

平台 centos 5 ,mysql 5.1
添加在 [mysqld]后面
long_query_time = 0.01
#long_query_time = 1
slow_query_log=1
slow_query_log_file = /var/log/mysql/slow.log

#下面这个写法是没有效果的 在mysql 5.1之后
#log-slow-queries= /tmp/slowquery.log

and then restart mysqld

#注意 slow log 目录 mysqld 用户要有读写权限才行
SELECT t.TABLE_SCHEMA AS `db`,
t.TABLE_NAME AS `table`,
s.INDEX_NAME AS `index name`,
s.COLUMN_NAME AS `FIELD name`,
s.SEQ_IN_INDEX `seq IN index`,
s2.max_columns AS `# cols`,
s.CARDINALITY AS `card`,
t.TABLE_ROWS AS `est rows`,
ROUND(((s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) * 100), 2) AS `sel %`
FROM INFORMATION_SCHEMA.STATISTICS s
INNER JOIN INFORMATION_SCHEMA.TABLES t ON s.TABLE_SCHEMA = t.TABLE_SCHEMA AND s.TABLE_NAME = t.TABLE_NAME
INNER JOIN (
SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, MAX(SEQ_IN_INDEX) AS max_columns
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA != 'mysql' GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME ) AS s2 ON s.TABLE_SCHEMA = s2.TABLE_SCHEMA AND s.TABLE_NAME = s2.TABLE_NAME AND s.INDEX_NAME = s2.INDEX_NAME
WHERE t.TABLE_SCHEMA != 'mysql' /* Filter out the mysql system DB */
AND t.TABLE_ROWS > 10 /* Only tables with some rows */
AND s.CARDINALITY IS NOT NULL /* Need at least one non-NULL value in the field */
AND (s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) < 1.00 /* unique indexes are perfect anyway */ ORDER BY `sel %`, s.TABLE_SCHEMA, s.TABLE_NAME /* DESC for best non-unique indexes */ LIMIT 10;

#查看
tail -f /var/log/mysql/slow.log

MySQL慢查询查找和调优测试
http://www.jb51.net/article/32956.htm

mysql 日志

今天下班后,正好借解决主站mysql 很占用CPU这个问题,顺便把mysql日志作一下笔记 ,当然叫他们加索引这个是解决方法,这个暂时按下不提

在mysql中 一般有以下4种日志 — 错误日志,二进制日志,查询日志,慢查询日志

1.错误日志 p359
主要记录启动关闭的一些信息,还有数据库在运行期间的重大错误和当服务器发现一个表需要被检查或修复的时候的信息。

缺省生成的错误日志文件名为host_name.err ,默认目录是数据目录,我们可以通过启动选项 –log-error=filename 指定错误日志的位置

如data是数据库的数据目录:
[root@www.zai.com ~]# 130624 17:36:11 mysqld_safe Logging to ‘/data/database/mysql//evan886.com.err’.
130624 17:36:11 mysqld_safe Starting mysqld daemon with databases from /data/database/mysql/

mysql> show variables like '%error%'; #查看日志文件的位置:
+——————–+———————+
| Variable_name | Value |
+——————–+———————+
| log_error | /var/log/mysqld.log

##这个是写在配置文件里
[mysqld_safe]
log-error=/var/log/mysqld.log

[root@www.zai.com ~]# tail -f /data/database/mysql/evan886.com.err

130624 17:36:02 mysqld_safe mysqld from pid file /data/database/mysql//evan886.com.pid ended
130624 17:36:11 mysqld_safe Starting mysqld daemon with databases from /data/database/mysql/
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
130624 17:36:11 InnoDB: highest supported file format is Barracuda.
130624 17:36:12 InnoDB Plugin 1.0.6-unknown started; log sequence number 780360

2.二进制日志

mysql> show variables like '%log_bin%'; #查看
+———————————+——-+
| Variable_name | Value |
+———————————+——-+
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| log_bin_trust_routine_creators | OFF |
| sql_log_bin | ON |
+———————————+——-+

[root@localhost bin]# ./mysqld_safe –log-bin=/tmp/binlog

mysql>CREATE TABLE t1(id int not null, name char(20) );

mysql> insert into t1 values(1,’evan’);
Query OK, 1 row affected (0.00 sec)

[root@localhost local]# mysqlbinlog /tmp/binlog.000001
****
CREATE TABLE t1(
id int not null,
name char(20)
)
/*!*/;

##永久生效
[root@localhost bin]# cat /etc/my.cnf
[mysqld]
*****
log-bin=/tmp/evanbilog

[root@localhost local]# /etc/init.d/mysqld start
正在启动 mysqld:

[root@localhost bin]# mysqlbinlog /tmp/evanbilog.000001
CREATE TABLE ttt( id int not null, name char(20) )
/*!*/;
# at 225
#130624 18:06:35 server id 1 end_log_pos 321 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1372068395/*!*/;
insert into ttt values(1,’evan’)
/*!*/;
DELIMITER ;

bin log 删除

1) 方法1 reset master

mysql> system ls -ltr /tmp/*log*

-rw-rw—-. 1 mysql mysql 22 6月 24 18:05 /tmp/evanbilog.index
-rw-rw—-. 1 mysql mysql 321 6月 24 18:06 /tmp/evanbilog.000001
mysql> reset master;
Query OK, 0 rows affected (0.10 sec)

mysql> system ls -ltr /tmp/*log*
-rw-rw—-. 1 mysql mysql 22 6月 24 19:39 /tmp/evanbilog.index
-rw-rw—-. 1 mysql mysql 106 6月 24 19:39 /tmp/evanbilog.000001

2) 方法2 purge master logs to 'evanbilog.000002'; # 编号 000002之前的所有日志都删除

3) 方法3 purge master logs before 'yyyy-mm-dd hh24:mi:ss'

purge master logs before ‘2012-6-22 13:07:00’ ;# 2012-6-22 13:07:00之前的所有日志都删除

4) 方法4 expire_logs_day=3 # 设置过期天数,三天前的全部自己删除

[root@localhost ~]# cat /etc/my.cnf
[mysqld]
***
log-bin=/tmp/evanbilog
expire_logs_day=3

设置完后重启 mysqld

##人为的改变时间
[root@localhost ~]# date -s ‘20141212 12:00:00’
2014年 12月 12日 星期五 12:00:00 CST
[root@localhost ~]# mysqladmin flush-log

3.查询日志 p365

[root@localhost bin]# ./mysqld_safe –log=/tmp/mysqllog

mysql> show variables like '%log';
+——————————–+——-+
| Variable_name | Value |
+——————————–+——-+
| back_log | 50 |
| general_log | ON |
| innodb_locks_unsafe_for_binlog | OFF |
| log | ON |
| relay_log | |
| slow_query_log | OFF |
| sync_binlog | 0 |
+——————————–+——-+
7 rows in set (0.00 sec)

#改配置文件和重启mysqld 这个方法好像有时不行呢
[mysqld_safe]
log=/var/log/mysqld.log

4.慢查询日志 p366

mysql> show variables like 'long%';
+—————–+———–+
| Variable_name | Value |
+—————–+———–+
| long_query_time | 10.000000 |
+—————–+———–+
1 row in set (0.00 sec)

#改成2秒
mysql> set long_query_time=2;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'long%';
+—————–+———-+
| Variable_name | Value |
+—————–+———-+
| long_query_time | 2.000000 |
+—————–+———-+
1 row in set (0.00 sec)

#写入配置文件
[mysqld]
***
long_query_time = 1
#long_query_time =0.001 #如果要测试可以这么设置
slow_query_log=1
slow_query_log_file = /var/log/mysql/slow.log

#这个mysql5.1试过不行哦
log-slow-queries= /usr/var/slowquery.log

mysqldumpslow -s c -t 20 /var/log/mysql/slow.log
mysqldumpslow -s r -t 20 /var/log/mysql/slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。

mysqldumpslow –help,主要用的是

-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string

-s,是order的顺序,说明写的不够详细,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的

mysql> show variables like 'slow_query%';
+———————+————————-+
| Variable_name | Value |
+———————+————————-+
| slow_query_log | ON |
| slow_query_log_file | /var/log/mysql/slow.log |
+———————+————————-+
mysql 慢查询测试

mysql 慢查询测试


[root@www.zai.com ~]# 130624 17:36:11 mysqld_safe Logging to ‘/data/database/mysql//evan886.com.err’.
130624 17:36:11 mysqld_safe Starting mysqld daemon with databases from /data/database/mysql/

一般来说都有两个方法 要mysql 设置 mysql> set long_query_time=2; 或者写在my.cnf 以永久生效

查找数据目录的位置:
mysql> show variables like '%datadir%';
+—————+—————–+
| Variable_name | Value |
+—————+—————–+
| datadir | /var/lib/mysql/ |
+—————+—————–+
1 row in set (0.00 sec)

set GLOBAL max_connections=1000;

参考资料
<<深入浅出mysql ***>>

GOOD mysql的日志文件、数据文件
http://linuxess.blog.163.com/blog/static/1967042702012293291584/

mysql慢查询导致db卡

mysql慢查询导致db卡

用MySQL Slow Log解决MySQL CPU占用高的问题
http://www.itlearner.com/article/4997

如何对MySQL数据库日志文件进行维护
http://database.51cto.com/art/201007/214149.htm

MYSQL启用日志,和查看日志
http://hone033.iteye.com/blog/451100

MySQL 建表语法
http://www.blogjava.net/coderdream/archive/2007/08/17/137642.html

ubuntu 优化调整

近来的本本用上了ubuntu 没事记录一下
第一 在Ubuntu 12.04中禁用不必要的错误提示消息

我们会经常在Ubuntu安装过程中遇到”Ubuntu 12.04刚刚发生了一次意外错误”、”检测到系统程序问题”这样的错误提示。这样的提示对于解决问题其实没什么帮助,所以我们往往希望将Apport错误报告工具彻底禁用。

sudo vi /etc/default/apport
#将"enabled"值由1改为0(说明文件中已经描述了数值修改的作用)

sudo restart apport 或者重启系统

第二 安装Ubuntu受限附加组件

安装”ubuntu-restricted-extras”软件包。这将使我们的Ubuntu获得播放mp3、avi、flash视频等流行文件格式的能力。点击此处(直接从Ubuntu软件中心处安装)或者将以下命令行内容粘贴到终端界面内实现软件包安装(如果我们在之前的系统安装过程中进行过勾选,这部分内容则可以忽略)。

sudo apt-get install ubuntu-restricted-extras

http://os.51cto.com/art/201306/397349_2.htm

#更多优化
http://ubuntu-tweak.com/

阿里云主机挂载数据盘的

阿里在IT界名声还是很好的,开源了很多东西呢 ,阿里云主机听说还不错,当然你会说阿里云主机很贵,一个月2K多,不过没关系 那朋友不差钱哈哈
朋友搞了吧阿里云主机 但我上去一看 只有20G ,说好的500G哪去了呢 ,看下面

[root@ ~]# fdisk -l
Disk /dev/hda: 21.4 GB, 21474836480 bytes
224 heads, 56 sectors/track, 3343 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 3343 20967268 83 Linux
Disk /dev/xvdb: 504.6 GB, 504658657280 bytes
224 heads, 56 sectors/track, 78576 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Disk /dev/xvdb doesn’t contain a valid partition table

原来 阿里云主机默认一般都不挂载数据盘的
看来只好 自己手工了

mkfs.ext3 /dev/xvdb
mount /dev/xvdb /data
#vi /etc/fstab #
echo '/dev/xvdb /data ext3 defaults 1 1'>>/etc/fstab

the end

参考
http://hi.baidu.com/jiyunjie/item/eed3e3d1656822302a35c7e0

http://www.03389.com/blog/user1/qq66565841/archives/2012/201232612218.html

http://blog.sina.com.cn/s/blog_645f8e970101gg7v.html

shell中常用的删除空行,删除行首的空格,删除行的首数字–tag

1,sed删除空行
sed '/^$/d' file

2.
(1)sed删除行首的空格
#删除所有行的首空字符
sed -i 's/^[[:space:]]*//' filename

sed -i ‘s/[[:space:]]*//g’ filename ##删除所有空格
sed s/[[:space:]]//g filename
#sed ‘s/^[ ]*//g’ file
#sed ‘s/^ *//g’ file
#sed ‘s/^[[:space:]]*//g’ file

(2)#删除所有行尾空字符 ,这个也是在处理配置文件是很不错的
sed -i 's/[[:blank:]]+$//' filename

awk -F':' '{print $1":"$2}' file

3.删除行的首数字
sed -i 's/^[0-9]*//g' filename
sed 's#^[0-9]{1,} ##g' filename
sed 's#^[0-9]* ##g' filename

.在vim 中
#删除行的首数字
%s/^[0-9][0-9]* //

参考
用sed删除行首行尾的空格和Tab
http://mubawa.iteye.com/blog/842173
http://bbs.chinaunix.net/thread-989402-1-1.html

rsync daemon 用来作不同机器的同步

这几天,把富人国交给另一个同事,所以被提问的问题多了很多,这也是遇到的一个问题,也好,写下来,下次叫他自己去看了,因为各种原因,只能写个大概的思路出来

ser 端 192.168.21.215
[root@s ~]# cat /etc/rsyncd.conf
uid = root
gid = root
max connections = 200
timeout = 600
use chroot = no
read only = yes
hosts allow=*
log file =/data/tmp/rsyncd.log

[evan]
path=/data/
comment = "123"

/usr/bin/rsync --config=/etc/rsyncd.conf --daemon

cli
#绑host
192.168.21.215 s1.com
#这样就可以从ser 拉东西过来了,有个游戏的批量就是用这个的
rsync -q --timeout=60 -aR rsync://s1.com/evan/ .

一些参考
实现rsync自动同步
http://linuxtracer.blog.51cto.com/1776198/376375

http://share.blog.51cto.com/278008/560761

CentOS Linux Install wicd

CentOS Linux Install wicd
1.
Download the latest atrpms-repo rpm from http://dl.atrpms.net/el6-x86_64/atrpms/stable/ and install
rpm -Uhv http://dl.atrpms.net/el6-x86_64/atrpms/stable/atrpms-repo-6-6.el6.x86_64.rpm
2.Install wicd rpm package:
yum install wicd -y

http://pkgs.org/centos-6-rhel-6/atrpms-x86_64/wicd-1.7.0-3.el6.x86_64.rpm.html

CentOS 5系统中安装并使用无线网卡
http://www.huomo.cn/os/article-11790.html

联想E40无线驱动安装 FOR LINUX (CentOS6.0-32)
http://blog.chinaunix.net/uid-25847668-id-3023528.html