KVM/Installation

apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
evan@evan-U147:~$ sudo adduser `id -un` libvirtd
[sudo] password for evan:
用户”evan”已经属于”libvirtd”组。

virsh -c qemu:///system list

If you are working on a desktop computer you might want to install a GUI tool to manage virtual machines.

sudo apt-get install virt-manager

vim 经典配置(vim-custom)

我们会觉得linux自带的vim配置很烂,用过freebsd 后,更是让我hold不住,于是找来找去,终于找到一个配置可以让vim配置好看又好用的配置
http://code.google.com/p/vim-custom/
wget http://vim-custom.googlecode.com/files/vim-custom_0.2.56.tgz
在自己的家目录下 解压就行了
tar xvf vim-custom_0.2.56.tgz

##现在自己用的这个也不错
https://github.com/amix/vimrc

其实就是这个
https://github.com/amix/vimrc/edit/master/vimrcs/basic.vim
[root@centos ~]# cat .vimrc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Maintainer:
" Amir Salihefendic
" http://amix.dk - amix@amix.dk
"
" Version:
" 5.0 - 29/05/12 15:43:36
"
" Blog_post:
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github
"
" Awesome_version:
" Get this config, nice color schemes and lots of plugins!
"
" Install the awesome version from:
"
" https://github.com/amix/vimrc
"
" Syntax_highlighted:
" http://amix.dk/vim/vimrc.html
"
" Raw_version:
" http://amix.dk/vim/vimrc.txt
"
" Sections:
" -> General
" -> VIM user interface
" -> Colors and Fonts
" -> Files and backups
" -> Text, tab and indent related
" -> Visual mode related
" -> Moving around, tabs and buffers
" -> Status line
" -> Editing mappings
" -> vimgrep searching and cope displaying
" -> Spell checking
" -> Misc
" -> Helper functions
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Sets how many lines of history VIM has to remember
set history=700

" Enable filetype plugins
filetype plugin on
filetype indent on

" Set to auto read when a file is changed from the outside
set autoread

" With a map leader it's possible to do extra key combinations
" like w saves the current file
let mapleader = ","
let g:mapleader = ","

" Fast saving
nmap w :w!

" :W sudo saves the file
" (useful for handling the permission-denied error)
command W w !sudo tee % > /dev/null

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM user interface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Set 7 lines to the cursor - when moving vertically using j/k
set so=7

" Turn on the WiLd menu
set wildmenu

" Ignore compiled files
set wildignore=*.o,*~,*.pyc
if has("win16") || has("win32")
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store
else
set wildignore+=.git*,.hg*,.svn*
endif

"Always show current position
set ruler

" Height of the command bar
set cmdheight=2

" A buffer becomes hidden when it is abandoned
set hid

" Configure backspace so it acts as it should act
set backspace=eol,start,indent
set whichwrap+=<,>,h,l

" Ignore case when searching
set ignorecase

" When searching try to be smart about cases
set smartcase

" Highlight search results
set hlsearch

" Makes search act like search in modern browsers
set incsearch

" Don't redraw while executing macros (good performance config)
set lazyredraw

" For regular expressions turn magic on
set magic

" Show matching brackets when text indicator is over them
set showmatch
" How many tenths of a second to blink when matching brackets
set mat=2

" No annoying sound on errors
set noerrorbells
set novisualbell
set t_vb=
set tm=500

" Add a bit extra margin to the left
set foldcolumn=1

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Enable syntax highlighting
syntax enable

try
colorscheme desert
catch
endtry

set background=dark

" Set extra options when running in GUI mode
if has("gui_running")
set guioptions-=T
set guioptions-=e
set t_Co=256
set guitablabel=%M %t
endif

" Set utf8 as standard encoding and en_US as the standard language
set encoding=utf8

" Use Unix as the standard file type
set ffs=unix,dos,mac

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files, backups and undo
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Turn backup off, since most stuff is in SVN, git et.c anyway...
set nobackup
set nowb
set noswapfile

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text, tab and indent related
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Use spaces instead of tabs
set expandtab

" Be smart when using tabs ;)
set smarttab

" 1 tab == 4 spaces
set shiftwidth=4
set tabstop=4

" Linebreak on 500 characters
set lbr
set tw=500

set ai "Auto indent
set si "Smart indent
set wrap "Wrap lines

""""""""""""""""""""""""""""""
" => Visual mode related
""""""""""""""""""""""""""""""
" Visual mode pressing * or # searches for the current selection
" Super useful! From an idea by Michael Naumann
vnoremap * :call VisualSelection('f', '')
vnoremap # :call VisualSelection('b', '')

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Moving around, tabs, windows and buffers
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Treat long lines as break lines (useful when moving around in them)
map j gj
map k gk

" Map to / (search) and Ctrl- to ? (backwards search)
map /
map ?

" Disable highlight when is pressed
map :noh

" Smart way to move between windows
map j
map k
map h
map l

" Close the current buffer
map bd :Bclose

" Close all the buffers
map ba :1,1000 bd!

" Useful mappings for managing tabs
map tn :tabnew
map to :tabonly
map tc :tabclose
map tm :tabmove
map t :tabnext

" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map te :tabedit =expand("%:p:h")/

" Switch CWD to the directory of the open buffer
map cd :cd %:p:h:pwd

" Specify the behavior when switching between buffers
try
set switchbuf=useopen,usetab,newtab
set stal=2
catch
endtry

" Return to last edit position when opening files (You want this!)
autocmd BufReadPost *
if line("'"") > 0 && line("'"") <= line("$") | exe "normal! g`"" | endif " Remember info about open buffers on close set viminfo^=% """""""""""""""""""""""""""""" " => Status line
""""""""""""""""""""""""""""""
" Always show the status line
set laststatus=2

" Format the status line
set statusline= %{HasPaste()}%F%m%r%h %w CWD: %r%{getcwd()}%h Line: %l

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Editing mappings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Remap VIM 0 to first non-blank character
map 0 ^

" Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
nmap mz:m+`z
nmap mz:m-2`z
vmap :m'>+`mzgv`yo`z
vmap :m'<-2`>my`
nmap
vmap
vmap
endif

" Delete trailing white space on save, useful for Python and CoffeeScript ;)
func! DeleteTrailingWS()
exe "normal mz"
%s/s+$//ge
exe "normal `z"
endfunc
autocmd BufWrite *.py :call DeleteTrailingWS()
autocmd BufWrite *.coffee :call DeleteTrailingWS()

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => vimgrep searching and cope displaying
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" When you press gv you vimgrep after the selected text
vnoremap gv :call VisualSelection('gv', '')

" Open vimgrep and put the cursor in the right position
map g :vimgrep // **/*.

" Vimgreps in the current file
map :vimgrep // %

" When you press r you can search and replace the selected text
vnoremap r :call VisualSelection('replace', '')

" Do :help cope if you are unsure what cope is. It's super useful!
"
" When you search with vimgrep, display your results in cope by doing:
" cc
"
" To go to the next search result do:
" n
"
" To go to the previous search results do:
" p
"
map cc :botright cope
map co ggVGy:tabnew:set syntax=qfpgg
map n :cn
map p :cp

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Spell checking
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Pressing ,ss will toggle and untoggle spell checking
map ss :setlocal spell!

" Shortcuts using
map sn ]s
map sp [s
map sa zg
map s? z=

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Misc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Remove the Windows ^M - when the encodings gets messed up
noremap m mmHmt:%s///ge'tzt'm

" Quickly open a buffer for scripbble
map q :e ~/buffer

" Toggle paste mode on and off
map pp :setlocal paste!

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Helper functions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! CmdLine(str)
exe "menu Foo.Bar :" . a:str
emenu Foo.Bar
unmenu Foo
endfunction

function! VisualSelection(direction, extra_filter) range
let l:saved_reg = @"
execute "normal! vgvy"

let l:pattern = escape(@", '\/.*$^~[]')
let l:pattern = substitute(l:pattern, "n$", "", "")

if a:direction == 'b'
execute "normal ?" . l:pattern . "^M"
elseif a:direction == 'gv'
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.' . a:extra_filter)
elseif a:direction == 'replace'
call CmdLine("%s" . '/'. l:pattern . '/')
elseif a:direction == 'f'
execute "normal /" . l:pattern . "^M"
endif

let @/ = l:pattern
let @" = l:saved_reg
endfunction

" Returns true if paste mode is enabled
function! HasPaste()
if &paste
return 'PASTE MODE '
en
return ''
endfunction

" Don't close window, when deleting a buffer
command! Bclose call BufcloseCloseIt()
function! BufcloseCloseIt()
let l:currentBufNum = bufnr("%")
let l:alternateBufNum = bufnr("#")

if buflisted(l:alternateBufNum)
buffer #
else
bnext
endif

if bufnr("%") == l:currentBufNum
new
endif

if buflisted(l:currentBufNum)
execute("bdelete! ".l:currentBufNum)
endif
endfunction

最最简单的expect 例子

自己有台虚拟在测试东西 ,以前用key登录好好的,今天发现竟然key无论如何配置还是要输入输入,气杀哥了, 后来,不小心想到有 expect 可以用 哈哈 搞怪了吧
1.自动登录
#!/usr/bin/expect -f
#当密码是2240时的自动登录
set timeout 30
spawn ssh -l root 192.168.21.210
expect "password:"
send "2240r"
#expect eof
interact

下面是讲解,对刚刚用expect 的人来说非常好呢
1. [#!/usr/bin/expect]
  这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。
  注意:这一行需要在脚本的第一行。
  2. [set timeout 30]
  基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒
  3. [spawn ssh -l username 192.168.21.210]
  spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
  它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
  4. [expect “password:”]
  这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
  5. [send “2240r”]
  这里就是执行交互动作,与手工输入密码的动作等效。 写上你的密码 例如我的 2240
  温馨提示: 命令字符串结尾别忘记加上“r”,如果出现异常等待的状态可以核查一下。
  6. [interact]
  执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。

2.su – 并ls #另一个例子

#!/usr/bin/expect -f
spawn su -
expect "Password:"
#expect ":"
send "2240r"
expect "#"
send "lsr"
interact

####################这里也是一个例子
使用expect命令
#! /usr/bin/expect
set timeout 30
spawn sudo apt-get update
expect “password for xxx:”
send “password\r”
interact

1. [#! /usr/bin/expect]
  这个跟bash shell 开头一样,是告诉系统使用那个解释器来解释脚本
  注意:这一行需要在脚本的第一行。
2. [set timeout 30]
  设置超时时间为30秒
3. [spawn sudo apt-get update]
  spawn是expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。
  它主要的功能是给后面的”sudo apt-get update”运行进程加个壳,用来传递交互指令。
4. [expect “password for xxx:”]
  这里的expect也是expect的一个内部命令。
个命令的意思是判断上次输出结果里是否包含“password for xxx:”的字符串,如果有则执行下一步,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
在ubuntu下输入sudo命令,shell会提示
“[sudo]password for xxx”
这里的xxx就是你的登录名
5. [send “password\r” ]
  这里就是执行交互动作,与手工输入密码的动作等效。
  温馨提示: 命令字符串结尾加上“\r”,如果出现异常等待的状态可以核查一下。
6. [interact]
  执行完成后保持交互状态,把控制权从expect交会给shell,shell就可以执行sudo apt-get update。
没有这句的话,即使密码已经成功输入,也不会执行sudo命令,因为控制权还是expect手里,而expect是不能解释apt-get update 命令的。

expect学习笔记及实例详解

不同操作系统中刷新DNS缓存的方法

第一 这是最常用的os
如果是Microsoft Windows (Win XP, Win ME, Win 2000, Win 98)系统:
1. 开始——>运行——>输入 cmd 并回车
2. 在打开的命令行窗口,输入 ipconfig /flushdns 并回车

如果是Microsoft Windows Vista 或 Windows 7 系统:
1. 单击屏幕左下角的Microsoft Windows Vista或Windows 7 的开始标志
2. 单击 所有程序
3. 单击 附件
4. 右键单击命令提示符
5. 选择 以管理员身份运行
6. 在打开的命令行窗口,输入
ipconfig /flushdns 并回车

第二
如果是Linux系统,刷新 DNS 缓存需要重起 nscd daemon :
1. 要重起 nscd daemon,在命令行窗口(terminal)输入
/etc/rc.d/init.d/nscd restart
2. 命令执行完毕,你的DNS缓存就被刷新了。
如果是比较新的Linux版本,你可能需要使用下面的命令:
/etc/init.d/nscd restart
有的会提示需要管理员权限,则需要在命令前加 su 或 sudo
su /etc/init.d/nscd restartor sudo /etc/init.d/nscd restart
在linux系统中,可能会提示无该命令或者无该目录,其实是没有安装 nscd ,debian 系列可通过以下命令安装,
apt-get install nscd
如须管理员权限,根据上面修改。如果成功,会有如下提示
* Restarting Name Service Cache Daemon nscd [ OK ]

如果是Mac OS X苹果系统:
1. 在命令行窗口(terminal)输入
lookupd -flushcache
$ lookupd -flushcache

较新的苹果Mac OS X系统应该使用下面的命令:
type dscacheutil -flushcache

另一种是更改DNS服务器,因为不管你怎么刷新DNS,如果你的ISP的DNS信息没有刷新,你刷新了的DNS信息还是和原来的一样,这样我们就需要通过修改DNS服务器,以获得更新的DNS信息,因为修改域名信息后,各地的DNS服务器信息刷新速度不一值。
可以采用谷哥的DNS服务器,地址为8.8.4.4与8.8.8.8

参考,有所改动
http://ccie119.blog.51cto.com/663207/798382

top的一些好玩的方法

平时大家用top都用得很多对吧,但是是不是 top 一下就回车呢 哈哈 ,其实top有一些好玩的方法

top -b -n 1

这一模式的真正优势在于你可以很容易的与 at 或 cron 命令结合。它们的结合,使得 Top 可以在特定时间对资源使用状态进行快照。例如,使用 at ,我们可以设定 top 在一分钟之后运行。

cat ./test.at
TERM=linux top -b -n 1 >/tmp/top-report.txt

at -f ./test.at now+1minutes
细心的读者可能会问“在创建新任务时,为什么我需要在调用 Top 之前设置环境变量 TERM?”。答案是,Top 运行时需要此变量,但“at”在定时调用时并不会保留它。同上面那样简单的设置可以确保 Top 正常运行。

如何监控制定进程?
top -p PID

参考
http://os.51cto.com/art/201304/389027.htm

at

有个机器要半夜关机,那就 at吧 哈哈
[root@centos ~]# cat stop.sh
#!/bin/bash
/etc/init.d/crond stop ;/etc/init.d/mysqld stop && /bin/sleep 20
sync ; sync ; /usr/bin/poweroff

[root@centos ~]# at -f stop.sh 01:16 04/20/2013

查看atq

at [-mldv] TIME

at -l 相当于 atq
at -d 相当于 atrm

at now +5 minutes # 等方式可以进入 at shell 环境

系统比较闲时执行的 也就是 batch 喽

用法 和 at 是一样的 也可以用 atq 查看
atrm:删除at命令中待执行的命令队列

作用:atrm命令可以删除at命令中待执行的命令队列。

用法:atrm [-V]作业号

主要选项如下。

-V:输出版本号。

应用实例如下。

删除at命令中待执行的3号作业:
#atrm 3

centos老的系列iso下载_tag

centos 官方的 mirros 对于以后的版本 例如现在的5系统,只有了最新的5.9 但之前的5.8 5.7却是不好找的,但现在中这几个不好找的又用得多,昨天又有个老友找上来问了,我以前老是去http://iso.linuxquestions.org/ 昨天一打开却发现下载不了 杯具了 刚才还与老友说 一定能找到的 ,今天终于向一系统组的同事问到一好的下载地方,还是官方的呢

http://vault.centos.org/

5.5 http://vault.centos.org/5.5/isos/x86_64/

我还发现下面这两个也可以下载的 哈哈
http://download.filesystems.org/linux/centos/
http://mirror.teklinks.com/centos/5.5/isos/x86_64/

lrzsz

很多用win的 朋友都喜欢用 sz rz ,你看,今天又有个老友来问了“怎么我的 sz 后是没反应的”
呵呵 没安装呗 ,在些mark一下 给相关的朋友可以自己理解一下
lrzsz is a portable and fast implementation of the X/Y/Zmodem protocols.

安装方法不外乎 就两种
1,源码 当然是平时的 ./configure make && make instal 三步曲喽
再加 听说给 /usr/local/bin/lrz /usr/local/bin/lsz 都ln -s 一下会更方法

2,二进制 这个应该 更多人用了
其中是 rhel系统的 yum

yum install lrzsz # 应该人最多吧

还有 debian 系统的
apt-get install lrzsz #人也有些的啦 哈哈

http://blog.csdn.net/ypist/article/details/6610636

http://geeglo.blog.51cto.com/3105683/567628

eAccelerator 1.0-dev can not be loaded twice in Unknown on line 0

现象:
更新php 后
/etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm [15-Apr-2013 10:19:50] NOTICE: PHP message: PHP Fatal error: [eAccelerator] eAccelerator 1.0-dev can not be loaded twice in Unknown on line 0
failed
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

搞N久,GOOGLE 了N多教程,最后自己才发现 (还是依靠自己给力些啊)
extension = “imagick.so”
为知为什么 ,竟然写了下面这个行,难道是安装imagick 而上当么
;extension = “eaccelerator.so” #果断把这个这样注释就 搞定了

这两个参考写得不错
http://xfeng.me/upgrade-php-and-eaccelerator/
http://bbs.vpser.net/archiver/tid-2483.html

修改PHP时区的几种方法

有时 ,我们OS设置好了时区,但是安装程序时还是会出问题,ecshop就是一个例子了,它还要求php.ini 里面一定要设置时区
所以当你安装 ecshop时 老是报错与时区有关的,你就直接用第一种方法

第一种方法 修改PHP.ini这个文件
找到date.timezone这行,去掉前面的分号,改成:
date.timezone = Asia/Shanghai

第二种
修改PHP代码
也是下面的两条语句只要其中的一句即可
date_default_timezone_set('Asia/Shanghai');
ini_set('date.timezone','Asia/Shanghai');

例如:

from http://www.ezloo.com/2009/08/php_timezone.html

http://www.cnblogs.com/auto6s/articles/PHPshiqushezhi.html