Cannot load /…/libphp5.so into server: /…/libphp5.so: undefined symbol: _efree

运维技术采菊篱下 回复了问题 • 1 人关注 • 1 个回复 • 1260 次浏览 • 2015-06-14 11:29 • 来自相关话题

批量删除Redis数据库中的Key

数据库OpenSkill 发表了文章 • 0 个评论 • 1066 次浏览 • 2015-06-14 11:04 • 来自相关话题

批量删除Key
Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作redis-cli keys "*" | xargs redis-cli del
//如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径
//如:/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del
如果要指定 Redis 数据库访问密码,使用下面的命令redis-cli -a password keys "*" | xargs redis-cli -a password del
删除所有Key
删除所有Key,可以使用Redis的flushdb和flushall命令//删除当前数据库中的所有Key
flushdb
//删除所有数据库中的key
flushall
注:keys 指令可以进行模糊匹配,但如果 Key 含空格,就匹配不到了,暂时还没发现好的解决办法。
参考文档:http://stackoverflow.com/questions/5756067/how-to-empty-a-redis-database 查看全部
批量删除Key
Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作
redis-cli keys "*" | xargs redis-cli del  
//如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径
//如:/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del

如果要指定 Redis 数据库访问密码,使用下面的命令
redis-cli -a password keys "*" | xargs redis-cli -a password del  

删除所有Key
删除所有Key,可以使用Redis的flushdb和flushall命令
//删除当前数据库中的所有Key  
flushdb
//删除所有数据库中的key
flushall

注:keys 指令可以进行模糊匹配,但如果 Key 含空格,就匹配不到了,暂时还没发现好的解决办法。
参考文档:http://stackoverflow.com/questions/5756067/how-to-empty-a-redis-database

centos 6.2 更新报错解决 yum you could try using skip broken to work around the problem

运维技术采菊篱下 回复了问题 • 1 人关注 • 1 个回复 • 1978 次浏览 • 2015-06-14 10:40 • 来自相关话题

编译apache错误 configure:error:libjpeg.(a|so) not found

运维技术采菊篱下 回复了问题 • 1 人关注 • 1 个回复 • 1383 次浏览 • 2015-06-13 12:59 • 来自相关话题

Redis中key相关主要操作函数

数据库OpenSkill 发表了文章 • 3 个评论 • 1165 次浏览 • 2015-06-13 12:31 • 来自相关话题

总结redis中跟key相关的常用函数
1)keys
语法:keys pattern
解释:查找所有匹配指定模式pattern的key[root@cjlx ~]# redis-cli
redis 127.0.0.1:6379> keys * #所有key
1) "score"
2) "stu"
3) "score1"
4) "dest"
5) "lst.user"
6) "lst.tect"
redis 127.0.0.1:6379> keys scor?
1) "score"
redis 127.0.0.1:6379> keys scor[ee1]
1) "score" 2)randomkey
语法:randomkey 
解释:返回一个随机keyredis 127.0.0.1:6379> randomkey
"score"
redis 127.0.0.1:6379> randomkey
"list.user" 3)exists
语法:exists key
解释:判断一个key是否存在redis 127.0.0.1:6379> exists score #key存在 返回1
(integer) 1
redis 127.0.0.1:6379> exists scorefda #key不存在 返回0
(integer) 0 4)type
语法:type key
解释:返回key所存储的值类型,返回值:none [key不存在],string,list ,set, zset和hashredis 127.0.0.1:6379> type score
zset
redis 127.0.0.1:6379> type lst.user
list 5)expire
语法:expire key seconds
解释:设置key的生存时间,单位是秒,当key过期时,会被自动删除redis 127.0.0.1:6379> expire dest 30
(integer) 1
redis 127.0.0.1:6379> expire dest1 30 # key不存在
(integer) 0 6)ttl
语法: ttl key
解释:得到key能存活时间,如果key不存在或没有设置生存时间时,返回-1redis 127.0.0.1:6379> expire diff 100
(integer) 1
redis 127.0.0.1:6379> ttl diff
(integer) 94
redis 127.0.0.1:6379> ttl diff
(integer) 92
7)persist
语法:persist key
解释:移除给定key的生存时间redis 127.0.0.1:6379> ttl diff
(integer) 28
redis 127.0.0.1:6379> persist diff
(integer) 1
redis 127.0.0.1:6379> ttl diff
(integer) -1 8)rename
语法:rename key newkey
解释:将key改名为newkeyredis 127.0.0.1:6379> smembers diff
1) "zhangsan01"
redis 127.0.0.1:6379> rename diff diff01
OK
redis 127.0.0.1:6379> smembers diff
(empty list or set)
redis 127.0.0.1:6379> smembers diff01
1) "zhangsan01"
redis 127.0.0.1:6379> rename diff diff01
(error) ERR no such key注意:当key和newkey相同或key不存在时,返回错误;当newkey已存在时,rename将覆盖旧值。
 
9)renamenx
语法:renamenx key newkey
解释:当且仅当newkey不存在时,改名keyredis 127.0.0.1:6379> renamenx diff01 stu #stu存在
(integer) 0
redis 127.0.0.1:6379> renamenx diff01 diff #diff不存在
(integer) 1 10)del
语法:del key [key ...]
解释:删除一个或多个keyredis 127.0.0.1:6379> del score1
(integer) 1
redis 127.0.0.1:6379> del union diff aa #key aa 不存在
(integer) 2 11)move
语法:move key db
解释:将key移动到指定dbredis 127.0.0.1:6379> smembers stu #默认0
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> move stu 1 #移动到 1
(integer) 1
redis 127.0.0.1:6379> smembers stu
(empty list or set)
redis 127.0.0.1:6379> select 1 #选择db 1
OK
redis 127.0.0.1:6379[1]> smembers stu
1) "zhangsan01"
2) "wangwu"12)sort
语法:sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
解释:返回或保持给定列表,集合,有序集合key中经过排序的元素redis 127.0.0.1:6379> sort lst.tech limit 0 2 alpha desc #按字符集排序
1) "tec06"
2) "tec05"
redis 127.0.0.1:6379> sort lst.stud
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> sort lst.stud desc
1) "3"
2) "2"
3) "1"
redis 127.0.0.1:6379> keys stu.*
1) "stu.name.2"
2) "stu.name.3"
3) "stu.level.1"
4) "stu.level.2"
5) "stu.level.3"
6) "stu.name.1"
redis 127.0.0.1:6379> sort lst.stud by stu.level.[i] desc get stu.level.[/i] get stu.name.*
1) "3"
2) "admin"
3) "2"
4) "joe"
5) "1"
6) "jim"
redis 127.0.0.1:6379> sort lst.stud by stu.level.[i] asc get stu.name.[/i]
1) "jim"
2) "joe"
3) "admin"sort虽然很“厉害”,但尽量不要让redis服务器来sort大量的数据。可以通过设定阀值减少要sort的数据,或把排序操作向前移,在web服务器或各个应用上来sort。 查看全部
总结redis中跟key相关的常用函数
1)keys
语法:keys pattern
解释:查找所有匹配指定模式pattern的key
[root@cjlx ~]# redis-cli   
redis 127.0.0.1:6379> keys * #所有key
1) "score"
2) "stu"
3) "score1"
4) "dest"
5) "lst.user"
6) "lst.tect"
redis 127.0.0.1:6379> keys scor?
1) "score"
redis 127.0.0.1:6379> keys scor[ee1]
1) "score"
2)randomkey
语法:randomkey 
解释:返回一个随机key
redis 127.0.0.1:6379> randomkey  
"score"
redis 127.0.0.1:6379> randomkey
"list.user"
3)exists
语法:exists key
解释:判断一个key是否存在
redis 127.0.0.1:6379> exists score  #key存在 返回1  
(integer) 1
redis 127.0.0.1:6379> exists scorefda #key不存在 返回0
(integer) 0
4)type
语法:type key
解释:返回key所存储的值类型,返回值:none [key不存在],string,list ,set, zset和hash
redis 127.0.0.1:6379> type score  
zset
redis 127.0.0.1:6379> type lst.user
list
5)expire
语法:expire key seconds
解释:设置key的生存时间,单位是秒,当key过期时,会被自动删除
redis 127.0.0.1:6379> expire dest 30  
(integer) 1
redis 127.0.0.1:6379> expire dest1 30 # key不存在
(integer) 0
6)ttl
语法: ttl key
解释:得到key能存活时间,如果key不存在或没有设置生存时间时,返回-1
redis 127.0.0.1:6379> expire diff 100  
(integer) 1
redis 127.0.0.1:6379> ttl diff
(integer) 94
redis 127.0.0.1:6379> ttl diff
(integer) 92

7)persist
语法:persist key
解释:移除给定key的生存时间
redis 127.0.0.1:6379> ttl diff  
(integer) 28
redis 127.0.0.1:6379> persist diff
(integer) 1
redis 127.0.0.1:6379> ttl diff
(integer) -1
8)rename
语法:rename key newkey
解释:将key改名为newkey
redis 127.0.0.1:6379> smembers diff  
1) "zhangsan01"
redis 127.0.0.1:6379> rename diff diff01
OK
redis 127.0.0.1:6379> smembers diff
(empty list or set)
redis 127.0.0.1:6379> smembers diff01
1) "zhangsan01"
redis 127.0.0.1:6379> rename diff diff01
(error) ERR no such key
注意:当key和newkey相同或key不存在时,返回错误;当newkey已存在时,rename将覆盖旧值。
 
9)renamenx
语法:renamenx key newkey
解释:当且仅当newkey不存在时,改名key
redis 127.0.0.1:6379> renamenx diff01 stu  #stu存在  
(integer) 0
redis 127.0.0.1:6379> renamenx diff01 diff #diff不存在
(integer) 1
10)del
语法:del key [key ...]
解释:删除一个或多个key
redis 127.0.0.1:6379> del score1  
(integer) 1
redis 127.0.0.1:6379> del union diff aa #key aa 不存在
(integer) 2
11)move
语法:move key db
解释:将key移动到指定db
redis 127.0.0.1:6379> smembers stu #默认0  
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> move stu 1 #移动到 1
(integer) 1
redis 127.0.0.1:6379> smembers stu
(empty list or set)
redis 127.0.0.1:6379> select 1 #选择db 1
OK
redis 127.0.0.1:6379[1]> smembers stu
1) "zhangsan01"
2) "wangwu"
12)sort
语法:sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
解释:返回或保持给定列表,集合,有序集合key中经过排序的元素
redis 127.0.0.1:6379> sort lst.tech limit 0 2 alpha desc #按字符集排序  
1) "tec06"
2) "tec05"
redis 127.0.0.1:6379> sort lst.stud
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> sort lst.stud desc
1) "3"
2) "2"
3) "1"
redis 127.0.0.1:6379> keys stu.*
1) "stu.name.2"
2) "stu.name.3"
3) "stu.level.1"
4) "stu.level.2"
5) "stu.level.3"
6) "stu.name.1"
redis 127.0.0.1:6379> sort lst.stud by stu.level.[i] desc get stu.level.[/i] get stu.name.*
1) "3"
2) "admin"
3) "2"
4) "joe"
5) "1"
6) "jim"
redis 127.0.0.1:6379> sort lst.stud by stu.level.[i] asc get stu.name.[/i]
1) "jim"
2) "joe"
3) "admin"
sort虽然很“厉害”,但尽量不要让redis服务器来sort大量的数据。可以通过设定阀值减少要sort的数据,或把排序操作向前移,在web服务器或各个应用上来sort。

启动apache报错 [warn] module php5_module is already loaded, skipping

运维技术采菊篱下 回复了问题 • 1 人关注 • 1 个回复 • 1825 次浏览 • 2015-06-13 12:02 • 来自相关话题

Centos下php5.4 编译常见错误解决

编程语言OpenSkill 发表了文章 • 0 个评论 • 1157 次浏览 • 2015-06-12 17:45 • 来自相关话题

configure: error: xml2-config not found. Please check your libxml2 installation.
yum install libxml2-devel

configure: error: Cannot find OpenSSL’s
yum install openssl-devel

configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
yum install curl-devel

configure: error: libjpeg.(a|so) not found
yum install libjpeg-devel

configure: error: libpng.(a|so) not found.
yum install libpng-devel

configure: error: libXpm.(a|so) not found.
yum install libXpm-devel

configure: error: freetype.h not found.
yum install freetype-devel

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
yum install libc-client-devel

configure: error: mcrypt.h not found. Please reinstall libmcrypt.
yum install libmcrypt-devel

configure: error: Please reinstall libmhash – I cannot find mhash.h
yum install mhash-devel

configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
yum install mysql-devel

configure: error: Please reinstall ming distribution. libming.(a|so) not found
[list]
[*]temp remove the config for ‘–with-ming=/opt/ming/’[/*]
[/list]
configure: error: Cannot find pspell
yum install pspell-devel

configure: error: cannot find mm library
Download from http://www.ossp.org/pkg/lib/mm/
wget ftp://ftp.ossp.org/pkg/lib/mm/mm-1.4.2.tar.gz
Extract it: tar -zxvf mm-1.4.2.tar.gz
./configure
make
make install

configure: error: Cannot find libtidy
yum install libtidy-devel
yum install libtidy
change path at configure: ‘–with-tidy=/usr’

configure: error: not found. Please reinstall the expat distribution.
yum install expat-devel

configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
yum install libxslt-devel 查看全部
configure: error: xml2-config not found. Please check your libxml2 installation.
yum install libxml2-devel

configure: error: Cannot find OpenSSL’s
yum install openssl-devel

configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
yum install curl-devel

configure: error: libjpeg.(a|so) not found
yum install libjpeg-devel

configure: error: libpng.(a|so) not found.
yum install libpng-devel

configure: error: libXpm.(a|so) not found.
yum install libXpm-devel

configure: error: freetype.h not found.
yum install freetype-devel

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
yum install libc-client-devel

configure: error: mcrypt.h not found. Please reinstall libmcrypt.
yum install libmcrypt-devel

configure: error: Please reinstall libmhash – I cannot find mhash.h
yum install mhash-devel

configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
yum install mysql-devel

configure: error: Please reinstall ming distribution. libming.(a|so) not found
[list]
[*]temp remove the config for ‘–with-ming=/opt/ming/’[/*]
[/list]
configure: error: Cannot find pspell
yum install pspell-devel

configure: error: cannot find mm library
Download from http://www.ossp.org/pkg/lib/mm/
wget ftp://ftp.ossp.org/pkg/lib/mm/mm-1.4.2.tar.gz
Extract it: tar -zxvf mm-1.4.2.tar.gz
./configure
make
make install

configure: error: Cannot find libtidy
yum install libtidy-devel
yum install libtidy
change path at configure: ‘–with-tidy=/usr’

configure: error: not found. Please reinstall the expat distribution.
yum install expat-devel

configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
yum install libxslt-devel

PHP随机生成token

编程语言OpenSkill 发表了文章 • 0 个评论 • 1494 次浏览 • 2015-06-12 16:33 • 来自相关话题

使用token的方式,可以控制用户在这个时间内的权限,代码如下:<?php
function genToken( $len = 32, $md5 = true ) {
# Seed random number generator
# Only needed for PHP versions prior to 4.2
mt_srand( (double)microtime()*1000000 );
# Array of characters, adjust as desired
$chars = array(
'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
'/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
'?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
'=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
);
# Array indice friendly number of chars;
$numChars = count($chars) - 1; $token = '';
# Create random token at the specified length
for ( $i=0; $i<$len; $i++ )
$token .= $chars[ mt_rand(0, $numChars) ];
# Should token be run through md5?
if ( $md5 ) {
# Number of 32 char chunks
$chunks = ceil( strlen($token) / 32 ); $md5token = '';
# Run each chunk through md5
for ( $i=1; $i<=$chunks; $i++ )
$md5token .= md5( substr($token, $i * 32 - 32, 32) );
# Trim the token
$token = substr($md5token, 0, $len);
} return $token;
}
//生成的32位随机数
echo genToken()
?> 查看全部
使用token的方式,可以控制用户在这个时间内的权限,代码如下:
<?php
function genToken( $len = 32, $md5 = true ) {
# Seed random number generator
# Only needed for PHP versions prior to 4.2
mt_srand( (double)microtime()*1000000 );
# Array of characters, adjust as desired
$chars = array(
'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
'/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
'?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
'=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
);
# Array indice friendly number of chars;
$numChars = count($chars) - 1; $token = '';
# Create random token at the specified length
for ( $i=0; $i<$len; $i++ )
$token .= $chars[ mt_rand(0, $numChars) ];
# Should token be run through md5?
if ( $md5 ) {
# Number of 32 char chunks
$chunks = ceil( strlen($token) / 32 ); $md5token = '';
# Run each chunk through md5
for ( $i=1; $i<=$chunks; $i++ )
$md5token .= md5( substr($token, $i * 32 - 32, 32) );
# Trim the token
$token = substr($md5token, 0, $len);
} return $token;
}
//生成的32位随机数
echo genToken()
?>

Linux 命令集合

运维技术小白菜 发表了文章 • 2 个评论 • 787 次浏览 • 2015-06-10 19:30 • 来自相关话题

工作中收集了一些Linux shell命令 便于参考
mpstat用于报告多路CPU主机的每颗CPU活动情况,以及整个主机的CPU情况。下边的命令可以隔2秒报告一次处理器的活动情况,执行3次
[root@localhost ~]# mpstat 2 3如下命令每隔1秒显示一次多路CPU主机的处理器活动情况,执行3次

[root@localhost ~]# mpstat -P ALL 1 3在当前目录下列出所有的扩展名
[root@localhost ~]# find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g批量替换php中的关键字
for I in `find . -name "*.php"`; do sed -i "s/old name/new name/g" $I; done  快速的将当前目录中所有的.php扩展名修改给.html
[root@localhost ~]# for i in *.php; do mv $i ${i%.php}.html; done用备份的superblock来挂载文件系统
[root@localhost ~]# mount -o sb=98340 /dev/sda1 /mnt/data1/ 删除B目录中与A目录同名的文件
[root@localhost ~]# for file in A/*; do rm B/`basename $file`; done找出10个大文件
[root@localhost ~]# du -sh * | sort -rh | head


 寻找非html的文件
[root@localhost ~]# find . -type f ! -name "*html"


用脚本获取eth0上的IPv4地址
[root@localhost ~]# ip addr show eth0 |grep 'inet\b' |awk '{print $2}' |sed -r -e 's/\/.*?//g' 以html的形式获取服务器的硬件配置报告
[root@localhost ~]# lshw -html >hardware.html统计服务器上已经建立的TCP的链接
[root@localhost ~]# netstat -an | awk '$1 ~ /[Tt][Cc][Pp]/ && $NF ~ /ESTABLISHED/{i++}END{print "Connected:\t", i}'


限制传输速率
[root@localhost ~]# cat /dev/urandom | pv -L 3m | dd bs=1M count=100 iflag=fullblock > /dev/null  上一条命令的快捷方式
[root@localhost ~]# alias foo="!!"


备份制定后缀的文件并且打包到根目录下
[root@localhost opt]# tar --exclude=".??*" -zcvf ./home_backup_2008.tar.gz my_home 替换:将hh文件下的内容192替换成193
[root@localhost opt]# for I in "hh"; do sed -i "s/192/193/g" $I; doneLinux 限制传输速率
# cat /dev/urandom | pv -L 3m | dd bs=1M count=100 iflag=fullblock > /dev/null 格式化另一个日期
date --date=yesterday +%Y%m%d 合并多个文件到一个文件中
cat file1 . . . fileN > NEWFile 递归删除所有的htm
[root@localhost opt]# find . -type f -name '*.htm' -delete列出并删除一岁的文件
[root@localhost zhiwen]# find <目录路径> -mtime +365 -and -not -type d -delete


 查找日志中的所有问题
[root@localhost opt]# grep -2 -iIr "err\|warn\|fail\|crit" /var/log/*寻找最大的10个文件夹
[root@localhost ~]# find . -type d -print0 | xargs -0 du -s | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {} | sort -rn检查端口是否开放
[root@localhost ~]#nmap -p 80 hostname 显示命令的输出值到file.txt文件中
[root@localhost opt]# command | sed '/file.txt/q'保存man页面为pdf文件
[root@localhost opt]# man -t awk | ps2pdf - awk.pdf 列出所有zip压缩包里边的文件并解压
[root@localhost opt]# find . -name "[i].tgz" -or -name "[/i].zip" | while read file; do echo "$file:"; unzip $file; done显示所有目录内容
[root@localhost opt]# while read f;do echo "$f";done < <(find .) Linux 查找指定的某个目录
[root:/usr/sbin Master] # find / -name 目录名 -type d在/var/log/secure 里针对某个IP扫描了多少次
[root:~ Slave] # cat /var/log/secure |grep 192.168.83.40 | wc -l对其中的secure获取其中的ip地址和数量:
[root:~ Slave] # grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c 查看全部
工作中收集了一些Linux shell命令 便于参考
mpstat用于报告多路CPU主机的每颗CPU活动情况,以及整个主机的CPU情况。
下边的命令可以隔2秒报告一次处理器的活动情况,执行3次
[root@localhost ~]# mpstat 2 3
如下命令每隔1秒显示一次多路CPU主机的处理器活动情况,执行3次

[root@localhost ~]# mpstat -P ALL 1 3
在当前目录下列出所有的扩展名
[root@localhost ~]# find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
批量替换php中的关键字    
for I in `find . -name "*.php"`; do sed -i "s/old name/new name/g" $I; done
 
快速的将当前目录中所有的.php扩展名修改给.html   
[root@localhost ~]# for i in *.php; do mv $i ${i%.php}.html; done
用备份的superblock来挂载文件系统  
[root@localhost ~]# mount -o sb=98340 /dev/sda1 /mnt/data1/
 
删除B目录中与A目录同名的文件   
[root@localhost ~]# for file in A/*; do rm B/`basename $file`; done
找出10个大文件
[root@localhost ~]# du -sh * | sort -rh | head


 
寻找非html的文件 
[root@localhost ~]# find . -type f ! -name "*html"


用脚本获取eth0上的IPv4地址
[root@localhost ~]# ip addr show eth0 |grep 'inet\b' |awk '{print $2}' |sed -r -e 's/\/.*?//g'
 
以html的形式获取服务器的硬件配置报告 
[root@localhost ~]# lshw -html >hardware.html
统计服务器上已经建立的TCP的链接 
[root@localhost ~]# netstat -an | awk '$1 ~ /[Tt][Cc][Pp]/ && $NF ~ /ESTABLISHED/{i++}END{print "Connected:\t", i}'


限制传输速率
[root@localhost ~]# cat /dev/urandom | pv -L 3m | dd bs=1M count=100 iflag=fullblock > /dev/null
 
上一条命令的快捷方式   
[root@localhost ~]# alias foo="!!"


备份制定后缀的文件并且打包到根目录下  
[root@localhost opt]# tar --exclude=".??*" -zcvf ./home_backup_2008.tar.gz my_home
 
替换:将hh文件下的内容192替换成193   
[root@localhost opt]# for I in "hh"; do sed -i "s/192/193/g" $I; done
Linux 限制传输速率    
# cat /dev/urandom | pv -L 3m | dd bs=1M count=100 iflag=fullblock > /dev/null
 
格式化另一个日期  
date --date=yesterday +%Y%m%d
合并多个文件到一个文件中 
cat file1 . . . fileN > NEWFile
 
递归删除所有的htm  
[root@localhost opt]# find . -type f -name '*.htm' -delete
列出并删除一岁的文件  
[root@localhost zhiwen]# find <目录路径> -mtime +365 -and -not -type d -delete


 
查找日志中的所有问题   
[root@localhost opt]# grep -2 -iIr "err\|warn\|fail\|crit" /var/log/*
寻找最大的10个文件夹 
[root@localhost ~]# find . -type d -print0 | xargs -0 du -s | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {} | sort -rn
检查端口是否开放   
[root@localhost ~]#nmap -p 80 hostname
 
显示命令的输出值到file.txt文件中     
[root@localhost opt]# command | sed '/file.txt/q'
保存man页面为pdf文件    
[root@localhost opt]# man -t awk | ps2pdf - awk.pdf
 
列出所有zip压缩包里边的文件并解压    
[root@localhost opt]# find . -name "[i].tgz" -or -name "[/i].zip" | while read file; do echo "$file:"; unzip $file; done
显示所有目录内容   
[root@localhost opt]# while read f;do echo "$f";done < <(find .)
 
Linux 查找指定的某个目录  
[root:/usr/sbin Master] # find / -name 目录名 -type d
在/var/log/secure 里针对某个IP扫描了多少次
[root:~ Slave] # cat /var/log/secure |grep 192.168.83.40 | wc -l
对其中的secure获取其中的ip地址和数量:
[root:~ Slave] # grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c

为apache单独编译mod_rewrite.so

运维技术OpenSkill 发表了文章 • 1 个评论 • 1246 次浏览 • 2015-06-09 22:59 • 来自相关话题

问题描述:
在编译安装完了apache之后,发现需要rewrite功能,但是用/usr/local/apache2/bin/apachectl -M命令发现没有rewrite_module
解决办法:
1)重现编译apache
你可以查看/usr/local/apache2/build/config.nice 这个文件来查看你apache的编译参数,然后重新编译你只需要添加--enable-rewrite参数就行。
2)手动添加mod_rewrite模块
首先在apache的源码安装目录中寻找mod_rewrite.c文件# find / -name mod_rewrite.c
/usr/local/src/httpd-2.2.12/modules/mappers/mod_rewrite.c //apache的源码安装目录中的mod_rewrite.c文件

# cd /usr/local/src/httpd-2.2.12/modules/mappers/
# /usr/local/apache2/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你编译安装apache的bin目录里

# /usr/local/apache2/bin/apxs -i -a -n mod_rewrite mod_rewrite.la
如果这个过程中没有出错的话,在你的apache的modules目录中编译出一个mod_rewrite.so文件编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:
LoadModule rewrite_module modules/mod_rewrite.so
这时,你的apache应该已经支持rewrite了,    注:完成之后,记得重启服务器apache。
 
重启apache的过程中你可能还会遇到如下问题:httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Can't locate API module structure `mod_rewrite_module' in file /usr/local/apache2/modules/mod_rewrite.so: /usr/local/apache2/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module
或者
Syntax error on line 329 of /usr/local/apache2/conf/httpd.conf: Can`t loacte API module staructure `mod_rewrite_module` in file /usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-0.so.0:undefined symbol:mod_rewrite_module
解决方法如下:修改 httpd.conf,将
LoadModule mod_rewrite_module modules/mod_rewrite.so
改为
LoadModule rewrite_module modules/mod_rewrite.so如果重启apache出现这个错误  module rewrite_module is built-in and can`t be loaded
表示模块是内建的,不用再调入,注释掉#LoadModule rewrite_module modules/mod_rewrite.so语法检查:# /usr/local/apache2/bin/apachectl configtest
Syntax OK
这时,你的apache应该已经支持rewrite了。需要注意的配置,配置虚拟主机的时候要类似如下设置才可以生效:<VirtualHost *:80>
DocumentRoot /var/www/www/devopsh/
ServerName www.devopsh.com
<Directory /var/www/www/devopsh/>
Options FollowSymLinks
AllowOverride All
order allow,deny
Allow from all
</Directory>
</VirtualHost>

如果AllowOverride设置为none的话,apache会不读取网站的.htaccess文件!上面虚拟主机只是针对指定文件夹可以读取到.htaccess文件了,如果要针对所有的文件夹都支持.htaccess,修改主配置文件httpd.conf,修改如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>

把AllowOverride None
"改成"
AllowOverride All
这样所有的文件夹都支持.htaccess了 查看全部
问题描述:
在编译安装完了apache之后,发现需要rewrite功能,但是用/usr/local/apache2/bin/apachectl -M命令发现没有rewrite_module
解决办法:
1)重现编译apache
你可以查看/usr/local/apache2/build/config.nice 这个文件来查看你apache的编译参数,然后重新编译你只需要添加--enable-rewrite参数就行。
2)手动添加mod_rewrite模块
首先在apache的源码安装目录中寻找mod_rewrite.c文件
# find / -name mod_rewrite.c
/usr/local/src/httpd-2.2.12/modules/mappers/mod_rewrite.c //apache的源码安装目录中的mod_rewrite.c文件

# cd /usr/local/src/httpd-2.2.12/modules/mappers/
# /usr/local/apache2/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你编译安装apache的bin目录里

# /usr/local/apache2/bin/apxs -i -a -n mod_rewrite mod_rewrite.la
如果这个过程中没有出错的话,在你的apache的modules目录中编译出一个mod_rewrite.so文件
编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:
LoadModule rewrite_module modules/mod_rewrite.so
这时,你的apache应该已经支持rewrite了,    注:完成之后,记得重启服务器apache。
 
重启apache的过程中你可能还会遇到如下问题:
httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Can't locate API module structure `mod_rewrite_module' in file /usr/local/apache2/modules/mod_rewrite.so: /usr/local/apache2/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module
或者
Syntax error on line 329 of /usr/local/apache2/conf/httpd.conf: Can`t loacte API module staructure `mod_rewrite_module` in file /usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-0.so.0:undefined symbol:mod_rewrite_module

解决方法如下:
修改 httpd.conf,将
LoadModule mod_rewrite_module modules/mod_rewrite.so
改为
LoadModule rewrite_module modules/mod_rewrite.so
如果重启apache出现这个错误  module rewrite_module is built-in and can`t be loaded
表示模块是内建的,不用再调入,注释掉
#LoadModule rewrite_module modules/mod_rewrite.so
语法检查:
# /usr/local/apache2/bin/apachectl configtest
Syntax OK
这时,你的apache应该已经支持rewrite了。
需要注意的配置,配置虚拟主机的时候要类似如下设置才可以生效:
<VirtualHost *:80>
DocumentRoot /var/www/www/devopsh/
ServerName www.devopsh.com
<Directory /var/www/www/devopsh/>
Options FollowSymLinks
AllowOverride All
order allow,deny
Allow from all
</Directory>
</VirtualHost>

如果AllowOverride设置为none的话,apache会不读取网站的.htaccess文件!
上面虚拟主机只是针对指定文件夹可以读取到.htaccess文件了,如果要针对所有的文件夹都支持.htaccess,修改主配置文件httpd.conf,修改如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>

把AllowOverride None
"改成"
AllowOverride All
这样所有的文件夹都支持.htaccess了