dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes
一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock
使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。 Unlike the
Unix dd, this works when an odd number of
bytes are read. If the input file contains
an odd number of bytes, the last byte is
simply copied (since there is nothing to
swap it with).
noerror
出错时不停止。
notrunc
不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
由于 dd 命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。再如把第一个硬盘的前 512 个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1
生成Xen使用的镜像硬盘文件
A:
dd if=/dev/zero of=/disk2/xen/centos5.office.img bs=1M count=3072 oflag=direct
B:
dd if=/dev/zero of=centos5.img bs=2k seek=4096k count=1
转自:http://chaoyueziwo21.blogbus.com/logs/17413029.html
MySQL Proxy Download: http://dev.mysql.com/downloads/mysql-proxy/
MySQL Proxy Wiki: http://forge.mysql.com/wiki/MySQL_Proxy
1、lua 安装
Get lua from: http://www.lua.org/
2、GLib 安装
Get GLib from: http://www.gtk.org/
Note: newer version need newer pkg-conifg 0.xx
Get pkg-config from: http://pkg-config.freedesktop.org/releases/
3、libevent 安装
Get libevent from: http://monkey.org/~provos/libevent/
4、check 安装
Get check lib from: http://check.sourceforge.net/
5、MySQL Proxy 安装
编译前先要设置一下环境变量(export),类似于 Windows 下的 PATH
测试是否安装成功,看下边这条语句是否可以正常输出 MySQL Proxy 的帮助
一、使用缓存
要开启Smarty的缓存,只需将caching设为true,并指定cache_dir即可.
使用cache_lefetime指定缓存生存时间,单位为秒,要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如:
二、清除缓存
三、使用自定义缓存方式
设置cache_handler_func使用自定义的函数处理缓存,如:
该函数的一般是根椐$action来判断缓存当前操作:
一般使用md5($tpl_file.$cache_id.$compile_id)作为唯一的cache_id
如果需要,可使用gzcompress和gzuncompress来压缩和解压
四、局部关闭缓存
要在某些区域使缓存失效(只对需要的缓存),有几种方法:
inser:
定义一个inser标签要使用的处理函数,函数名格式为:insert_xx(array $params, object &$smarty)其中的xx是insert的name,也就是说,如果你定义的函数为insert_abc,则模板中使用方法为{insert name=’abc’}
参数通过$params传入
也可以做成insert插件,文件名命名为:insert.xx.php,函数命名为:smarty_insert_aa($params,&$smarty),xx定义同上register_block:
模板写法:{name}内容{/name}
写成block插件:
1)定义一件插件函数:block.cacheless.php,放在smarty的plugins目录
block.cacheless.php的内容如下:
2) 编写程序及模板
示例程序:testCacheLess.php
所用的模板:cache.tpl
已经缓存的:{$smarty.now}
{cacheless}
没有缓存的:{$smarty.now}
{/cacheless}
MySQL的性能优化文章有很多,这里介绍个通过优化Swap & Memory来提高性能的方法。
The VM for Linux prefers system cache over application memory. What does this mean? The best way I can explain is by example.
Imagine you have 32 GB of RAM
MySQL is set to take 20 GB of RAM for a process based buffer and up to 6M for the various thread buffers.
Over a period of time the box swaps. The only thing that is running is mysql and its memory size is around 21GB for resident memory. Why does swap grow when there is plenty of memory? The reason is when a memory alloc is needed (thread based buffer is tickled) the VM will choose to use swap over allocating from the system cache, when there is not enough free memory.
DO NOT TURN OFF SWAP to prevent this. Your box will crawl, kswapd will chew up a lot of the processor, Linux needs swap enabled, lets just hope its not used.
So how do you stop Nagios pages because of swap usage? Well if you have a few choices.
reboot the box
or
stop mysql && swapoff -a;swapon -a;
or just
swapoff -a;swapon -a;
(注意!如果你在MySQL正在使用Swap时执行,会把MySQL搞死,所以执行前一定要反复确认Swap没有被使用。)
Doing the latter command is rather scary and fun at the same time. Because you can either crash mysql or not. I just did the swap* commands live, I was very certain nothing was using swap and it worked. YAY no more pages and I didn’t have to shut down the service!
参考文章:
http://mysqldba.blogspot.com/2008/05/linux-64-bit-mysql-swap-and-memory.html
前一阵子网站新上了相册功能,可最近总发现有一些用户上传的图片文件链接失效,代码检查了很多次,测试也做的比较充分了,但还是会出现上传失败的问题,很是郁闷,今天终于找到了解决办法。
从备份源中找到了用户上传失败的JPG图片,进行上传测试,上传完成后页面提示:
Warning: imagecreatefromjpeg(): ‘/tmp/lalala’ is not a valid JPEG file in /path/upload.php on line 1
出现这个Warning是由于GD函数库检测发现是非标准JPEG图片格式导致。
解决方法,如果PHP版本 > 5.1.3,可以在php.ini中增加:
gd.jpeg_ignore_warning = 1
在 MIME 类型中有 image/jpeg 与 image/pjpeg 两种,GD库只认识前者的传统格式,后者是 progressive JPEG 的缩写,啥是pjpeg昵?
这个链接中有详细的解释:
http://www.faqs.org/faqs/jpeg-faq/part1/section-11.html
另外,php.net 中也有相关问题的详细讨论,有兴趣的朋友可以进去看看:
http://bugs.php.net/bug.php?id=29878
在网上看到的与网站相关的一些定律。其实很多时候,不是我们不知道,只是我们没想到。只缘身在此山中阿。
在垃圾邮件泛滥的今天,垃圾邮件给我们的生活、工作、学习带来了极大的危害。由于SMTP 服务器之间缺乏有效的发送认证机制,即使采用了垃圾邮件识别阻拦技术效果仍旧一般,再者垃圾邮件识别阻拦技术主要是在收到信件后根据一定条件进行识别的,需要耗费大量服务器资源,如果能在信件到达服务器之前就采取一定手段,这样就能大大提高服务器效率了。
因此,目前许多邮件服务器如sina.com, 21cn.com,hotmail.com,yahoo.com.cn等等都采用了垃圾邮件识别阻拦技术+IP反向解析验证技术以更好的阻拦垃圾邮件。
我们先来了解一下什么是IP反向解析。其实作过DNS服务器的朋友一定会知道DNS服务器里有两个区域,即“正向查找区域”和“反向查找区域”,反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名,当然,要成功得到域名就必需要有该IP地址的PTR记录。
那么IP反向解析是怎么被应用到邮件服务器中来阻拦垃圾邮件的呢?我们来看看下面一个例子:
某天,阿Q到A公司拜访,他递上一张名片,名片上写着他来自“黑道杀人俱乐部”以及电话号码等信息,A公司觉得应该对阿Q的来历做个简单调查,于是打电话到阿Q名片上的电话号码所属电信局进行查实,如果电信局告诉A公司其电话号码不属于“黑道杀人俱乐部”,则A公司将拒绝阿Q的拜访,如果其电话号码的确属于“黑道杀人俱乐部”,A公司可能接受阿Q的拜访也可能进一步查实,于是就打电话到“黑道杀人俱乐部”所属注册机构查询,如果得到的答复确认该俱乐部确有此电话号码,则A公司将接受阿Q的拜访,否则仍将拒绝阿Q的拜访。
这个例子中,阿Q好比是我们的邮件服务器,A公司是对方邮件服务器,“黑道杀人俱乐部”就是我们邮件服务器与对方邮件服务器通信时所使用的HELO域名(不是邮件地址@后的域名),名片上的电话号码就是我们邮件服务器出口的公网IP地址。
A公司对阿Q进行调查的过程就相当于一个反向解析验证过程。由此看出,反向解析验证其实是对方服务器在进行的,如果我们没有做反向解析,那么对方服务器的反向解析验证就会失败,这样对方服务器就会以我们是不明发送方而拒收我们发往的邮件,这也就是我们排除其它原因后(如被对方列入黑名单、没有MX记录、使用的是动态IP地址等等)在没做反向解析时无法向 sina.com、homail.com发信的原因。
那么我们应当如何顺利做好反向解析?首先要有固定公网IP地址、可用域名(最好不要被其它服务所用),例如您有lunch-time.com的域名,您可以要求您的域名注册商为您添加一个okmail.lunch-time.com的域名并将其A记录指向您的SMTP服务器出口公网IP地址,如: 220.112.20.18,接着请与您的固定IP所属ISP联系要求为您的IP反向解析至okmail.lunch-time.com。完成后别忘了将您的SMTP服务器的HELO域名改为okmail.lunch-time.com,这样才可以达到目的。
另:
apache2已经用mod_deflate代替了mod_gzip
apache2已经包含了mod_deflate
打开模组
httpd.conf添加
如果想只压缩html,text,xml 如果下面配置:
建立的数据文件能否支持大小4G以上的文件?
Linux下的文件系统极少有这么愚蠢的限制,不过任何文件系统都是有限制的。
下面是个不完整的小列表:
NTFS(Windows):支持最大分区2TB,最大文件2TB
FAT16(Windows):支持最大分区2GB,最大文件2GB
FAT32(Windows):支持最大分区128GB,最大文件4GB
Ext2
最大文件大小: 1TB
最大文件极限: 仅受文件系统大小限制
最大分区/文件系统大小: 4TB
最大文件名长度: 255 字符
缺省最小/最大块大小: 1024/4096 字节
缺省inode分配: 每4096字节为1
在强制FS检查前的最大装载: 20(可配置)
//REDHAT9默认是ext3的文件系统
Ext3
最大文件大小: 1TB
最大文件极限: 仅受文件系统大小限制
最大分区/文件系统大小: 4TB
最大文件名长度: 255 字符
缺省最小/最大块大小: 1024/4096 字节
缺省inode分配: 每4096字节为1
在强制FS检查前的最大装载: 20(可配置)
ReiserFS
最大文件大小: 1TB
最大文件极限: 32k目录,42亿文件
最大分区/文件系统大小: 4TB
最大文件名长度: 255 字符
JFS
最小文件系统大小 16 MB
最大文件大小: 受体系结构限制
最大文件极限: 受文件系统大小限制
缺省最小/最大块大小: 1024/4096 字节
缺省inode分配: 动态