July 22, 2011
用shell和php脚本实现定时检测服务器情况
"\u003cp\u003e实现原理,利用 cron来定时执行一个shell脚本,如果发现服务器不通或者上次故障后恢复正常,则发送邮件.否则不用发送邮件. 目前此Shell在FreeBSD和Linux下均可以正常运行.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eping.sh\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/bin/bash\nif [ $# -ne 1 ]\nthen\necho \u0026#39;must have one param,must be ip address format!\u0026#39;\nexit\nfi\n\nip=$1\ntmpfile=/tmp/$ip.txt\nif [ -f $tmpfile ]; then\nlastmsg=`cat $tmpfile`\nelse\nlastmsg=\u0026#39;YES\u0026#39;\nfi\n\nret=`ping -c 3 $ip | grep ttl | wc -l`\nif [ $ret -lt 2 ]; then\necho \u0026#39;NO\u0026#39; \u0026gt; $tmpfile\n/usr/local/bin/php /data/haohtml.com/www/ping.php $ip \u0026gt; /dev/null 2\u0026gt;\u0026amp;1\nelif [ …\u003c/code\u003e\u003c/pre\u003e"
July 21, 2011
Cannot access the Hardware Clock via any known method.的解决办法
"\u003cp\u003e今天在服务器上修改时间的进修,发现用date -s 21:45:12不起作用,提示"\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eCannot access the Hardware Clock via any known method.\nUse the --debug option to see the details of our search for an access method.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e"错误,后来google了一下,有人说在64位平台的原因,说是一个bug的.\u003c/p\u003e\n\u003cp\u003e在执行clock -w 和hwclock命令的时候,总提示错误信息.这里介绍一种方法:\u003c/p\u003e\n\u003cp\u003e#tzselect\u003c/p\u003e\n\u003cp\u003e然后选择”5) Asia”,回车,选择国家" 9) China"回车,在选择的地区里选择"1) east China – Beijing, Guangdong, Shanghai, etc.",最后选择"1) Yes"对上面的设置进行确认即可.会提示以下信息,这时时间已经正常了.为了长久有效,可以添加到.profile文件里,我是添加到/etc/profile文件里了,不知道对否的.反正时间是过来了.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eYou can make this change …\u003c/code\u003e\u003c/pre\u003e"
July 21, 2011
一个简单的ping检测服务器状态的shell脚本
"\u003cp\u003e这个脚本特别的简单的,一次只能检测一个ip地址,可以放在crontab里定时检测.可以用来检测服务器状态情况.特别的实用的,如果有多个ip地址的话,可能必定一下,循环一下就可以了.\u003c/p\u003e\n\u003cp\u003e只有当不通或者宕机后恢复正常的时候才发送指定消息.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/bin/bash\nif [ $# -ne 1 ]\nthen\necho \u0026#39;must have one params ip address format!\u0026#39;\nexit\nfi\n\nip=$1\ntmpfile=$ip.txt\nif [ -f $tmpfile ]; then\nlastmsg=`cat $tmpfile`\nelse\nlastmsg=\u0026#39;YES\u0026#39;\nfi\n\nret=`ping -c 3 $ip | grep ttl | wc -l`\nif [ $ret -lt 2 ]; then\necho \u0026#39;NO\u0026#39; \u0026gt; $tmpfile\necho \u0026#39;send waring message!\u0026#39;\n//这里可以执行php脚本,用来 发送邮件信息\nelif [ $lastmsg = …\u003c/code\u003e\u003c/pre\u003e"
July 21, 2011
linux中的shell重定向
"\u003cp\u003e下面的shell 可不可以详细解释一下呀?\n(ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file\n(ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1)|egrep * \u0026gt;file\n(ls you no;ls yes) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file\u003c/p\u003e\n\u003cp\u003e2\u0026gt;\u0026amp;1又是什么意思呀??\n在 shell中 \u0026gt;代表输出重定向\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e0表示标准输入\n1表示标准输出(默认值)\n2表示标准错误输出\n2\u0026gt;\u0026amp;1意思是:把 标准错误输出 重定向到 标准输出.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003els xxx \u0026gt;out.txt 2\u0026gt;\u0026amp;1, 实际上可换成 ls xxx \u003cstrong\u003e1\u003c/strong\u003e\u0026gt;out.txt 2\u0026gt;\u0026amp;1;重定向符号\u0026gt;默认是1,错误和输出都传到out.txt了。\u003c/p\u003e\n\u003cp\u003e|:是管道,例子:\ncmd1 | cmd2 意思是:命令cmd1的标准输出座位cmd2的标准输入.\u003c/p\u003e\n\u003cp\u003e详细解释第三个命令行,(ls you no;ls yes) …\u003c/p\u003e"
July 20, 2011
linux中tail命令详解
"\u003cp\u003elinux中tail命令—用于查看文件内容\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e最基本的是cat、more和less。\u003c/strong\u003e\n1. 如果你只想看文件的前5行,可以使用head命令,如:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ehead -5 /etc/passwd\u003c/p\u003e\u003c/blockquote\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e如果你想查看文件的后10行,可以使用tail命令,如:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cblockquote\u003e\n\u003cp\u003etail -2 /etc/passwd 或 tail -n 2 /etc/passwd\ntail -f /var/log/messages\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e参数-f使tail不停地去读最新的内容,这样有实时监视的效果 用Ctrl+c来终止!\n3. 查看文件中间一段,你可以使用sed命令,如:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003esed -n ‘5,10p’ /etc/passwd\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e这样你就可以只查看文件的第5行到第10行。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003etail语法格式:\u003c/strong\u003e\ntail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]\n或者\ntail [ -r ] [ -n Number ] [ File ]\n\u003cstrong\u003e使用说明:\u003c/strong\u003e\ntail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输 …\u003c/p\u003e"
July 19, 2011
Linux的bg和fg命令
"\u003cp\u003e我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。\u003c/p\u003e\n\u003cp\u003e假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[1]+ Stopped /root/bin/rsync.sh\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#bg 1\n[1]+ /root/bin/rsync.sh \u0026amp;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e用 jobs 命令查看正在运行的任务:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#jobs\n[1]+ Running /root/bin/rsync.sh \u0026amp;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如果想把它调回到前台运行,可以用\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#fg 1\n/root/bin/rsync.sh\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e这样,你在控制台上就只能等待这个任务完成了。\u003c/p\u003e\n\u003cp\u003efg、bg、jobs、\u0026amp;、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的.\u003c/p\u003e\n\u003cp\u003e一。\u0026amp; 最经常被用到\n这个用在 …\u003c/p\u003e"
July 19, 2011
linux/unix中的nohup命令
"\u003cp\u003eUnix/Linux下一般比如想让某个程序在后台运行,很多都是使用 \u0026amp; 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:\u003c/p\u003e\n\u003cp\u003e/usr/local/mysql/bin/mysqld_safe –user=mysql \u0026amp;\u003c/p\u003e\n\u003cp\u003e但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 \u0026amp;\u003c/p\u003e\n\u003cp\u003e结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003enohup /root/test.php \u0026amp;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e提示:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[~]$ appending output to nohup.out\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003enohup 命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e用途\u003c/strong\u003e:LINUX命令用法,不挂断地运行命令。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e语法\u003c/strong\u003e:nohup Command [ Arg … ] [ \u0026amp; ]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e描述\u003c/strong\u003e:nohup 命令运行由 Command 参数和任何相关的 \u003ca href=\"http://baike.baidu.com/view/1476704.htm\"\u003eArg\u003c/a\u003e 参 …\u003c/p\u003e"
July 19, 2011
CentOS下安装lighttpd
"\u003cp\u003e在向大家详细介绍CentOS lighttpd安装之前,首先让大家了解下CentOS系统作用,然后全面介绍CentOS lighttpd安装,CentOS社区不断与其他的同类社区合并,使CentOS Linux逐渐成为使用最广泛的RHEL兼容版本。CentOS Linux的稳定性不比RHEL差,唯一不足的就是缺乏技术支持,因为它是由社区发布的免费版。希望对大家有用。\u003c/p\u003e\n\u003cp\u003eCentOS lighttpd安装\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ewget \u003ca href=\"http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz\"\u003ehttp://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz\u003c/a\u003e\ntar zxvf lighttpd*\ncd lightt*\n./configure –prefix=/usr/local/lighttpd –with-pcre\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003eCentOS lighttpd安装这时候说缺少pcre-devel\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eyum install pcre-devel\n./configure –with-pcre\nmake\nmake install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e在ubuntu下用apt-get install lighttpd来安装,方便了很多,CentOS …\u003c/p\u003e"
July 15, 2011
Please provide a path to MagickWand-config or Wand-config program的解决办法
"\u003cp\u003e今天在安装lnmp的时候,发现在安装imagick-3.0.1.tgz时,执行\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e./configure --with-php-config=/usr/local/php/bin/php-config\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e的时候,提示以下错误:\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003echecking for PHP includes… -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext\nchecking for PHP extension directory… /usr/lib64/php/modules\nchecking for PHP installed headers prefix… /usr/include/php\nchecking for re2c… no\nconfigure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.\nchecking …\u003c/code\u003e\u003c/pre\u003e"
July 14, 2011
很有用的mysqladmin命令
"\u003cblockquote\u003e\n\u003cp\u003e[root@localhost ~]$ uname -r\n2.6.9-22.ELsmp\u003c/p\u003e\n\u003cp\u003e[root@localhost ~]$ /usr/local/mysql/bin/mysqladmin version -uroot -p\nEnter password:\n/usr/local/mysql/bin/mysqladmin Ver 8.42 Distrib 5.1.22-rc, for redhat-linux-gnu on x86_64\nCopyright (C) 2000-2006 MySQL AB\nThis software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\u003c/p\u003e\n\u003cp\u003eServer version 5.1.22-rc-log\nProtocol version 10\nConnection Localhost …\u003c/p\u003e\u003c/blockquote\u003e"
July 13, 2011
nginx [emerg]: getpwnam(“www”) failed
"\u003cp\u003e在配置nginx提示如下错误时:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[emerg]: getpwnam(“www”) failed\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e解决方案:\u003c/strong\u003e\n在nginx.conf中 把#user nobdy改为user www www既可.\u003c/p\u003e\n\u003cp\u003e如果还提示同样的错误,请检查www组和www用户是否存在,不存在的话,直接创建即可\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e/usr/sbin/groupadd www\n/usr/sbin/useradd -g www www\u003c/p\u003e\u003c/blockquote\u003e"
July 12, 2011
[教程]为PHP安装phpRedis扩展模块
"\u003cp\u003e\u003cstrong\u003e一.安装phpredis\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# wget \u003ca href=\"https://download.github.com/owlient-phpredis-2.1.1-1-g90ecd17.tar.gz\"\u003ehttps://download.github.com/owlient-phpredis-2.1.1-1-g90ecd17.tar.gz\u003c/a\u003e\n# tar -zxvf owlient-phpredis-2.1.1-1-g90ecd17.tar.gz\n# cd owlient-phpredis-2.1.1-1-g90ecd17\n# /usr/local/php/bin/phpize\n# ./configure –with-php-config=/usr/local/php/bin/php-config\n# make \u0026amp;\u0026amp; make install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e修改php.ini文件,应用扩展\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# /usr/local/php/etc/php.ini\n加入:\nextension=redis.so\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e重启httpd\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# service httpd -k restart\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e我这里使用的是php-fpm模块运行的Nginx\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e/usr/local/php/sbin/php-fpm restart\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e通过phpinfo()函数查看,可以看到redis扩展\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/07/phpredis.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/07/phpredis.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如 …\u003c/p\u003e"
July 12, 2011
phpize简介
"\u003cp\u003ephpize 是属于 php-devel 中的东西,主要是设定 php 外挂模块的一些设定\u003c/p\u003e\n\u003cp\u003e所以安装 php-devel 相关套件就会有 phpize 可以使用 (档案预设存放于 /usr/bin/phpize )\u003c/p\u003e\n\u003cp\u003ephpize 命令是用来准备 PHP 外挂模块的编译环境的。下面例子中,外挂模块的源程序位于 extname 目录中:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ cd extname\n$ phpize\n$ ./configure (注一)\n$ make\n$ make install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e成功的安装将建立 extname.so 并放置于 PHP 的外挂模块目录中 (预设存放于 /usr/lib/php/modules/ 内) 。\u003c/p\u003e\n\u003cp\u003e需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此外挂模块。\u003c/p\u003e\n\u003cp\u003e注一:\u003c/p\u003e\n\u003cp\u003e如在执行 ./configure 时出现 not find –with-php-config 时,\u003c/p\u003e\n\u003cp\u003e可重下以下指令,因 –with-php-config 预设在 /usr/bin/php-config 可找到\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e./configure …\u003c/strong\u003e\u003c/p\u003e"
July 11, 2011
统计apache日志中每日访问IP中访问量最多的100个IP
"\u003cp\u003e统计apache日志中每日访问IP中访问量最大的100个IP地址\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecat access.log |awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100 \u0026gt; 37res.txt\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e来源:\u003c/p\u003e"
July 9, 2011
升级centos内核
"\u003cp\u003e因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级还算比较顺利,具体的过程如下:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@localhost ~]# uname -r\n2.6.18-194.el5\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e1.下载linux-2.6.30内核包到/usr/src目录\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd /usr/src\nwget \u003ca href=\"ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.gz\"\u003eftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.gz\u003c/a\u003e\ntar -xzvf linux-2.6.30.tar.bz2 -C /usr/src\ncd linux-2.6.30\nmake mrproper 清除环境变量,即清除配置文件\nmake menuconfig 在菜单模式下选择需要编译的内核模块:\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003enetworking support—\u0026gt;networking options—\u0026gt;network packet filtering framework(netfilter)\u003c/p\u003e\n\u003cp\u003e(1).core netfilter configuration\nA 勾中”Netfilter …\u003c/p\u003e"