对话 UNIX: 适用于任何 UNIX 系统的 10 个出色的工具(7)

来源:developerWorks 中国 作者:Martin Streicher
  

根据您使用的 UNIX 风格不同,有时候必须安装新的软件包。可以从源代码构建它们,如果包管理软件提供等效的二进制包,也可以直接安装,这会节省时间和精力。例如,如果使用 Debian 风格的 Linux®,那么可以使用 apt-get 直接安装本期讨论的许多实用程序。





用 apropos 寻找命令

UNIX 的命令太多了,所以很容易忘记某个实用程序的名称;对于不常使用的工具,尤其可能出现这种情况。如果您正在努力回想一个命令名,那么试试 apropos(或等效的 man -k)。例如,如果您要找一个计算器,那么只需运行 apropos calculator:

$ apropos calculator
bc (1)        - An arbitrary precision calculator language
dc (1)        - An arbitrary precision calculator

bc 和 dc 都是命令行计算器。

每个 UNIX 手册页都有简短的描述,apropos 在描述中搜索指定的关键字。关键字可以是字面值(比如 calculator),也可以是正则表达式(比如 calc*)。如果使用后一种形式,那么一定要把表达式放在引号("")中,以防止 shell 解释特殊字符:

$ apropos "calcu*"
allcm (1)     - force the most important Computer-Modern-fonts to be calculated
allec (1)     - force the most important Computer-Modern-fonts to be calculated
allneeded (1) - force the calculation of all fonts now needed
bc (1)        - An arbitrary precision calculator language
dc (1)        - An arbitrary precision calculator





在命令行上运行计算

如上所示,dc 是在每个 UNIX 系统上都可以找到的计算器。如果不带参数运行 dc,就会进入交互模式,可以编写和运算 Reverse Polish Notation (RPN) 表达式:

$ dc
5
6 
* 
10
/ 
p
3

但是,可以在命令行上做所有这些工作。指定 -e 选项并提供要运算的表达式。同样,要把表达式放在引号中,以防止 shell 解释它:

$ dc -e "5 6 * 10 /"
3





用 pgrep 寻找进程

您可能无数次使用 ps aux | grep ... 寻找进程。这当然是有效的,但是有一种更高效的搜索进程的方法。请试试 pgrep。

例如,以下命令寻找 strike 的所有登录 shell(其中的 strike 是用户名):

$ pgrep -l -u strike zsh 
10331 zsh
10966 zsh

pgrep 命令提供筛选选项,允许按用户名(上面给出的 -u)、进程组、组等筛选进程。配套的实用程序 pkill 接受 pgrep 的所有选项和一个信号,它把这个信号发送给与给定的条件匹配的所有进程。

例如,命令 pkill -9 -u strike zsh 与 pgrep -u strike zsh | xargs kill -9 等效。





用 pwgen 生成安全密码

UNIX 中每个重要的子系统都需要自己的密码。电子邮件、远程登录和超级用户特权都需要密码,这些密码最好各不相同而且难以通过自动化攻击猜测或推断出来。另外,如果希望开发生成账户的脚本,就需要一个可靠的随机安全密码来源。

pwgen 实用程序是一个用来生成密码的小程序。可以把密码设定为更容易记忆的或更安全的,还可以指定密码是否包含数字、符号、元音和大写字母。

许多 UNIX 系统都有 pwgen。如果没有,也很容易构建它:

$ # As of March 2009, the latest version is 2.06
$ wget http://voxel.dl.sourceforge.net/sourceforge/\
  pwgen/pwgen-2.06.tar.gz
$ tar xzf pwgen-2.06.tar.gz
$ cd pwgen-2.06
$ ./configure && make && sudo make install

下面是一些使用示例:

  • 输出容易记忆的密码集合:
    $ pwgen -C
    ue2Ahnga Soom0Lu0 Hie8aiph gei9mooD eiXeex7N 
    Wid4Ueng taShee3v Ja3shii8 iNg0viSh iegh5ouF 
    ...
    zoo8Ahzu Iefev0ch MoVu4Pae goh1Ak6m EiJup5ei 
    

  • 生成一个安全的密码:
    $ pwgen -s -1
    oYvy9WWa
    

  • 生成一个安全的密码,其中不包含含糊(即容易混淆的)字符,至少包含一个非字母数字字符:
    $ ./pwgen -s -B -1 -y
    7gEqT_V[
    

输入 pwgen --help 可以查看所有可用选项。





用 multitail 查看许多文件

无论您是调试新代码的开发人员,还是监视系统的系统管理员,都常常需要同时查看许多东西。如果您是开发人员,为了寻找 bug,可能要查看调试日志和 stdout;如果您是管理员,可能要根据需要调整策略活动。这些任务常常需要在屏幕上显示许多窗口;例如,在一个窗口中执行 tail,在另一个窗口中执行 less,在第三个窗口中显示命令提示。

如果必须同时监视多个文件,那么可以考虑使用 multitail。顾名思义,这个实用程序把一个控制台窗口分割为多个部分,每个日志文件一个部分。更棒的是,multitail 可以给已知的格式加颜色标记(还可以定义定制的颜色方案),可以把多个文件合并成一个流。

为了构建 multitail,需要下载源代码、解压它并运行 make。(发行版的通用 makefile 中的选项对于大多数 UNIX 系统应该足够了。如果 make 运行失败,那么在顶层目录中寻找适合自己系统的 makefile)。

# As this article was written, the latest version of multitail was 5.2.2
$ wget http://www.vanheusden.com/multitail/multitail-5.2.2.tgz
$ tar xzf multitail-5.2.2.tgz
$ cd multitail-5.2.2
$ make
$ sudo make install

下面是 multitail 的一些使用示例:

  • 为了在同一窗口中查看多个日志文件,用一个文件名列表启动这个实用程序,比如 multitail /var/log/apache2/{access,error}.log
  • 为了在同一窗口中查看两个文件并缓冲读取的所有信息,使用 -I 选项把指定的文件与另一个文件合并,比如 multitail -M 0 /var/log/apache/access.log -I /var/log/apache/error.log。在这里,把 Apache 错误日志和访问日志合并在一起。-M 0 记录输入的所有数据;在任何时候,按 B 键即可看到缓冲区。
  • 还可以组合命令和文件。例如,为了查看一个日志文件并监视 ping 的输出,可以使用 multitail logfile -l "ping 192.168.1.3"。这会在同一控制台中创建两个视图:一个视图显示 logfile 的内容,另一个视图显示 ping 192.168.1.3 的输出。

除了命令行选项之外,multitail 还提供一组交互式命令,它们影响显示的当前状态。例如,在显示中按 A 键可以添加新的日志文件。按 B 键显示保存的缓冲区。按 Q 键退出 multitail。命令的完整列表见 multitail 的手册页。


时间:2009-07-13 15:03 来源:developerWorks 中国 作者:Martin Streicher 原文链接

好文,顶一下
(4)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量