正在加载...
分页: 60/186 第一页 上页 55 56 57 58 59 60 61 62 63 64 下页 最后页 [ 显示模式: 摘要 | 列表 ]

Siege:压力模拟/测试工具

[ 2009/12/11 17:35 | by selboo ]
下载/安装
Siege时一个开放源代码项目:http://www.joedog.org/siege/

下载:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz

安装:
%./configure ; make
#make install

siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.chedong.com.url文件
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
....

siege -c 20 -r 2 -f www.chedong.com.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.chedong.com.url 任务列表:URL列表

输出样例:

** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数

注意:由于速度很快,可能会达不到并发速度很高就已经完成。Response time显示的是测试机器和被测试服务器之间网络链接状况。Transaction rate则表示服务器端任务处理的完成速度。

辅助工具:
增量压力测试:

为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒

输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78

参考:
开源测试工具:http://www.opensourcetesting.org/performance.php

SIEGE测试于目标网站的网页动态静态没有关系,只要任务列表是动态网页即可。即使是需要认证的,也可以通过预先设置POST HEADER等方式模拟登录。
Tags:

Shell 管道及执行顺序

[ 2009/12/11 10:55 | by selboo ]
1、基本概念
  a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;
  b、常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;
  c、用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;
  d、用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;
  e、0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;
  f、在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;
  g、管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;
  h、tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;
  i、bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;
  j、( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。
  k、exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除,。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。

2、基本IO
  cmd > file 把 stdout 重定向到 file 文件中
  cmd >> file 把 stdout 重定向到 file 文件中(追加)
  cmd 1> fiel 把 stdout 重定向到 file 文件中
  cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中
  cmd 2> file 把 stderr 重定向到 file 文件中
  cmd 2>> file 把 stderr 重定向到 file 文件中(追加)
  cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中
  cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout
  cat <>file 以读写的方式打开 file
  cmd < file cmd 命令以 file 文件作为 stdin
  cmd << delimiter Here document,从 stdin 中读入,直至遇到delimiter 分界符

3、进阶IO
  >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出
  <&n 标准输入复制自文件描述符 n
  <&- 关闭标准输入(键盘)
  >&- 关闭标准输出
  n<&- 表示将 n 号输入关闭
  n>&- 表示将 n 号输出关闭
上述所有形式都可以前导一个数字,此时建立的文件描述符由这个数字指定而不是缺省的 0 或 1。如:
  ... 2>file 运行一个命令并把错误输出(文件描述符 2)定向到 file。
  ... 2>&1 运行一个命令并把它的标准输出和输出合并。(严格的说是通过复制文件描述符 1 来建立文件描述符 2 ,但效果通常是合并了两个流。)

2>&1说明:2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,通俗的说是:把stderr并到stdout。
  但使用类似 cmd 1>&3 这样的形式时,原理相同,但往往不同于 2>&1 和 1>&2 通常用来合并的作用。

注意:普通cmd命令的cmd n>&n 和exec n>&n 是有区别的。

exec 0   exec 1>outfilename # 打开文件outfilename作为stdout
  exec 2>errfilename # 打开文件 errfilename作为 stderr
  exec 0<&- # 关闭 FD0
  exec 1>&- # 关闭 FD1
  exec 5>&- # 关闭 FD5

问:
如果关闭了 FD0、FD1、FD2,其后果是什么?
恢复 FD0、FD1、FD2与 关闭FD0、FD1、FD2 有什么区别?代码分别是什么?
打开了FD3~FD9,我们用完之后,你觉得是将他们关闭还是恢复?

下面是提示(例子来源于CU):
  exec 6>&2 2>ver # FD2(本来往monitor送的) 定向到文件ver
  command >>dev/null & #丢弃FD1(stdout)
  exec 2>&6 # 恢复 FD2

4、简单举例(其中 yes.txt存在,no.txt不存在)
  a、stdout 和stderr 都通过管道送给egrep了:
  (ls yes.txt 2>&1;ls no.txt 2>&1) 2>&1|egrep \* >file
  (ls yes.txt;ls no.txt) 2>&1|egrep \* >file

###
  这个例子就是让大家:理解 命令执行顺序 和 管道“|”
  在命令执行前,先要进行重定向的处理,并将把 nested sub-shell 的stdout 接到 egrep 命令的 stdin。
  nested sub-shell ,在 ( ) 中的两个命令可以看作一个命令。其 stdout(FD1) 通过 “|” 作为 egrep 的 stdin,再加上 2>&1 时,初始 stdout 和 stderr 都往管道 “|” 送。
###

b、没有任何东西通过管道送给egrep,全部送往monitor。
  (ls yes.txt 2>&1;ls no.txt 2>&1) >&2|egrep \* >file
  虽然在()里面将 FD2转往FD1,但在()外,遇到 >&2 ,结果所有的都送到monitor。

5、中阶例子(其中 you 这个文件是存在的,no 和 wu 这两个文件不存在)
r2007兄的:http://bbs.chinaunix.net/forum/viewtopic.php?t=221848&show_type=new&sid=cf30398c911e0d2b16313c6922123f67

条件:stderr通过管道送给egrep,正确消息仍然送给monitor(不变)

exec 4>&1;(ls you no 2>&1 1>&4 4>&-;ls wu 2>&1 1>&4 4>&-)|egrep \* >file;exec 4>&-
  或者
  exec 4>&1;(ls you no;ls wu) 2>&1 1>&4 4>&-|egrep \* >file;exec 4>&-

r2007 兄在其贴已有详细说明,如果加两个条件:
  (1)要求cmd1和cmd2并行运行;
  (2)将cmd1的返回值赋给变量 ss。

则为:
  exec 3>&1;exec 4>&1
  ss=$(((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep \* >file) 4>&1)
  exec 3>&-;exec 4>&-

说明:
  exec 3>&1;4>&1
  ### 建立FD3,是用来将下面ls那条语句(子shell)中的FD1 恢复到正常FD1,即输出到monitor,你可以把FD3看作最初始的FD1的硬盘备份(即输出到monitor);
  ### 建立FD4,到时用作保存ls的返回值(echo $?),你可以将FD4看作你考试时用于存放计算“echo $?”的草稿纸;

(ls you no 2>&1 1>&3 3>&-;echo $? >&4)
  ### 大家还记得前面说的子shell和管道吧。这条命令首先会继承FD0、FD1、FD2、FD3、FD4,它位于管道前,所以在运行命令前会先把子shell自己的FD1和管道“|”相连。
  但是我们的条件是stderr通过管道送往egrep,stdout仍然输出到monitor。
  于是通过2>&1,先把 子shell的FD1 的管道“送给”FD2,于是子shell中的stderr送往管道“|”;
  再通过 1>&3,把以前的“硬盘备份”恢复给子shell的FD1,于是子shell中的FD1变成送到monitor了。
  再通过3>&- ,将3关闭;
  接着运行echo $? ,本来其输出值应该送往管道的,通过 >&4 ,将 输出 送往 “草稿纸”FD4,留以备用。

((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep \* >file)
  于是,stderr 通过管道送给 egrep ,stdout 送给monitor,但是,还有 FD4,它送到哪去了?
  $(((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep \* >file) 4>&1)
  最后的 4>&1 ,就是把FD4 重定向到 FD1。但由于其输出在 $( )中,其值就赋给变量ss了。

最后一行关闭 FD3、FD4。

6、高阶例子
  lightspeed 版主大大的:Shell 经典问题之 [ I/O 重定向] (http://bbs.chinaunix.net/forum/viewtopic.php?t=452079&show_type=new)
  [Q] 对于命令 cmd1, cmd2, cmd3, cmd4. 如何利用单向管道完成下列功能:
  1. 所有命令并行执行
  2. cmd1 和 cmd2 不需要 stdin
  3. cmd1 和 cmd2 的 stdout 定向到 cmd3 的 stdin
  4. cmd1 和 cmd2 的 stderr 定向到 cmd4 的 stdin
  5. cmd3 的 stdout 定向到文件 a, stderr 定向到屏幕
  6. cmd4 的 stdout 定向到文件 b, stderr 定向到屏幕
  7. cmd1 的返回码赋给变量 s
  8. 不能利用临时文件

解决方法:
  exec 3>&1; exec 4>&1
  my_value=$(((((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 | cmd3 >a 2>&3 ) 2>&1 | cmd4 >b ) 4>&1)
  exec 3>&-; exec 4>&-

解释:
  exec 3>&1; exec 4>&1
建立FD3 ,给cmd1恢复其FD1用和给cmd3 恢复其FD2用;
建立FD4,保存“echo $?”输出值的“草稿纸”

第一对括号到第一个管道:(cmd1 1>&3 ; echo $? >&4 )|
  cmd1本身没有stdin,其stdout原要送往第一个管道,由于1>&3的作用,其stdout被送往FD3;而 >&4 的作用实际是将 cmd1 运行后的返回码送往 FD4。cmd1的stderr默认等待下一步处理。最后,没有往管道送任何东西;

第二对括号到第二个管道:((cmd1 1>&3 ; echo $? >&4 )| cmd2) 3>&1|
  由于第一个括号中cmd1的 stdout 被送往 FD3,导致管道左端没有任何输入,cmd2 从而就没有stdin。cmd2 的stdout则为默认的;
  将第二对括号看出一个命令,其所有的stdout送往第二个管道“|”;同时由于3>&1的作用,原先cmd1的stdout在送往FD3 又与cmd2的stdout并到一起,所以cmd1 和 cmd2 的 stdout 都送往第二个管道“|”。而cmd1、cmd2的stderr仍然默认等待下一步处理;

第三对括号到第三个管道:(((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 | cmd3 >a 2>&3 ) 2>&1|
  cmd3 >a 2>&3:cmd3接收处理来自管道的stdin后,其 stdout 送给文件a,其stderr送往FD3,由于FD3继承FD1,实际上其stderr是送往monitor。如果没有“2>&3”,那么cmd3的stderr就会干扰cmd1和cmd2的错误输出,所以它是必须的;
  将第三个括号里完全看作一个命令,其stdout送往管道 “|”,由于2>&1,于是stderr也送往着管道。但由于cmd1、cmd2的stdout已经送给了cmd3处理,而cmd3的stdout输出到文件a,cmd3的stderr也送往monitor,所以实际上只有cmd1和cmd2的stderr送往管道。

cmd4 >b:cmd4接收处理来自管道的stdin后,其stdout 定向到文件 b,stderr 默认输出到monitor。

第四对括号:( (((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 | cmd3 >a 2>&3 ) 2>&1| cmd4 >b ) 4>&1
  四对括号里面所有命令的 FD1、FD2都处理完了,但是还有“echo $? >&4”没处理。“4>&1”的作用就是“将FD4并到stdout”,但由于其他命令的stdout都处理完了,实际上就只有 $? 的值。
  又由于 $() 会建立一个管道,输入端为()内命令,故 $? 的值被赋给变量 my_value。

最后一行是关闭FD3和FD4。
  另:恢复重定向或关闭的stdout:exec 1>&2 ,恢复重定向或关闭的stderr:exec 2>&1。如果stdout和stderr全部都关闭了,又没有保存原来的FD,可以用:exec 1>/dev/tty 恢复。

++++++++++++++++++++++++++++++++++++++++++++
我尝试回答下面的问题。如有错误,还请各位前辈指正!

7、在一个交互式的(Interactive) shell 中, 用 exec 进行 I/O 重定向.
  1). Stdin, stderr 可以定向到文件中吗? 有什么结果?
  a、在交互式shell中,可以将stdin定向到文件。执行:exec 0 结果为:in 文件中每一行均会被自动执行,并且在最后会再加执行一个 exit 命令,导致退出(或退回到正常shell下)。
如 in 文件内容:$ more in
date
read lsp
echo hahha
echo "this is $lsp"

在提示符下执行命令:$ exec 0 $ date
Tue Jan 18 18:29:07 HKT 2005
$ read lsp # 其下面本应有的那句“ echo hahha ”的 “hahaha” 已经被读入到变量 lsp 中了
$ echo "this is $lsp"
this is echo hahha
$ exit

b、在交互式shell中,可以将stderr定向到文件。执行:exec 2>err
结果为:命令提示符PS被屏蔽,输入的命令也被屏蔽。但是命令执行的结果,如果是stdout 则会回显到屏幕上,如果是 stderr 则不会回显到屏幕上。其中,命令提示符、命令、stderr均会保存到文件 err 中。如:
$ exec 2>err
err in out # 执行 ls 命令
Tue Jan 18 18:55:58 HKT 2005 # 执行 date 命令,而后执行了“ ls nofile”,nofile这个文件不存在
$ # 执行 exit 命令

现在让我们查看 err文件:
$ more err
[lsp@ii lsp]$ ls
[lsp@ii lsp]$ date
[lsp@ii lsp]$ ls nofile
ls: nofile: No such file or directory
[lsp@ii lsp]$ exit
exit

c、在交互式shell中,可以将stdout定向到文件。这个使我们常用到的。就不说了。就是将错误的输出内容定向到文件中。正确的输出内容并不受影响。

2). Stdin, Stderr 可以关闭吗? 有什么结果?
在交互式shell中,如果关闭stdin,如:exec 0<&- ,其结果是退出(或退回到正常shell下)。
在交互式shell中,如果关闭stderr,如:exec 2>&- ,状态同stderr定向到文件,唯一不同的是没有保存下来。
在交互式shell中,如果关闭stdoutr,如:exec 1>&- ,只要执行有stdout或stderr内容送往 monitor 的命令,如ls、date这类命令,均会报错:“ls: write error: Bad file descriptor”。其他如cd、mkdir、……这类命令不受影响。

3). 如果 stdin, stdout, stderr 进行了重定向或关闭, 但没有保存原来的 FD, 可以将其恢复到 default 状态吗?
*** 如果关闭了stdin,因为会导致退出,那肯定不能恢复。
*** 如果重定向或关闭 stdout和stderr其中之一,可以恢复,因为他们默认均是送往monitor(但不知会否有其他影响)。如恢复重定向或关闭的stdout:exec 1>&2 ,恢复重定向或关闭的stderr:exec 2>&1。
*** 如果stdout和stderr全部都关闭了,又没有保存原来的FD,可以用:exec 1>/dev/tty 恢复。

+++++++++++++++++++
下面参考了 r2007 兄的回复!谨以致谢!
+++++++++++++++++++

8、cmd >a 2>a 和 cmd >a 2>&1 为什么不同?
  cmd >a 2>a :stdout和stderr都直接送往文件 a ,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。
  cmd >a 2>&1 :stdout直接送往文件a ,stderr是继承了FD1的管道之后,再被送往文件a 。a文件只被打开一遍,就是FD1将其打开。

他们的不同点在于:
  cmd >a 2>a 相当于使用了FD1、FD2两个互相竞争使用文件 a 的管道;
  而cmd >a 2>&1 只使用了一个管道FD1,但已经包括了stdout和stderr。
  从IO效率上来讲,cmd >a 2>&1的效率更高。
Tags:
1.FreeBookSpot
FreeBookSpot有4485本免费的E-BOOKS分成96个类别,多达71,97 GB。 您可以在类別搜寻找和下载免费的书,如:科学、设计、编码、小说和许多其他的书。您可以在类别搜寻和下载免费的书,如:科学、设计、编码、小说和许多其他的书。

2.4eBooks
4eBooks 有数量相当庞大的程式设计ebooks,下载的ebook都有简短的描述。您可以找到数以千计程式设计领域的ebooks,如:Net、Actionscript、Ajax、Apache..等等。

3.Free-eBooks
Free-eBooks是一个以网络为收集来源的免费ebook下载网站,除了免费ebooks以外,您也下载免费杂志或上传您收集的ebook作为交流。

4.ManyBooks
ManyBooks 提供PDA、iPod或者一般读者免费ebooks阅读与下载,这里有21,282 eBooks可利用,完全免费!

5.GetFreeEBooks
GetFreeEBooks 是一个免费ebook下载网站,所有网站内的ebooks都是有经版权许可免费可使用的。

6.FreeComputerBooks
FreeComputerBooks 包括免费网络、编程、数学、技术、演讲笔记和教学的丰富资料库。分类按照标题,分成12个根目录和150个子目录。

7.FreeTechBooks
FreeTechBooks 包括网络电脑科学,工程学和程序方面的书,课本还有演讲笔记,所有网站内的ebooks都是有经版权许可免费可使用的。

8.Scribd
Scribd是线上文件分享网站,支援格式有:Word、Excel、PowerPoint、PDF与其他一些常用的格式,您可以下载或是贴在你的blog。详细介绍。

9.GlobuszGlobusz
GlobuszGlobusz 是特別为发表ebooks设计的网站,专门研究免费eBook下载。文章与作者也以星等加以评价。

10.KnowFreeKnowFree
KnowFreeKnowFree 免费交换ebooks、录影和其他材料,授权做为教育用途或是非商业用途。

11.OnlineFreeEBooksOnlineFreeEBooks
OnlineFreeEBooksOnlineFreeEBooks 提供9大类的ebooks:汽车Ebooks,商业Ebooks、设计Ebooks、套件Ebooks、硬件Ebooks、健康与医疗Ebooks、软件与技术Ebooks,体育与武术Ebooks。

12.MemoWareMemoWare
MemoWareMemoWare 有数以万计收藏(数据库、文学、地图、技术参考等等)特别的格式化的文件可以容易的传输到您的PalmOS、Pocket PC、Windows CE、EPOC、Symbian或其他PDA设备。

13.BluePortal

14.OnlineComputerBooksOnlineComputerBooks
包含关于免费电脑书

15.SnipFiles

16.BookYards

17.The Online Books Page
The Online Books Page 超过30,000本免费ebooks。

18.AskSam Ebooks
AskSam Ebooks 有免费的收藏,如:莎士比亚、法律与政府文件。

19.Baen Free Library
Baen Free Library是下载科幻小说的在线图书馆。

20.eBookLobby
包括商务、艺术、电脑及教育。

21.Issuu
Issuu是一个专业的在线PDF分享服务网站,或者也可以认为是一个很不错的在线PDF文档图书馆。详细介绍。

22.Yudu
Yudu是一个在线PDF文档分享网网站,你可以发布自己的PDF文件,上面也有很丰富的PDF电子书资源。

23.Calameo
Calameo同样是一个PDF文档分享网站,上面也有丰富的PDF文件可供下载。

24.Onsitecatalog
Onsitecatalog也是一个在线PDF发布服务,上面同样有很多的免费的PDF文件资源。
Tags:

mysql的show status 解释

[ 2009/12/09 12:13 | by selboo ]
Aborted_clients  由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects  尝试已经失败的MySQL伺
Tags: ,

Linux cut命令

[ 2009/12/09 12:02 | by selboo ]
一个非常有用的命令,主要用来提取各种各样的数据。

cut -cchars file
如:
   -c5     提取第5个字符
        -c5-    提取第5个字符以后的字符
        -c1,5,12 提取多个字符,中间用“,”符号隔开
        -c5-14 提取第5个字符到第14个字符间的字符
http://gan.cublog.cn
[service@dsg tmp]$ cat f.txt
service pts/0        Oct 9 20:27 (211.95.114.235)
service pts/1        Oct 9 21:06 (218.80.203.242)
service pts/2        Oct 9 14:35 (218.80.203.242)
service pts/3        Oct 9 21:07 (218.80.213.242)
service pts/4        Oct 9 21:07 (218.80.213.242)
service pts/5        Oct 9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c5 f.txt
i
i
i
i
i
i
[service@dsg tmp]$ cut -c5- f.txt  
ice pts/0        Oct 9 20:27 (211.95.114.235)
ice pts/1        Oct 9 21:06 (218.80.203.242)
ice pts/2        Oct 9 14:35 (218.80.203.242)
ice pts/3        Oct 9 21:07 (218.80.213.242)
ice pts/4        Oct 9 21:07 (218.80.213.242)
ice pts/5        Oct 9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c1,5,14 f.txt
si0
si1
si2
si3
si4
si5

------------------------------
cut -d -f
-d, --delimiter=DELIM
              use DELIM instead of TAB for field delimiter

-f, --fields=LIST
              output only these fields; also print any line that contains no
              delimiter character, unless the -s option is specified

-d -f 主要用来从某中分隔符中提取数据
如:
[service@dsg tmp]$ cat f.txt
service1:pts/0:Oct 9 20:27: (211.95.114.235)
service2:pts/1:Oct 9 21:06: (218.80.203.242)
service3:pts/2:Oct 9 14:35: (218.80.203.242)
service4:pts/3:Oct 9 21:07: (218.80.213.242)
service5:pts/4:Oct 9 21:07: (218.80.213.242)
service6:pts/5:Oct 9 21:45: (58.31.205.19)
[service@dsg tmp]$ cut -d: -f1 f.txt
service1
service2
service3
service4
service5
service6
[service@dsg tmp]$ cut -d: -f2 f.txt
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
[service@dsg tmp]$ cut -d: -f3 f.txt
Oct 9 20
Oct 9 21
Oct 9 14
Oct 9 21
Oct 9 21
Oct 9 21
[service@dsg tmp]$ cut -d: -f5 f.txt
(211.95.114.235)
(218.80.203.242)
(218.80.203.242)
(218.80.213.242)
(218.80.213.242)
(58.31.205.19)
[service@dsg tmp]$ cut -d: -f9 f.txt





[service@dsg tmp]$ cut -d: -f1,4 f.txt #提取1和4列数据
service1:27
service2:06
service3:35
service4:07
service5:07
service6:45

Given that the fields are separated by tabs, you should use the -f option to cut instead:

如果文件使用tab键隔开就直接使用-f就可以了,-d的默认分隔符号就为tab键。
http://gan.cublog.cn
更多的cut使用查看man cut
分页: 60/186 第一页 上页 55 56 57 58 59 60 61 62 63 64 下页 最后页 [ 显示模式: 摘要 | 列表 ]