Press "Enter" to skip to content

Month: June 2014

pip, easy_install使用方式

easy_install 跟 pip 都是 Python 的套件管理程序,有了它们,在使用 Python 开发程序的时候会带來不少方便。
easy_install 和 pip 有什么不一样?据 pip 官网的说法,pip 改善了不少 easy_install 的缺点,如此说來 pip 应该是略胜一筹,不过它还不能够完全取代对方,因为目前有很多套件还是得用 easy_install 安裝。

安装使用easy_install

安装:
$ wget -q http://peak.telecommunity.com/dist/ez_setup.py
$ python ./ez_setup.py

使用:
$ easy_install PackageName     #安装套件
$ easy_install -U PackageName  #更新套件
$ easy_install -m PackageName  #卸载套件
$ easy_install --showhelp      #显示说明
Leave a Comment

Linux Shell之cut用法

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,grep、awk命令是筛选出特定的行,cut命令则是筛选出特定的列。

(1)cut命令参数
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :输入每行第n个字符(半角,注意如果有中文将乱码)。
-c :输入每行第n个字符(适用中文)。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。

(2)cut命令用法实例

Leave a Comment

FTP下载地址中特殊符号的转换

要下载FTP中的大文件,一般是转换成完整的下载地址(例如ftp://uername:password@ip:port/dirname/filename)来下载。但这样有时候会产生问题,如果password里面有特殊字符怎么办?

方法很简单,把特殊字符换成16进制的ASCII码即可。

假设现在有个FTP服务器192.168.1.1,用户名zhang3,密码是zhang!@#,我们要下载该服务器上/html/a.rar文件。

如果写成ftp://zhang3:zhang!@#@192.168.1.1:21/html/a.rar的格式,肯定会报错。

那么我们可以写成ftp://zhang3:zhang%21%40%[email protected]:21/html/a.rar,这样就可以利用wget之类的工具来下载了。

附上一些常见十六进制的ASCII编码:

ASCII字符	字符中文名	编码后的值
空格              空格             %20
!                感叹号            %21
#                 井号             %23
&                 and              %26
@                 at               %40
/                 斜杠             %2F
:                 冒号             %3A
=                等于号            %3D
?                 问号             %3F
~                波浪号            %7E

================================================
2015.06.28补充:
其实在Linux上使用wget下载FTP上的文件时,也可以使用如下命令来下载(同样允许password里有特殊字符)

wget ftp://ip/filename.zip -e login=username -e passwd='password'
Leave a Comment

Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)

硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2 服务器+ 64位版本 CentOS 5.5 + Linux 2.6.18-194.3.1.el5 上执行。

什么是中断
中文教材上对 “中断” 的定义太生硬了,简单的说就是,每个硬件设备(如:硬盘、网卡等)都需要和 CPU 有某种形式的通信以便 CPU 及时知道发生了什么事情,这样 CPU 可能就会放下手中的事情去处理应急事件,硬件设备主动打扰 CPU 的现象就可称为硬件中断,就像你正在工作的时候受到 QQ 干扰一样,一次 QQ 摇头就可以被称为中断。

中断是一种比较好的 CPU 和硬件沟通的方式,还有一种方式叫做轮询(polling),就是让 CPU 定时对硬件状态进行查询然后做相应处理,就好像你每隔5分钟去检查一下 QQ 看看有没有人找你一样,这种方式是不是很浪费你(CPU)的时间?所以中断是硬件主动的方式,比轮询(CPU 主动)更有效一些。

好了,这里又有了一个问题,每个硬件设备都中断,那么如何区分不同硬件呢?不同设备同时中断如何知道哪个中断是来自硬盘、哪个来自网卡呢?这个很容易,不是每个 QQ 号码都不相同吗?同样的,系统上的每个硬件设备都会被分配一个 IRQ 号,通过这个唯一的 IRQ 号就能区别张三和李四了。

Leave a Comment

Linux Shell之uniq用法(检查重复的行)

一,uniq干什么用的

文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点

1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。

2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过

二,uniq参数说明

[zhangy@BlackGhost ~]$ uniq --help
用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

不附加任何选项时匹配行将在首次出现处被合并。

长选项必须使用的参数对于短选项时也是必需使用的。
 -c, --count             #在每行前显示该行重复次数,重要!!!
 -d, --repeated          #只输出重复的行,重要!!!
 -D, --all-repeated      #只输出重复的行,不过有几行输出几行
 -f, --skip-fields=N     #-f 忽略的段数,-f 1 忽略第一段
 -i, --ignore-case       #不区分大小写
 -s, --skip-chars=N      #根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
 -u, --unique            #去除重复的后,全部显示出来,根mysql的distinct功能上有点像
 -z, --zero-terminated   end lines with 0 byte, not newline
 -w, --check-chars=N     #对每行第N 个字符以后的内容不作对照
 --help              #显示此帮助信息并退出
 --version              #显示版本信息并退出
2 Comments