Netbackup 7.5常用命令

查看后台进程
/usr/openv/netbackup/bin/bpps -x

起停
/usr/openv/netbackup/bin/goodies/netbackup stop
/usr/openv/netbackup/bin/goodies/netbackup start
/usr/openv/netbackup/bin/bp.kill_all #强制关闭

创建Oracle链接(备份Oracle必备)
/usr/openv/netbackup/bin/oracle_link

查看带库配置、删除配置并重新配置
/usr/openv/volmgr/bin/tpconfig
/usr/openv/volmgr/bin/tpautoconf -a
/usr/openv/volmgr/bin/tpconfig -delete

类似lsdev。确认NBU能识别的设备信息。
/usr/openv/volmgr/bin/scan

显示本机中,已配置的NBU设备信息
/usr/openv/volmgr/bin/vmoprcmd -d

显示emm库中media server的相关信息
/usr/openv/netbackup/bin/admincmd/nbemmcmd -listhosts -verbose

查看license
/usr/openv/netbackup/bin/admincmd/bpminlicense
/usr/openv/netbackup/bin/admincmd/get_license_key

添加license
/usr/openv/netbackup/bin/admincmd/bpminlicense -add_keys 0000-0000-0000-0000-0000-0000-0000-0000-0000

Posted in Database, Linux, Oracle.

在AIX 6.1上安装Netbackup 7.5 Media Server

1. 首先需要三个包

NetBackup_7.5_AIX64.tar 2,327,480,320 Byte 安装原文件
NB_7.5.0.4.aix.tar 818,285,056 Byte 补丁包1
NB_CLT_7.5.0.4.tar 3,899,753.472 Byte 补丁包2

2. nbu安装需要7G左右空间,

首先要建立一个nbu的安装目录
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/fslv04 10.00 3.14 69% 6957 1% /nbu
Continue reading

Posted in Database, Ops, Oracle.

Linux下常见代理设置

1. 系统级
export http_proxy=username:password@my_proxy_hostname:8080

2. yum
vim /etc/yum.conf
proxy=http://my_proxy_hostname:8080
proxy_username=username
proxy_password=passwd

3. git(http://stackoverflow.com/questions/783811/getting-git-to-work-with-a-proxy-server)
git config –global http.proxy http://my_proxy_hostname:8008
or
git config –global http.proxy http://username:passwd@my_proxy_hostname:8080
此时配置会写入:
$ vim $HOME/.gitconfig
[http]
proxy = http://my_proxy_hostname:8080

unset the proxy:
git config –global –unset http.proxy
or
git config –global http.proxy “”

4. svn(http://hittyt.iteye.com/blog/889181)
vim $HOME/.subversion/servers
[global]
http-proxy-exceptions = *.exception.com, www.internal-site.org
http-proxy-host = my_proxy_hostname
http-proxy-port = 8080
# http-proxy-username = username
# http-proxy-password = password

5. maven
在$MAVEN_HOME/conf/settings.xml中可以找到,取消注释设置即可。

optional
true

http proxyuser

proxypass my_proxy_hostname

8080 local.net|some.host.com

————————————————————

6. Windows下一个比较好用的代理服务器kangle
安装之后服务已经启动,浏览器打开本机80端口,输入admin/kangle可以进行设置。
停止服务:
net stop kangle
打开服务:
net start kangle

Posted in Java|Scala, Linux.

Core Python Programming Reading Note 3

1. stringIO, CStringIO
StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以将操作磁盘文件那样来操作StringIO。

我们看到了StringIO的行为,基本与file一致。StringIO提供了一个方法,可以方便的获取其中的数据:StringIO.getvalue()。
如果使用read方法获取其中的数据,必须通过seek先设置”文件指针”的位置。
Python标准模块中还提供了一个CStringIO模块,它的行为与StringIO基本一致,但运行效率方面比StringIO更好。
但使用cStringIO模块时,有几个注意点:
1. CStringIO.StringIO不能作为基类被继承;
2. 创建cStringIO.StringIO对象时,如果初始化函数提供了初始化数据,新生成的对象是只读的。所以下面的代码是错误的:
s = cStringIO.StringIO(“JGood/n”);
s.write(“OOOKKK”);
2. module
模块是按照逻辑上组织Python代码的方法,那么文件爱你是物理层上组织代码的方法。因此一个文件可以被看作一个独立的模块。一个模块也可以被看作一个文件。
模块的文件名就是模块的名字加上扩展名.py。每个模块都定义了自己独立的名字空间。
模块的搜索路径:sys.path列表。像该列表加入自己的新模块路径即可:sys.path.append(“/home/luffy/pycode”)
三个名字空间:内建名字空间(__builtins__),局部名字空间和全局名字空间。最先加载的是内建空间,随后加载模块的全局名字空间。局部空间的内容是随时变化的(全局空间是不变的)。获得局部空间和全局空间的符号:globals()和locals()。

Python的一个有用的特性是你可以在任何需要房子数据的地方获得一个名字空间。所以给函数添加属性可以(例如添加version和__doc__属性等):

可以看出,局部变量和同一名字空间下的变量是不一样的。
—–习惯的import顺序—–
Python标准库模块
Python三方模块
应用程序自定义模块
—–from-import语句—–
把模块的名称引入到当前域.
但是from module import *的操作会污染当前作用域的名字空间,要谨慎shiyo
—–import xxx as yyy语句—–
import Tkinter as tk
—–引入时执行模块—–
加载模块会直接导致这个模块被执行。也就是被导入模块的顶层代码将直接被执行。
一个模块只会被加载一次,无论他被引入多少次。这可以组织多重导入时代码被多次执行。
—–模块名称重复—–

C:Usersluffy>python importer.py
importee abc
importee efg
importee abc
这种引入方法是和不好的,所以推荐使用import和白完整的标识符名称。
__import__()函数
__import__(module_name[, globals[, locals]])
reload()函数
重新导入模块。重新导入的模块需要的直接模块名而非字符串。
3. Package
包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境。用户解决下面问题:
为平坦的名称空间加入有层次的组织结构;
把有联系的模块结合在一起(子包);
解决有冲突的模块名称;
使用目录结构而不是一大堆混乱的文件。
初始化包需要有有一个__init__.py文件,__init__.py的文件将会被执行。否则导致一个ImportWarning信息。
sys.modules变量包含了一个由当前载入(完整&成功)到解释器的模块组成的字典。模块名作为键,它们的位置作为值。
4. lambda函数
lambda函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。常常和map,reduce,filter等函数中使用,例如阶层:
print reduce(lambda x,y:x*y, range(1, 1001))
自定义排序方法:
list_people=[People(21,’male’),People(20,’famale’),People(34,’male’),People(19,’famale’)]
list_people.sort(lambda p1,p2:cmp(p1.age,p2.age))
其他简写:
>>> arrayA = [1,2,3,4,5,6,7]
>>> arrayB = [ number for number in arrayA if number % 2 ]
>>>people_who_want_to_watch_av_film = [person1, person2, person3, person4]
然后,我们检查他们的年龄,产生能够观看的人员的列表,并打印出来:
>>> people_who_can_watch_av_film = [‘Hi, %s %s, you can watch av!’ % (person[‘surname’], person[‘givename’]) for person in people_who_want_to_watch_av_film if person[‘age’] >= 18]
lambda工厂式:

删除之中的偶数

5. class & magic method
(1). __init__ & __del__

(2). __str__和__unicode__
__str__() is a Python “magic method” that defines what should be returned if you call str() on the object. Thus, you should always return a nice, human-readable string for the object’s __str__. Although this isn’t required, it’s strongly encouraged.

__unicode__(self)同理,调用buildin函数unicode(obj)时调用。
__repr__(self)同理,输出更详细的类型信息
(3). 私有机制
python对象没有权限控制,所有的变量都是外部可以调用的。但是程序员只有一些约定俗成的方法:私有变量加双下划线。如__name。
(4). __iter__
buildin函数iter
i1 = iter(itr, ‘c’)
这个意思是说,返回itr的iterator,而且在之后的迭代之中,迭代出来’c’就立马停止。对这个itr有什么要求呢?这个itr在这里必须是callable的,即要实现__call__函数
i1 = iter(itr)
这里itr必须实现__iter__函数,这个函数的返回值必须返回一个iterator对象

# i1必须是callable的,否则无法返回callable-iterator

(5). super()
调用父类的方法:

这里我们发现python的继承不会自动调用父类的构造器/析构器,必须亲自调用它。
1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象;
2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;
3. super(B, self).func的调用并不是用于调用当前类的父类的func函数;
4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数只调用一次(如果每个类都使用super);
5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一个父类函数被调用多次。
(6). 函数的名称,doc_string
func_doc The function’s documentation string, or None if unavailable Writable
__doc__ Another way of spelling func_doc Writable
func_name The function’s name Writable
__name__ Another way of spelling func_name Writabl
(7). magic method
object.__lt__(self, other)
object.__le__(self, other)
object.__eq__(self, other)
object.__ne__(self, other)
object.__gt__(self, other)
object.__ge__(self, other)
object.__cmp__(self, other) #Called by comparison operations if rich comparison (see above) is not defined. Should return a negative integer if self other
object.__hash__(self) #Called by built-in function hash()
If a class does not define a __cmp__() or __eq__() method it should not define a __hash__() operation either;
if it defines__cmp__() or __eq__() but not __hash__(), its instances will not be usable in hashed collections.
If a class defines mutable objects and implements a __cmp__() or __eq__() method, it should not implement __hash__(),
since hashable collection implementations require that a object’s hash value is immutable
(if the object’s hash value changes, it will be in the wrong hash bucket).

Posted in Python|R.

Core Python Programming Reading Note 2

1. zip, enumerate
enumerate(list) 参数为可遍历的变量,为字符串或列表,返回(index,元素)的组合。
例1 找到某一个字符串中1出现的位置:

例2:

Continue reading

Posted in Python|R.

Core Python Programming Reading Note 1

1. build-in functions
int(obj)
str(obj)
len(obj)
type(obj)
help(obj) 获得对象说明
dir(obj) 显示对象属性/方法列表

操作和man帮助类似,space翻页,q退出。
2. id, type, isinstance
每一个对象有一个id值,使用id()函数得到的。对象还可以使用type()来获得类型信息。

关于类和对象的类型:

判断对象是不是某个类的:isinstance函数:

当一个对象的引用计数为0时,将会被gc自动收集。
3. eval,exec,compile
eval(str [,globals [,locals ]])
函数将字符串str当成有效Python表达式来求值,并返回计算结果。
同样地, exec语句将字符串str当成有效Python代码来执行..exec(str) 这种形式也被接受,但是它没有返回值。
最后,execfile(filename [,globals [,locals ]])
函数可以用来执行一个文件,看下面的例子:

默认的,eval(),exec,execfile()所运行的代码都位于当前的名字空间中. eval(), exec,和 execfile()函数也可以接受一个或两个可选字典参数作为代码执行的全局名字空间和局部名字空间. 例如:

# 将上边的字典作为全局和局部名称空间

如果你省略了一个或者两个名称空间参数,那么当前的全局和局部名称空间就被使用。
注意例子中exec语句的用法和eval(), execfile()是不一样的. exec是一个语句(就象print或while), 而eval()和execfile()则是内建函数.
当一个字符串被exec,eval(),或execfile()执行时,解释器会先将它们编译为字节代码,然后再执行.这个过程比较耗时,所以如果需要对某段代码执行很多次时,最好还是对该代码先进行预编译,这样就不需要每次都编译一遍代码,可以有效提高程序的执行效率。
compile(str ,filename ,kind )函数将一个字符串编译为字节代码, str是将要被编译的字符串, filename是定义该字符串变量的文件,kind参数指定了代码被编译的类型– ‘single’指单个语句, ‘exec’指多个语句, ‘eval’指一个表达式. cmpile()函数返回一个代码对象,该对象当然也可以被传递给eval()函数和exec语句来执行,例如:

4. is(is not) & ==(!=)
is 是变量是否指向同一对象,即id()的相同。==是对象的内容是否相等(通过对象内建函数__cmp__来定义)。

需要注意的是,数值常量和字符串常量会被哈希缓冲。所以指向相同字符串的变量,其id也会相同。
几种python中没有的机制:
a). 不分float, double,只有float
b). 没有指针
c). 没有char/byte类型
d). 没有short类型,但是有int和long。其类型自动判断。

★5. map, reduce, filter, apply
使用C语言编写并作了优化,代替循环来提升性能。
map(fun , list) #将list的每个元素作用于一元函数fun,并且返回所有fun值的列表

apply(func [, args [, kwargs ]]) #间接执行一个函数func,它的参数在列表args中,或者在字典kwargs中。apply的返回值就是func的返回值。apply()的元祖参数是有序的,元素的顺序必须和func()形式参数的顺序一致。
#需要把一个图片拆分为大小相同的很多的小图片。按照以前写程序的思想就是写两重循环了,枚举开始左上角的点。

在数据分析时,集合对象的操作和map,filter,reduce等函数尤其重要。

Book 《Python核心编程 第二版》

Posted in Python|R.

Linux网络配置点滴

1.在网络接口配置文件中(ifcfg-ethN),最多可以配置三个DNS选项(DNS1, DNS2, DNS3)
2.ifconfig – configure a network interface
(1). 显示所有网卡的配置信息
ifconfig
#or
ifconfig -a
(if a single -a argument is given, it displays the status of all interfaces)
(2). 显示eth0的配置信息
ifconfig eth0
(3). 配置网卡的地址
ifconfig eth0 192.168.1.23 netmask 255.255.255.0 up
(4). 打开/关闭网卡
ifconfig eth0 down && ifconfig eth0 up

ifdown eth0 && ifup eth0
(5). 设置MTU
ipconfig eth0 mtu 2000

echo “1499” > /sys/class/net/echo/mtu
(6). 为网卡添加另一个IP地址
ifconfig eth0:2 192.168.3.1 netmask 255.255.255.0 up
Continue reading

Posted in Linux.

DHCPD服务配置

DHCP(Dynamic Host Configuration protocol, DHCP) 是一个局域网的网络协议,使用UDP进行数据传输(服务器UDP端口67,客户端UDP端口 68)。主要功能是将内部网络或ISP的IP资源分配给用户。DHCP通常配置在网关路由器或者三成交换机上,也可以配置在服务器上。
DHCP运行分为四个步骤:
(1). 请求IP租约(discover)
客户端采用广播的形式去寻找DHCP服务器。如果这个网段内有多个DHCP服务器,那么最先响应的DHCP服务器将先进行DHCP服务。
(2). 提供IP租约(offer)
DHCP在地址池中挑选一个未被使
用的IP地址给客户端使用。
(3). 选择IP租约(request)
当客户端收到一个IP租约提供时,它必须广播来所有DHCP服务器它已经接受了一个租约offer。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回该的租约。并将IP地址重新放回到可用地址池中。
(4). 确认IP租约(ack)
当DHCP服务器收到来自客户端的DHCPREQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息(如DNS服务器等)
Continue reading

Posted in Linux, Ops, Tools.

配置iSCSI target和initiator

1. 概念

iSCSI是在IP网络上传输的SCSI协议的存储技术,iSCSI的存储叫做 IP-SAN。
一个重要的概念是iqn(iSCSI Qualified Name)。iqn 格式:iqn..:extra-name,例如iqn.2012-06.com.example:disk0;
iSCSI target端是iscsi存储服务器.target端一般为盘阵主机或者共享磁盘的主机,默认提供服务的端口是3260;
iSCSI initiator端是挂接 iscsi 的节点
Continue reading

Posted in Linux.

逻辑卷的扩展和收缩

LVM(logical volume)的一个重要的功能就是可以随意扩展和收缩分区的大小。下面简单模拟这两种情形。
Continue reading

Posted in Linux.