`
romejiang
  • 浏览: 95558 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

关于Linux的工具箱

阅读更多

Segmentation fault 断错误
/etc/iflow

########### Shell 脚本设置设置默认参数 #####################################

test -z $1 && DBName=leadtoasia || DBName=$1
test -z $2 && BackupMethod=mysqldump  || BackupMethod=$2
##########################################################################
SecureCRT中使用基于ZModem的文件上传下载
可以直接在SecureCRT的对话窗口打入命令就可以了:

上传:
rz        (SecureCRT会弹出对话框选择本地文件)

下载:
sz filename   (下载到SecureCRT设置的默认路径)

修改SecureCRT设置的文件传输默认路径:
Options -> Session Options ... -> File Transfer -> Directories
################# iptables ############################################
# Generated by iptables-save v1.3.5 on Tue Jan  6 14:05:16 2009
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [499371622:356601920073]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 59.174.87.79 -p tcp -j DROP
-A INPUT -s 58.61.136.207 -p tcp -j DROP
-A INPUT -s 119.139.226.150 -p tcp -j DROP
-A INPUT -s 119.139.226.92 -p tcp -j DROP
-A INPUT -s 119.136.219.215 -p tcp -j DROP
-A INPUT -s 114.243.238.201 -p tcp -j DROP
-A INPUT -s 220.181.61.0/255.255.255.0 -p tcp -j DROP
-A INPUT -s 119.178.10.237/255.255.255.0 -p tcp -j DROP
-A INPUT -s 58.61.164.0/255.255.255.0 -p tcp -j DROP
-A INPUT -s 124.115.0.0/255.255.255.0 -p tcp -j DROP
-A INPUT -s 124.115.4.0/255.255.255.0 -p tcp -j DROP
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3035 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8082 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 7000 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8166 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 61666 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1099 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
##########################################################################
硬盘型号和硬盘序列号
hdparm -i /dev/hda

dmidecode |more

modprobe rtc
hwclock --show
rmmod rtc

modprobe genrtc
hwclock --show
rmmod genrtc

modprobe rtc_dev
hwclock --show
rmmod rtc_dev
##########################################################################
CentOS的安装与卸载
yum   install   name
yum   remove   name

or 

rpm   -qa   |   grep   name
rpm   -e   name
##########################################################################
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

##########################################################################
lsof -i:80查看谁占用了80端口
##########################################################################
find /etc -name '*srm*'
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
##########################################################################
硬盘测试
time dd bs=512 count=1000000 if=/dev/zero of=/test
##########################################################################
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
##########################################################################
date -s 07/26/2005

date -s "2008-12-12 16:20:00"
clock -w
##########################################################################
grep -c hwclock * 每个文件匹配命中的个数
grep -n hwclock * 匹配的文件行数
grep -e hwclock * 正则匹配
time 统计时间
##########################################################################
##查看现在的分区状态
fdisk -l
##需要lvm的分区必须卸载
umount /opt
##将/dev/hda2  创建成pv(初始化成物理卷)
lvm pvcreate /dev/hda2
## 查看现在的lvm分区情况
lvm pvs

##创建卷组并向该卷组添加 /dev/hda5
vgcreate main /dev/hda2
##查看卷组情况
vgdisplay
## 创建逻辑卷
lvcreate -L8G -nlv_home main
## 逻辑卷上创建文件系统 (格式化分区)
mkfs.ext3  /dev/main/lv_home
## 检测分区(ext2、ext3特有)
e2fsck -f   /dev/main/lv_home
## 挂接分区
mount  /dev/main/lv_home /opt
##########################################################################
df -h
## 将挂接分区写入启动文件
vi /etc/fstab
##查看卷组情况
vgdisplay
## 修改lvm分区的大小
lvextend -L+2G /dev/main/lv_home
## 修改文件系统的分区的大小
resize2fs /dev/main/lv_home
## resize_reiserfs -f /dev/main/lv_home

df -h
fdisk -l
##########################################################################
减少硬盘方法

增加:
lvextend -L+100M /dev/myVG/myLV
ext2online /dev/myVG/myLV

减少:
umount
e2fsck -f /dev/myVG/myLV
resize2fs /dev/myVG/myLV 100M
lvreduce -L-100M /dev/myVG/myLV
mount

不需重启。
##########################################################################
#                             反向代理                                   #
##########################################################################
./configure --prefix=/opt/squid

初始化cache:该命令会产生Squid所有的缓存目录。
#/usr/local/squid/bin/squid –z 
%squid -zX
 
如果你想前台执行Squid,接着执行命令:
#/usr/local/squid/bin/squid -NCd1
如果想后台运行Squid,把它做为一个精灵进程,执行命令:
#/usr/local/squid/bin/squid  -s
观察Squid是否运行使用命令:
#squid -k check
输出会告诉你Squid的当前状态。

验证配置文件。这点容易做到,运行如下命令即可:
#squid -k parse


echo 8192 > /proc/sys/fs/file-max
limit -HSn 8192

例如,如下任务接口在每天的早上4点滚动日志:

0 4 * * * /usr/local/squid/sbin/squid -k rotate

 TCP_MEM_HIT
被squid缓存到内存中,并返回给访问用户

TCP_IMS_HIT
客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝。Squid发送更新的内容到客户端,而不联系原始服务器。

TCP_HIT
被squid缓存到cache目录中,并返回给访问用户

TCP_MISS
有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户

TCP_REFERSH_HIT(squid3.0改为TCP_REFRESH_UNMODIFIED
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。

TCP_REFRESH_MISS == TCP_REFRESH_MODIFIED
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的。

TCP_NEGATIVE_HIT
在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应。在短时间内对这些资源的重复请求,导致了否命中。negative_ttl指令控制这些错误被cache的时间数量。请注意这些错误只在内存cache,不会写往磁盘。下列HTTP状态码可能导致否定cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504。

TCP_DENIED
因为http_access或http_reply_access规则,客户端的请求被拒绝了。注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值。


可以查看下命中率及其他相关信息
#/usr/local/squid/bin/squidclient -p 80 -h localhost mgr:info
查看下命中率及其他
cat var/logs/access.log|gawk '{print $4}'|sort|uniq -c|sort -nr
##########################################################################
非常有用的squid命令:
list of useful squidclient commands

    * get squid run time info: squidclient -p 80 mgr:info
    * update specific url squid cache: squidclient -p 80 -m PURGE http://www.linux.com.cn/
      squidclient -p 80 http://www.linux.com.cn/
    * get squid memory detail info: squidclient -p 80 mgr:mem
    * get squid cached objects list: squidclient -p 80 mgrbjects. use it carefully, it may crash you squid
    * get squid diskd stats: squidclient -p 80 mgr:diskd
###########   可用的配置 ################################################################
acl sites dstdomain .ecfta.com
acl sites dstdomain .fta.hk
acl manager proto cache_object
acl Safe_ports port 80          # http
acl CONNECT method CONNECT

acl localhost src 127.0.0.1/32
acl Manager proto cache_object
http_access allow manager localhost

http_access allow sites
http_access deny !Safe_ports
http_access deny all
icp_access deny all
htcp_access deny all
http_port 80 defaultsite=ecfta.com vhost
cache_peer 117.34.72.147 parent 80 0 no-query originserver name=zh
cache_peer 117.34.72.147 parent 80 0 no-query originserver name=big
cache_peer_domain zh www.ecfta.com
cache_peer_domain big www.fta.hk
cache_peer_access zh allow sites
cache_peer_access big allow sites
hierarchy_stoplist cgi-bin ?
access_log /opt/squid/var/logs/access.log squid
refresh_pattern .               0       20%     4320
refresh_pattern \.html$         1440    50%     10080
coredump_dir /opt/squid/var/cache
############################################################################
<IfModule mod_deflate.c>
        DeflateCompressionLevel 6
        AddOutputFilter DEFLATE html xml php js css
        <Location />
                SetOutputFilter DEFLATE
                BrowserMatch ^Mozilla/4 gzip-only-text/html
                BrowserMatch ^Mozilla/4\.0[678] no-gzip
                BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
                SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
                SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
                SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
                #Header append Vary User-Agent env=!dont-vary
        </Location>
</IfModule>

   <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType image/jpeg "access plus 2 month"
        ExpiresByType image/bmp "access plus 2 month"
        ExpiresByType image/x-icon "access plus 2 month"
        ExpiresByType image/png "access plus 2 month"
        ExpiresByType text/css "access plus 2 month"
        ExpiresByType text/js "access plus 2 month"
        ExpiresByType text/html "access plus 3 hours"

        ExpiresDefault "access plus 1 day"
   </IfModule>
##########################################################################


##########################################################################
#                             NFS                                        #
##########################################################################
 
 
##########################################################################
#                             变形虫                                     #
##########################################################################
通过 amoeba 项目实现读写分离

java开发的程序,需要至少两个mysql,标准的配置文件,
第一部分是 amoeba 对外服务器的信息,
第二部分是defaultManager 默认的管理器
第三部分是后台的多个服务器,每个服务器一个配置dbServer,这里有一种特别的服务器配置,是虚拟服务器。通过虚拟服务器可以实现负载。
第四部分是sql路由,通过分析sql语句可以实现读写分离等模式



<?xml version="1.0" encoding="gbk"?>

<!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
<amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">
<!-- ########### 第一部分  ########## -->
        <server>
                <property name="port">8066</property>
        <!--
                <property name="ipAddress">127.0.0.1</property>
        -->
                <property name="readThreadPoolSize">20</property>

                <property name="clientSideThreadPoolSize">30</property>

                <property name="serverSideThreadPoolSize">30</property>

                <property name="netBufferSize">100</property>

                <property name="tcpNoDelay">true</property>

                <property name="user">root</property>

                <property name="password">1qazxsw2</property>
        </server>
<!-- ########### 第二部分  ########## -->
        <connectionManagerList>
                <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.AuthingableConnectionManager"/>
        </connectionManagerList>
<!-- ########### 第三部分  ########## -->
        <dbServerList>
                <dbServer name="master">

                        <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                                <property name="manager">defaultManager</property>
                                <property name="port">3306</property>
                                <property name="ipAddress">192.168.1.5</property>
                                <property name="schema">test</property>
                                <property name="user">root</property>
                                <property name="password">1qazxsw2</property>
                        </factoryConfig>
                       
                        <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                                <property name="maxActive">200</property>
                                <property name="maxIdle">200</property>
                                <property name="minIdle">10</property>
                                <property name="minEvictableIdleTimeMillis">600000</property>
                                <property name="timeBetweenEvictionRunsMillis">600000</property>
                                <property name="testOnBorrow">true</property>
                                <property name="testWhileIdle">true</property>
                        </poolConfig>
                </dbServer>

                <dbServer name="slave">

                        <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                                <property name="manager">defaultManager</property>
                                <property name="port">3306</property>
                                <property name="ipAddress">127.0.0.1</property>
                                <property name="schema">test</property>
                                <property name="user">root</property>
                                <property name="password">1qazxsw2</property>
                        </factoryConfig>

                        <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                                <property name="maxActive">200</property>
                                <property name="maxIdle">200</property>
                                <property name="minIdle">10</property>
                                <property name="minEvictableIdleTimeMillis">600000</property>
                                <property name="timeBetweenEvictionRunsMillis">600000</property>
                                <property name="testOnBorrow">true</property>
                                <property name="testWhileIdle">true</property>
                        </poolConfig>
                </dbServer>



        </dbServerList>
<!-- ########### 第四部分  ########## -->
        <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
                <property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>
                <property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>
                <property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>
                <property name="LRUMapSize">1500</property>
                <property name="defaultPool">master</property>

                <property name="writePool">master</property>
                <property name="readPool">slave</property>
                <property name="needParse">true</property>
        </queryRouter>
</amoeba:configuration>

##########################################################################
#                             mysql 读写分离                             #
##########################################################################
通过mysql-proxy实现读写分离

===数据库同步===
0.主服务器上配置打开
log-bin=mysql-bin
server-id      = 1
1.在主服务器建立复制用户,ip为从服务器的ip
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '1qazxsw2';
2.锁定主服务器, flush tables with read lock;
3.如果主服务器中有数据,就复制主服务数据覆盖从服务数据文件
4.获取偏移量 show master status;
5.打开从服务器配置文件
server-id       = 2
master-host     =   192.168.1.5
master-user     =   repl
master-password =   xxxx
master-port     =  3306
log-bin=mysql-bin

6.重启从服务器,/etc/init.d/mysql start --skip-slave-start
7.配置偏移量(文件名必须一致,特别是后面的数字)
change master to
master_log_file='mysql-bin.000002',
master_log_pos=98;

change master to master_log_file='mysql-bin.000003',master_log_pos=98;
6.启动复制 start slave;

show master status \G;
show slave status \G;
show processlist \G;

===mysql proxy===
#!/bin/sh
# chkconfig: 345 74 30
# description: Mysql Proxy
#
#
export LUA_PATH=/opt/proxy/share/mysql-proxy/?.lua

cd /opt/proxy/sbin
mode=$1
if [ -z "$mode" ] ; then
  mode="start"
fi

case $mode in
  'start')
    ./mysql-proxy --daemon \
--proxy-address=:3307 \
--proxy-backend-addresses=192.168.1.5:3306 \
--proxy-read-only-backend-addresses=:3306 \
--proxy-lua-script=/opt/proxy/share/mysql-proxy/rw-splitting.lua
    ;;

  'stop')
    killall mysql-proxy
    ;;

  'restart')
    if $0 stop ; then
      $0 start
    else
      echo  "retart failed!!!"
      exit 1
    fi
    ;;
esac
exit 0
##########################################################################
#                             Nginx                                      #
##########################################################################
安装:
pcre-7.8
zlib-1.2.3
安装:nginx
./configure  --prefix=/opt/nginx  --with-poll_module  --with-pcre=/root/pcre-7.8/

重启:
kill -HUP `cat logs/nginx.pid`

配置文件中的变量:
$args, 请求连接的参数,?以后的;
$content_length, 请求头信息的"Content-Length"  ;
$content_type, 请求头信息的"Content-Type"
$document_root, 当前请求的root,通过root配置得到;
$document_uri, 和 $uri 相同; 
$host, 
$http_user_agent
$http_cookie
$is_args evaluates to "?" if $args is set, "" otherwise.
$limit_rate, the variable allows to limit connection rate;
$request_method, 例如: "GET" or "POST";
$remote_addr, 访问者地址
$remote_port, 访问者端口
$remote_user, 访问者用户名
$request_filename,   请求的物理地址,通过root或者alias配置信息得到。
$request_body_file, client request body temporary filename;
$request_uri, 完整的请求地址,比如:http://www.ecfta.com/doc/index.html?xx=ddd
$query_string, 和 $args 相同;
$scheme,   例如:(http, https)
$server_protocol, 例如: "HTTP/1.0" or "HTTP/1.1";
$server_addr, 服务器地址,来自于配置文件的绑定ip地址;
$server_name, 
$server_port,
$uri, 当前请求的URI,


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" >
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ page import="java.util.*" %>

Enumeration<String> attrEnum =request.getHeaderNames();
String attrName = null;
    while (attrEnum.hasMoreElements() ) {
    attrName = attrEnum.nextElement();
        out.println( attrName + ":");
        out.println( request.getHeader(attrName) + "<br>");
    }
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform].
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
##########################################################################
#                             Mysql Apache Resin                         #
##########################################################################
编译 安装 mysql
./scripts/mysql_install_db --user=mysql --basedir=/opt/mysql/  --datadir=/data/mysql

拷贝配置文件和启动文件

[root@web mysql]# cp support-files/my-medium.cnf /etc/my.cnf

[root@web mysql]# cp support-files/mysql.server /etc/init.d/mysql

修改/etc/init.d/mysql
文件中系统目录和数据目录

--prefix=/opt/server/apache2 --disable-ipv6  --enable-so

编译 apache
./configure --prefix=/opt/apache2 --enable-mods-shared=all --enable-so  --enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-proxy --enable-rewrite --enable-charset-lite  --disable-ipv6 -disable-dav

编译REsin
./configure --with-apache=/opt/apache2

编译Resin 的JNI
./configure; make; make install

#############  编程找文件  #############################################################
find . -iname "*.php" -exec grep -Hn "SELECT SQL_CACHE articleid" {} \; 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics