02. 4.
今天帮一个朋友update系统时,发现其中一台server居然提示:
Transaction Check Error:
file /usr/lib/perl5/5.8.8/CGI.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/lib/perl5/5.8.8/Digest.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/c2ph.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/cpan.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/dprofpp.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/perlvms.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/perlvos.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
中间省略100行,都是关于perl的
阅读全文 »
07. 21.
本文系转载:http://my.huhoo.net/archives/2008/12/rsync.html
经常copy大文件,由于服务器、路由等网络的不确定性,老是出现
remote server not responding.
于是查了下资料,发现rsync这个工具支持断点续传功能,这里介绍一下。
rsync也分服务器端和客户端,使用man查看帮助信息,我们发现rsync有六种不同的工作模式:
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DESTAccess via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DESTList remote files: rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
06. 23.
今天协助研发去处理一份文件对比的事情,就是对比file1.log和file2.log中相同重复的行。
发现很容易实现,直接:
$ for i in `cat file1.log`; do grep $i ./file2.log; done > sameline.log
结果就发现只有一条,研发的同学说至少有上万条记录,我开始找原因:
先输出测试看看格式什么的对不对:
$ for i in `cat file1.log`; do echo "AAA"$i"BBB"; done
BBBxxxxxxxxxxx05_ok
BBBxxxxxxxxxxx06_ok
BBBxxxxxxxxxxx07_ok
BBBxxxxxxxxxxx08_ok
调试一下,发现输出的两端的字符,会选择长度较大的放在最左侧(可以自己试试哈),我一直觉得和换行符有关系,实际上是文件格式的问题。
06. 23.
发现一个curl的非常不错的用法,特此分享一下。
本文转载于:http://tonychiu.blog.51cto.com/656605/573527
$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} \
http://www.WEB.com
0.081:0.272:0.779
给出对一个流行的新闻站点执行 curl 命令的情况。输出通常是 HTML 代码,通过 -o 参数发送到 /dev/null。-s 参数去掉所有状态信息。-w 参数让 curl 写出表 1 列出的计时器的状态信息:
计时器 描述
time_connect 建立到服务器的 TCP 连接所用的时间
time_starttransfer 在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
time_total 完成请求所用的时间
这 些计时器都相对于事务的起始时间,甚至要先于 Domain Name Service(DNS)查询。因此,在发出请求之后,Web 服务器处理请求并开始发回数据所用的时间是 0.272 - 0.081 = 0.191 秒。客户机从服务器下载数据所用的时间是 0.779 - 0.272 = 0.507 秒。
通过观察 curl 数据及其随时间变化的趋势,可以很好地了解站点对用户的响应性。
03. 12.
转载自《Linux运维趋势》第6期
标题:通过dd命令实现MBR备份恢复 作者:张勤
MBR(Master Boot Record,主引导记录)是计算机开机后访问硬盘时所必须要读取的首个扇区。MBR记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息,是数据信息的重要入口。如果MBR受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性的重建数据结构信息后才可能重新访问原先的数据。MBR内的信息是fdisk格式化的时候写入的。
在Linux下使用如下命令备份MBR:
[root@srv ~]# dd if=/dev/sda1 of=/root/mbr.bak bs=512 count=1
同样也可以使用dd命令恢复MBR:
root@srv ~]# dd if=/root/mbr.bak
12. 24.
纯记录:
服务端linux下vsftpd的目录在windows客户机下添加网络位置的时候发现原来U8的中文文件夹和目录都变成乱码!
convmv 可以修改字符集,遂——
find输出的东西我没找到办法自动加入反斜杠转义,那就换引号,用xargs不容易加入引号,最终使用下面的方法最为靠谱。
find ./ -type f |while read i; do convmv -f UTF-8 -t GBK --notest "${i}"; done
find ./ -type d |while read i; do convmv -f UTF-8 -t GBK --notest "${i}"; done
06. 11.
昨天在一台比较老的机器上安装freebsd 8,结果分区完毕之后,在Commit步骤地时候,提示:
“Unable to find device node for /dev/ad4s1b in /dev!
The creation of filesystems will be aborted.”
看样子是硬盘的一些问题,我手头也没可用的额外的硬盘来测试,在google查阅了大量资料,众说纷纭吧,有说的DMA模式的问题,有说因为分区的时候不应该使用“W”,搞到凌晨 2点多,最后发现了这篇:http://www.pubbs.net/201002/freebsd/3072-80-install-fails-to-create-filesystem-quotunable-to-find-devicenodequot.html
阅读全文 »
04. 14.
今天给php增加apd(Advanced PHP debugger)的扩展,发现如下错误:
/usr/local/src/apd-1.0.1/php_apd.c:967: error: 'struct _zend_compiler_globals' has no member named 'extended_info'
后google到:http://lists.freebsd.org/pipermail/freebsd-ports/2010-April/060557.html
前因后果不再阐述,见下文:
2) error: 'struct _zend_compiler_globals' has no member named
'extended_info'The member has been renamed to 'compiler_options' to hold additional
variables. So, for example, if the code looks like:CG(extended_info) = 1;
you can modify it in this way:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
编辑967行修改之:
vi /usr/local/src/apd-1.0.1/php_apd.c +967
把CG(extended_info) = 1;
修改为:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
重新make,make install,最后zend_extension = /path最好绝对路径/apd.so 搞定,好运!
04. 4.
之前由于精简系统的服务而没有开启irqbalance服务,但是irqbalance现在被证实为非常有必要的服务,他的主要功能是可以合理的调配使用各个CPU核心,特别是对于目前主流多核心的CPU,简单的说就是能够把压力均匀的分配到各个CPU核心上,对提升性能有很大的帮助,我引用一段话:
启用 irqbalance 服务,既可以提升性能,又可以降低能耗。irqbalance 用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于 Performance mode 或 Power-save mode。处于 Performance mode 时,irqbalance 会将中断尽可能均匀地分发给各个 CPU core,以充分利用 CPU 多核,提升性能。处于 Power-save mode 时,irqbalance 会将中断集中分配给第一个 CPU,以保证其它空闲 CPU 的睡眠时间,降低能耗。(详见:http://www.irqbalance.org/documentation.php)
开启irqbalance服务,具体操作如下:
shell> chkconfig --level 2345 irqbalance on
shell> service irqbalance start
如果没有此服务,请先安装依赖软件包,操作如下:
shell> yum -y install irqbalance
shell> service irqbalance start
可以使用shell>mpstat -P ALL 1 10来观察前后的实际的CPU使用运行情况。
03. 19.
转载于:http://blog.chinaunix.net/u3/93613/showart_1907687.html
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事的两个概念。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。
处理器总处于以下三种状态之一:
1、内核态,运行于进程上下文,内核代表进程运行于内核空间;
2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;
3、用户态,运行于用户空间。
用户空间的应用程序,通过系统调用,进入内核空间。这个时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存 器值、变量等。所谓的“进程上下文”,可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。
阅读全文 »
hao32