July 26, 2011
利用taskset有效控制cpu资源
"常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源;\n这个时候我们就可以把一些不太重要的比如copy/备份/同步等工作限定在一颗cpu上,或者是多核的cpu的一颗核心上进行处理,虽然这不一定是最有效的方法,但可以最大程度上利用了有效资源,降低那些不太重要的进程占用cpu资源;\n查看系统下cpu信息:\n#cat /proc/cpuinfo taskset就可以帮我们完成这项工作,而且操作非常简单;\n该工具系统默认安装,rpm包名util-linux\n#taskset --help taskset (util-linux 2.13-pre7) usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]] set or get the affinity of a process -p, --pid operate on existing given pid -c, --cpu-list display and …"
July 25, 2011
iptables 开放80端口
"iptables -F //清空规则\niptables -A INPUT -p tcp –dport 22 -j ACCEPT /*允许包从22端口进入*/ iptables -A OUTPUT -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT /*允许从22端口进入的包返回*/ iptables -A OUTPUT -p udp –dport 53 -j ACCEPT iptables -A INPUT -p udp –sport 53 -j ACCEPT iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /*允许本机访问本机*/ iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 –dport 80 -j ACCEPT /*允许所有IP访问80端口*/ iptables -A OUTPUT -p tcp –sport 80 -m state …"
July 24, 2011
linux下网站排障分析常用的命令
"系统连接状态篇:\n1.查看TCP连接状态 netstat -nat |awk \u0026#39;{print $6}\u0026#39;|sort|uniq -c|sort -rn netstat -n | awk \u0026#39;/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}\u0026#39; 或 netstat -n | awk \u0026#39;/^tcp/ {++state[$NF]}; END {for(key in state) print key,\u0026#34;t\u0026#34;,state[key]}\u0026#39; netstat -n | awk \u0026#39;/^tcp/ {++arr[$NF]};END {for(k in arr) print k,\u0026#34;t\u0026#34;,arr[k]}\u0026#39; netstat -n |awk \u0026#39;/^tcp/ {print $NF}\u0026#39;|sort|uniq -c|sort -rn netstat -ant | awk \u0026#39;{print $NF}\u0026#39; | grep -v \u0026#39;[a-z]\u0026#39; | …"
July 22, 2011
隐藏 Apache & PHP 的版本号
"有朋友问起,如何隐藏 HTTP header 中发送包含在 Server 信息里面的 Apache 和 PHP 版本号(譬如我们可以到 Firefox 的附加工具里面找 Live HTTP Headers;还可以用curl -I IPaddress|http://域名 ) 下面是做法: Apache: 打开 httpd.conf,在文件最后加入以下代码:\n#Hidden I can with apache version number\nServerTokens ProductOnly\nServerSignature Off\nPHP: 隐藏 PHP 版本就是隐藏类似于 “X-Powered-By: PHP/5.1.2-1+b1” 这个,开启 php.ini,加入:\nexpose_php = Off 设置了expose_php=Off后,用phpinfo查看的时候,页面上原来正常显示的图片会消失隐藏的.\n相关:"
July 22, 2011
squid缓存php动态文件
"acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY\n这段代码会不cache 所有带 cgi-bin 和 ? 的url path.表面看来,如果url 里面不带?还是可以被缓存的。可惜实际并非如此,squid 会根据header读取httpd的声明信息,例如生成时间等信息;实际上.php的页面不返回 last-modified 信息,因此很难被cache。\n通过增加 php 的last-modified header强制 squid 的cache功能:\nheader(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);\nheader要放在所有.php文件中去。换而言之,就是要\n在 include.php中,构造一个当前时间转换为最近那次5分钟/n分钟划分的时间函数 把这个时间函数的结果返回到 header 在所有页面中调用这个 include 以上方法本人已经测试通过.\n分别是加last-modified前台的日志\n============================\n由 …"
July 22, 2011
使用sed处理php-fpm.conf和nginx.conf文本里的注释信息
"默认系统环境安装教程: http://blog.haohtml.com/archives/6051\nphp-fpm.conf:\n想自己搞一个自动修改php-fpm.conf的shell脚本.刚安装的php,默认的是nobody用户运行的,这里修改为了www,并去掉了两边的注释符\nsed ‘63,66s/|–\u0026gt;//g’ php-fpm.conf | sed ‘s/nobody/www/g’\n上面将”“和”–\u0026gt;“两个字符串全部删除了.多个之间用”|“符号隔开\ns前面的63,66为处理的行号,如果为一行的话,直接指定一个行号就可以了.这里使用了从63行到66行中间的数据,包括这两行.\nnginx.conf\n下面的命令是用来配置nginx.conf文件的\nsed \u0026#39;2s/nobody/www/\u0026#39; /usr/local/nginx/conf/nginx.conf.default | sed \u0026#39;2s/#//g\u0026#39;| sed \u0026#39;64,71s/#//g\u0026#39; | sed …"
July 22, 2011
用shell和php脚本实现定时检测服务器情况
"实现原理,利用 cron来定时执行一个shell脚本,如果发现服务器不通或者上次故障后恢复正常,则发送邮件.否则不用发送邮件. 目前此Shell在FreeBSD和Linux下均可以正常运行.\nping.sh\n#!/bin/bash if [ $# -ne 1 ] then echo \u0026#39;must have one param,must be ip address format!\u0026#39; exit fi ip=$1 tmpfile=/tmp/$ip.txt if [ -f $tmpfile ]; then lastmsg=`cat $tmpfile` else lastmsg=\u0026#39;YES\u0026#39; fi ret=`ping -c 3 $ip | grep ttl | wc -l` if [ $ret -lt 2 ]; then echo \u0026#39;NO\u0026#39; \u0026gt; $tmpfile /usr/local/bin/php /data/haohtml.com/www/ping.php $ip \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 elif [ …"
July 21, 2011
Cannot access the Hardware Clock via any known method.的解决办法
"今天在服务器上修改时间的进修,发现用date -s 21:45:12不起作用,提示"\nCannot access the Hardware Clock via any known method. Use the --debug option to see the details of our search for an access method. "错误,后来google了一下,有人说在64位平台的原因,说是一个bug的.\n在执行clock -w 和hwclock命令的时候,总提示错误信息.这里介绍一种方法:\n#tzselect\n然后选择”5) Asia”,回车,选择国家" 9) China"回车,在选择的地区里选择"1) east China – Beijing, Guangdong, Shanghai, etc.",最后选择"1) Yes"对上面的设置进行确认即可.会提示以下信息,这时时间已经正常了.为了长久有效,可以添加到.profile文件里,我是添加到/etc/profile文件里了,不知道对否的.反正时间是过来了.\nYou can make this change …"
July 21, 2011
一个简单的ping检测服务器状态的shell脚本
"这个脚本特别的简单的,一次只能检测一个ip地址,可以放在crontab里定时检测.可以用来检测服务器状态情况.特别的实用的,如果有多个ip地址的话,可能必定一下,循环一下就可以了.\n只有当不通或者宕机后恢复正常的时候才发送指定消息.\n#!/bin/bash if [ $# -ne 1 ] then echo \u0026#39;must have one params ip address format!\u0026#39; exit fi ip=$1 tmpfile=$ip.txt if [ -f $tmpfile ]; then lastmsg=`cat $tmpfile` else lastmsg=\u0026#39;YES\u0026#39; fi ret=`ping -c 3 $ip | grep ttl | wc -l` if [ $ret -lt 2 ]; then echo \u0026#39;NO\u0026#39; \u0026gt; $tmpfile echo \u0026#39;send waring message!\u0026#39; //这里可以执行php脚本,用来 发送邮件信息 elif [ $lastmsg = \u0026#39;NO\u0026#39; …"
July 21, 2011
linux中的shell重定向
"下面的shell 可不可以详细解释一下呀? (ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file (ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1)|egrep * \u0026gt;file (ls you no;ls yes) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file\n2\u0026gt;\u0026amp;1又是什么意思呀?? 在 shell中 \u0026gt;代表输出重定向\n0表示标准输入 1表示标准输出(默认值) 2表示标准错误输出 2\u0026gt;\u0026amp;1意思是:把 标准错误输出 重定向到 标准输出. ls xxx \u0026gt;out.txt 2\u0026gt;\u0026amp;1, 实际上可换成 ls xxx 1\u0026gt;out.txt 2\u0026gt;\u0026amp;1;重定向符号\u0026gt;默认是1,错误和输出都传到out.txt了。\n|:是管道,例子: cmd1 | cmd2 意思是:命令cmd1的标准输出座位cmd2的标准输入.\n详细解释第三个命令行,(ls you no;ls yes) …"