Press "Enter" to skip to content

Month: March 2013

CentOS5安装xen

一,判断CPU对虚拟化的支持

1,半虚拟化 (Para-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce cx8 ……

列表中出现pae表示支持半虚拟化,可以安装xen

2,全虚拟化 (Fully-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce……

对于Intel的CPU,列表中出现vmx表示支持全虚拟化,可以安装xen
对于AMD的CPU,列表中出现svm表示支持全虚拟化,可以安装xen

需要说明的一点儿是,只有fully virtualized的才可以从iso文件、CD-ROM等为虚拟机安装操作系统,且可以安装windows系统,para virtualized只能从FTP/HTTP服务器安装,且不能安装windows系统。

1 Comment

使用python备份VPS上的网站文件及数据库 1.0

学python有一段时间了,花了两天时间写了个备份的脚本。可以将Linux vps上的网站目录及数据库全部导出一份到远程FTP服务器上,再配置crontab实现每天的自动备份。功能上跟imcat的这个备份脚本是一样的,但程序比imcat的健壮多了,加入了N多自动判断,不会导致程序轻易出错。

代码仅适于python2,不适用于python3。因为调用了压缩模块,还需要yum install zlib zlib-devel

最后,需要强调的,此段代码是个python菜鸟写出来的,还望路过的大侠指点一二,切莫贱笑!

Leave a Comment

几个python入门脚本

#!/usr/bin/python
#Filename: 1.py
i=5
print i

i=i+1
print i

s='welcome to my home!\nI will intorduce my family to you!'
print s,i

length=6
width=5
area=width * length
print 'The Area is', area
print 'The perimeter is', 2 * (length + width)

for a in range(2, 9):
    print a
else:
    print 'The loop is over!'
1 Comment

python的FTP模块

python本身自带一个FTP模块,可以轻松实现FTP的上传,下载等操作。下面来看看用法:

from ftplib import FTP
import socket    #用来设置超时时间
FTP.connect(服务器地址,端口,超时时间)      # 连接服务器
FTP.login(用户名,用户密码)        # 用户登录
FTP.pwd(路径)                    # 读取操作路径
FTP.cwd(路径)                    # 设置要操作FTP文件夹路径
FTP.nlst()			# 获得目录下文件
FTP.retrbinary(文件名, 回调函数) 	# 下载FTP上的文件
FTP.delete(文件名)            	# 删除FTP文件
FTP.storbinary(文件名, 文件对象 [,块大小]) 	# 上传FTP文件
FTP.quit()                  	# 退出FTP服务器
FTP.set_pasv(boolean)           # 是否设置为被动模式

FTP.rename(old, new)            # 重命名
FTP.delete(path)                # 删除文件
FTP.mkd(directory)              # 创建目录
Leave a Comment

python读写文件

首先看一个例子:

f = open('thefile.txt','w')    #以写方式打开,
try:
    f.write('wokao')
finally:
    f.close()

文件的打开方式:
f = open(‘文件’,’mode’)
‘r’:只读(缺省。如果文件不存在,则抛出错误)
‘w’:只写(如果文件不存在,则自动创建文件),此时无法调用f.read()方法,且当调用f.write()时,将清空文件原有内容
‘a’:附加到文件末尾
‘r+’:读写
如果需要以二进制方式打开文件,需要在mode后面加上字符”b”,比如”rb”,”wb”等

Leave a Comment

修改shell终端提示信息

Shell终端默认只显示用户名、主机名、工作目录,有时候我们需要对Shell终端显示的信息简单调整一下,以便使工作更有效率。比如我们可以给Shell终端加上时间,以便我们计算脚本执行的时间,如下所示:

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息
[root@localhost src]$export PS1="[\u@\h \W \t]$"    #给Shell终端加上时间显示
[root@localhost src 16:19:18]$    #时间已经显示出来了

Shell终端的显示,使用到以下两个环境变量
PS1:就是用户平时的提示符。
PS2:第一行没输完,等待第二行输入的提示符。

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息

想重启后继续生效,只需要修改配置文件即可。
对于当前用户只需修改~/.bashrc,对于系统所有用户我们修改/etc/bashrc。

Leave a Comment

Linux加载内核模块

Linux加载内核模块的过程,记录一下,主要命令有modprobe、insmod及depmod等,命令由module-init-tools的软件包提供,请先确认系统安装了此软件包。本文方法已在CentOS 5 x86_64和CentOS6 x86_64系统上验证通过。

一,查看内核已加载的模块

[root@os ~]# lsmod

该命令通过读取/proc/modules文件中的内容列出已加载的模块。
系统中的所有模块位于/lib/modules/$(uname -r)/kernel/下的各种目录中。

二,手动加载模块
手动加载模块的方法有两个,下面分别介绍。

2.1 执行insmod命令加载模块

[root@os ~]# insmod mycdev.ko

2.2 执行modprobe命令加载模块

将模块拷入到相应目录下
[root@os ~]# cp mycdev.ko /lib/modules/$(uname -r)/kernel/drivers/char/

然后把模块的绝对地址写入到modules.dep文件中
手动写入(注意写入的行末尾有一个冒号)
[root@os ~]# echo /lib/modules/$(uname -r)/kernel/drivers/char/mycdev.ko: >> /lib/modules/$(uname -r)/modules.dep
或者执行如下命令自动写入
[root@os ~]# depmod -a

然后,就可以加载模块了
[root@os ~]# modprobe mycdev        #加载模块
[root@os ~]# lsmod | grep mycdev    #检验加载是否成功
mycdev                 35840  0

三,卸载模块

[root@os ~]# rmmod sysdog

四,开机自动加载模块
鸟哥的linux私房菜一书中,介绍的Linux系统开机流程:
(1) 载入BIOS的硬件信息,并取得第一个开机装置的代号
(2) 读取第一个开机装置的MBR的boot Loader (grub)的开机信息
(3) 载入OS Kernel信息,解压Kernel,尝试驱动硬件
(4) Kernel执行init程序并获得run-lebel信息(如3或5)
(5) init执行/etc/rc.d/rc.sysinit
(6) 启动内核外挂模块(/etc/modprobe.conf)
(7) init执行run-level的各种Scripts,启动服务
(8) init执行/etc/rc.d/rc.local
(9) 执行/bin/login,等待用户Login
(10)Login后进入Shell

打开/etc/rc.sysinit(是一个软链接,指向/etc/rc.d/rc.sysinit),会发现有如下内容

……
# Load other user-defined modules
for file in /etc/sysconfig/modules/*.modules ; do
  [ -x $file ] && $file
done

# Load modules (for backward compatibility with VARs)
if [ -f /etc/rc.modules ]; then
        /etc/rc.modules
fi
……

由此可见,如果想让一个模块开机自动加载,只要把模块加到这两个文件之中即可。

[root@os ~]# echo 'modprobe mycdev' > /etc/sysconfig/modules/mycdev.modules
[root@os ~]# chmod +x /etc/sysconfig/modules/mycdev.modules #不能少,否则会加载失败

然后重启,执行lsmod命令,会发现模块已加载。

Leave a Comment