工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2010年06月的文章

Maatkit是非常不错的mysql管理工具

Maatkit是非常不错的mysql管理工具,网络评价非常不错。包含以下主要工具:
1、mk-table-checksum 检查主从表是否一致的有效工具
2、mk-table-sync 有效保证表一致的工具,不必重载从表而能够保证一致。
3、mk-visual-explain  exlpain解释工具
4、mk-heartbeat 主从同步的监视工具,能够给出从落后于主多少
5、mk-parallel-dump 多线程的mysqldump工具
6、mk-parallel-restore 多线程的表回复工具
7、mk-query-profiler 查询检测分析工具
8、mk-deadlock-logger 死锁的记录工具,支持innodb
9、mk-duplicate-key-checker key侦测工具
10、mk-show-grants 权限管理显示工具
11、mk-slave-restart slave的检测和重启工具
12、mk-slave-delay slave delay replication 的工具
13、mk-slave-prefetch  This tool implements Paul Tuckfield’s famous“oracle” algorithm to read ahead of the slave SQL thread in the relaylogs, rewriting queries as SELECT and executing them to warm theslave’s caches. This can help an I/O-bound slave SQL thread run fasterunder some

 

php Out of memory (allocated

如上可以看到,只是简单的封装了一下..其实还是直接面对的是linux的 out of memory,只是多打印了一点信息而已,若开启了memory_limit,则在out of memory之前就行处理,也就是开启了memory_limit,就不会处理out of memory.

开启memory_limit显然是有好处的(若把memory_limit设置为-1,等于让memory_limit失效),起码不会把整个系统的内存给吃掉了,若不开启memory_limit,PHP对要多少内存基本是裸跑状态,直接面对OOM机制..而且下场会比较惨,比如吃掉整个系统内存,让其他程序运行不起来之类的..

总结:php的”out of memory”错误在开启memory_limit的情况下一般不会出现..

 

http://www.mikale.org/html/2009/04/146.html

linux 修改时区

转贴

计算机系统有两个时钟,一个是 BIOS,或者CMOS,或者说“硬件时钟”,还有一个就是“系统(操作系统)时钟”,如果这两个时钟的设置上有问题,或者Linux 的时钟配置文件不正确的话,就会产生系统时钟差 8 小时的问题。 


让我们先查看 /etc/sysconfig/clock 的内容: 
[root@www /root]# cat /etc/sysconfig/clock 
ZONE=Asia/Shanghai ;/usr/share/zoneinfo 下面的文件。 
UTC=false ; 硬件时钟是否为 UTC 或者说 GMT 时钟。 
ARC=false ;如果是在 Alpha 机器上,则设置为 true 。 
把硬件时钟设置为 UTC 的好处就是他能自动设置夏时制,缺点时,在安装有多重操作系统启动的机器上,在另外的操作系统上时钟会错误。 

Linux 的时钟设置文件为:/etc/localtime ,实际上这个文件是 /usr/share/zoneinfo 目录下对应文件的符号连接。假设我们所处的地区位于上海,那么只要运行以下的命令就可以设置时区了。 

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

Linux 启动时,其中的一个脚本(/etc/rc.d/rc.sysinit)会运行 /sbin/hwclock 程序,把当前的硬件时钟复制为系统时间。hwclock 假定硬件时钟已经设置为本地时钟,除非带有 --utc 参数。脚本文件会读取 /etc/sysconfig/clock 文件的设置,因此我们不需要修改脚本,直接修改这个配置文件就可以了,根据需要把其中的 UTC 行,设置为 true 或者 false。 

设置硬件时钟时,首先使用 date 命令("date MMDDhhmmYYYY.ss") 设置好系统时钟,然后使用 "/sbin/hwclock --systohc" 把硬件时钟设置为和当前系统时间一致。 

如果你在某些应用下面的时间是错误的,那么你在运行 Red Hat Linux 5.0 或 5.1,解决的办法是建立 /usr/lib/zoneinfo 到 /usr/share/zoneinfo 的符号连接: 

ln -s /usr/share/zoneinfo /usr/lib/zoneinfo 

小结:时钟设置的问题本身比较简单,但是它涉及到几个基本的配置文件: 

/etc/rc.d/rc.sysinit 
/etc/sysconfig/clock 
/etc/localtime 
/usr/share/zoneinfo 

对初学者来说,确实需要一定的基本功才可以对以上的几个文件了如指掌。但是仔细阅读 hwclock 的 man 手册,相信这些问题都能迎刃而解。

rpm 不常用

which timeconfig

rpm -qf /usr/sbin/timeconfig

htaccess

<Directory "/www/web/awstats">
        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /www/web/awstats/htpasswd
        Require valid-user
</Directory>

htpasswd -c /www/web/awstats/htpasswd test

IOWait高的一些处理方法

IOWait高的一些处理方法

1、检查RAID的状态,比如是否正在重建或者没有初始化
2、替换操作系统的内核,最好使用发行版标准的Linux kernel,因为有比较多的补丁
3、检查/proc/sys/vm下面是否可以优化
4、是否使用了文件系统,文件系统是否有优化的选项,比如在RAID5上采用xfs文件系统时,
可以调节一些参数优化性能
5、客户端程序是否产生了过大的压力,比如磁盘的读写性能只有10MB/s,每个线程的读写
速度为5MB/s,那么如果读写线程数为20的话,无疑会造成IOWait过高
6、查看进程状态
ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ‘ $4 ~ /D/ {print $0}’
lsof -p $pid
7、使用block_dump
/etc/init.d/syslog stop
echo 1 > /proc/sys/vm/block_dump
sleep 60
dmesg | awk ‘/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \
print process[x],x}’ |sort -nr |awk ‘{print $2 ” ” $1}’ | \
head -n 10

echo 0 > /proc/sys/vm/block_dump
/etc/init.d/syslog start

shell

shell 特殊的变量
$!  代表最后执行的后台命令的PID
$?  记录着最后退出的状态
$#  记录着传入的参数个数
$@  为所有参数列表,不受IFS控掉
$*  所有参数列表 受IFS控制
$$  进程标识号
$-  使用set及执行时传递给shell的标志位
$_ 之前命令的最后一个参数
$0  为程序名称
$1  为第一个参数 位置参数 #1
$2  为第二个参数,以下类推
PS1 为提示符,可进行设置 PS1="[\u@\h \W]\$"
PS2 为换行时的那个符号如 aa '换行后默认会出现>我们可以进行修改 PS2=''换成你喜欢的
IFS 为变量的分隔符,默认是空格
${10} 位置参数 #10
${#*} 传递到脚本中的命令行参数的个数
${#@} 传递到脚本中的命令行参数的个数


文件状态测试
-b filename : 当filename 存在并且是块文件时返回真(返回0)
-c filename : 当filename 存在并且是字符文件时返回真
-d pathname : 当pathname 存在并且是一个目录时返回真
-e pathname : 当由pathname 指定的文件或目录存在时返回真
-f filename : 当filename 存在并且是正规文件时返回真
-g pathname : 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真
-h filename : 当filename 存在并且是符号链接文件时返回真 (或 -L filename)
-k pathname : 当由pathname 指定的文件或目录存在并且设置了"粘滞"位时返回真
-p filename : 当filename 存在并且是命名管道时返回真
-r pathname : 当由pathname 指定的文件或目录存在并且可读时返回真
-s filename : 当filename 存在并且文件大小大于0 时返回真
-S filename : 当filename 存在并且是socket 时返回真
-t fd       : 当fd 是与终端设备相关联的文件描述符时返回真
-u pathname : 当由pathname 指定的文件或目录存在并且设置了SUID 位时返回真
-w pathname : 当由pathname 指定的文件或目录存在并且可写时返回真
-x pathname : 当由pathname 指定的文件或目录存在并且可执行时返回真
-O pathname : 当由pathname 存在并且被当前进程的有效用户id 的用户拥有时返回真(字母O 大写)
-G pathname : 当由pathname 存在并且属于当前进程的有效用户id 的用户的用户组时返回真
file1 -nt file2 : file1 比file2 新时返回真
file1 -ot file2 : file1 比file2 旧时返回真
举例: if [ -b /dev/hda ] ;then echo "yes" ;else echo "no";fi // 将打印 yes
test -c /dev/hda ; echo $? // 将打印 1 表示test 命令的返回值为1,/dev/hda 不是字符设备
[ -w /etc/passwd ]; echo $? // 查看对当前用户而言,passwd 文件是否可写


测试时逻辑操作符
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
!  逻辑否,条件为假,结果为真。
举例: [ -w result.txt -a -w score.txt ] ;echo $? // 测试两个文件是否均可写
 
常见字符串测试
-z string    : 字符串string 为空串(长度为0)时返回真
-n string    : 字符串string 为非空串时返回真
str1 = str2  : 字符串str1 和字符串str2 相等时返回真
str1 != str2 : 字符串str1 和字符串str2 不相等时返回真
str1 < str2  : 按字典顺序排序,字符串str1 在字符串str2 之前
str1 > str2  : 按字典顺序排序,字符串str1 在字符串str2 之后
举例: name="zqf"; [ $name = "zqf" ];echo $? // 打印 0 表示变量name 的值和字符串"zqf"相等
 
常见数值测试
int1 -eq int2 : 如果int1 等于int2,则返回真
int1 -ne int2 : 如果int1 不等于int2,则返回真
int1 -lt int2 : 如果int1 小于int2,则返回真
int1 -le int2 : 如果int1 小于等于int2,则返回真
int1 -gt int2 : 如果int1 大于int2,则返回真
int1 -ge int2 : 如果int1 大于等于int2,则返回真
举例: x=1 ; [ $x -eq 1 ] ; echo $? // 将打印 0 表示变量x 的值等于数字1
x=a ; [ $x -eq "1" ] // shell 打印错误信息 [: a: integer expression expected