2014年6月

有很多使用命令行的理由。正如我们在issue 3 of Linux Voice中展示的那样,它是与你的计算机交互的最强大和简明的方法。但是,我们还是先来看一下命令行的一些隐晦的使用场景(或许有些人会觉得没有意义)。

(LCTT译注,以下视频可能会比较慢,请耐心等一下。)

浏览网页

Firefox和Chromium都是很好的浏览器,但是你有没有发现它们有点太图形化了?没有?看一下下面的视频,我们使用elinks web浏览器显示了与黑客相关的新闻。界面可能没有其他浏览器好看,但是它的目标是显示绝大多数的web页面!

作为一个极客,当你只有SSH连接方式时,需要快速检查一下能否访问网页时,这将是一个很便利的方法。

在维基百科上查找想要的信息

是的,上面我们已经提到了使用Web,但是web不是查看维基百科的唯一方式。David Leadbeater已经构建了一个将维基百科的内容放入DNS记录的DNS服务器。这能够让你使用像dig这样的命令行工具来抓取你想要的信息。

看电影

当你想要看《星球大战 4 :新的希望》时,不再需要使用Netflix或者YouTube,只要在你的终端中直接telnet towel.blinkenlights.nl就行了。

玩游戏

再Steam来之前Linux下就有许多游戏,并且很多都不需要图形界面,比如NetHack、Robots和Greed。下面是Moon Buggy的一个演示:

LCTT译注:大家注意到这篇文章中的视频了么?不是通常的FLA,也不是MP4、AVI。而是一个专门演示脚本“功夫”的一个网站提供的:http://shelr.tv/ ,欢迎大家也去演练下你的脚本功夫吧!

LCTT译注:为了正常呈现,我专门临时打开了网站对IFRAME的限制。。。


via: http://www.linuxvoice.com/commandline-secrets/

译者:johnhoow 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Nginx网站服务器在生产环境中运行的时候需要进行实时监控。实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的。

如果你不需要以上软件提供的综合性报告或者长期数据统计功能,只是需要一种快速简便的办法去监控 Nginx 服务器的请求的话,我建议你采用一个叫 ngxtop 的命令行工具。

你马上就会发现 ngxtop 从界面和名称都借鉴了著名的top命令。ngxtop 是通过分析 Nginx 或者其他的日志文件,使用类似 top 命令的界面实时展示出来的。你可以说你知道的其他高端监控工具,但是在简洁这方面 ngxtop 无疑是最好的。简单就意味着不可替代。

本指南中,我将介绍如何使用 ngxtop 实时监控 Nginx 网站服务器。

Linux 上安装 ngxtop

首先在 Linux 系统中安装依赖库pip(LCTT译注:ngxtop是用python编写的)。

然后使用如下命令安装 ngxtop。

$ sudo pip install ngxtop

ngxtop 使用

基本使用方法如下:

ngxtop [options]
ngxtop [options] (print|top|avg|sum) <var>
ngxtop info

这里是一些通用选项。

  • -l : 指定日志文件的完整路径 (Nginx 或 Apache2)
  • -f : 日志格式
  • --no-follow: 处理当前已经写入的日志文件,而不是实时处理新添加到日志文件的日志
  • -t : 更新频率
  • -n : 显示行号
  • -o : 排序规则(默认是访问计数)
  • -a ..., --a ...: 添加表达式(一般是聚合表达式如: sum, avg, min, max 等)到输出中。
  • -v: 输出详细信息
  • -i : 只处理符合规则的记录

以下是一些内置变量,他们的含义不言自明。

  • bodybytessend
  • http\_referer
  • httpuseragent
  • remote\_addr
  • remote\_user
  • request
  • status
  • time\_local

使用 ngxtop 监控 Nginx

ngxtop 默认会从其配置文件 (/etc/nginx/nginx.conf) 中查找 Nginx 日志的地址。所以,监控 Nginx ,运行以下命令即可:

$ ngxtop

这将会列出10个 Nginx 服务,按请求数量排序。

显示前20个最频繁的请求:

$ ngxtop -n 20

获取Nginx基本信息:

$ ngxtop info

你可以自定义显示的变量,简单列出需要显示的变量。使用 "print" 命令显示自定义请求。

$ ngxtop print request http_user_agent remote_addr

显示请求最多的客户端IP地址

$ ngxtop top remote_addr

显示状态码是404的请求

$ ngxtop -i 'status == 404' print request status

除了Nginx,ngtop 还可以处理其他的日志文件,比如 Apache 的访问文件。使用以下命令监控 Apache 服务器:

$ tail -f /var/log/apache2/access.log | ngxtop -f common

via: http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html

译者:shipsw 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

以前我总想知道如何为我的Bash脚本创建命令行参数。经过搜索,我发现了2个函数可以处理这个问题,getopt 函数和 getopts 函数。我无意争论哪一个函数更好的。getopts 是一个shell内建命令,而且似乎比 getopt 更容易实现这个功能,所以在这篇文章里我准备讲讲getopts。

bash getopts

开始的时候,我只试着处理传递给脚本的命令行参数。最后,我添加了另外一些有用的功能函数,使得这个脚本可以成为其他任何交互式脚本处理命令行的开始模板。我还添加了一个纯文本格式的帮助函数,让脚本更加容易阅读。

与其来一长段文字解释 getopts 在bash中是如何工作的,我认为不如直接来一个能工作的脚本更让人觉得轻松一些。

#!/bin/bash

######################################################################
#This is an example of using getopts in Bash. It also contains some
#other bits of code I find useful.
#Author: Linerd
#Website: http://tuxtweaks.com/
#Copyright 2014
#License: Creative Commons Attribution-ShareAlike 4.0
#http://creativecommons.org/licenses/by-sa/4.0/legalcode
######################################################################

#Set Script Name variable
SCRIPT=`basename ${BASH_SOURCE[0]}`

#Initialize variables to default values.
OPT_A=A
OPT_B=B
OPT_C=C
OPT_D=D

#Set fonts for Help.[译注: 这里tput用来更改终端文本属性,比如加粗,高亮等]
NORM=`tput sgr0`
BOLD=`tput bold`
REV=`tput smso`

#Help function
function HELP {
  echo -e \\n"Help documentation for ${BOLD}${SCRIPT}.${NORM}"\\n
  echo -e "${REV}Basic usage:${NORM} ${BOLD}$SCRIPT file.ext${NORM}"\\n
  echo "Command line switches are optional. The following switches are recognized."
  echo "${REV}-a${NORM}  --Sets the value for option ${BOLD}a${NORM}. Default is ${BOLD}A${NORM}."
  echo "${REV}-b${NORM}  --Sets the value for option ${BOLD}b${NORM}. Default is ${BOLD}B${NORM}."
  echo "${REV}-c${NORM}  --Sets the value for option ${BOLD}c${NORM}. Default is ${BOLD}C${NORM}."
  echo "${REV}-d${NORM}  --Sets the value for option ${BOLD}d${NORM}. Default is ${BOLD}D${NORM}."
  echo -e "${REV}-h${NORM}  --Displays this help message. No further functions are performed."\\n
  echo -e "Example: ${BOLD}$SCRIPT -a foo -b man -c chu -d bar file.ext${NORM}"\\n
  exit 1
}

#Check the number of arguments. If none are passed, print help and exit.
NUMARGS=$#
echo -e \\n"Number of arguments: $NUMARGS"
if [ $NUMARGS -eq 0 ]; then
  HELP
fi

### Start getopts code ###

#Parse command line flags
#如果选项需要后跟参数,在选项后面加":"
#注意"-h"选项后面没有":",因为他不需要参数。选项字符串最开始的":"是用来去掉来自getopts本身的报错的,同时获取不能识别的选项。(译注:如果选项字符串不以":"开头,发生错误(非法的选项或者缺少参数)时,getopts会向错误输出打印错误信息;如果以":"开头,则不会打印[在man中叫slient error reporting],同时将出错的选项赋给OPTARG变量)

while getopts :a:b:c:d:h FLAG; do
  case $FLAG in
    a)  #set option "a"
      OPT_A=$OPTARG
      echo "-a used: $OPTARG"
      echo "OPT_A = $OPT_A"
      ;;
    b)  #set option "b"
      OPT_B=$OPTARG
      echo "-b used: $OPTARG"
      echo "OPT_B = $OPT_B"
      ;;
    c)  #set option "c"
      OPT_C=$OPTARG
      echo "-c used: $OPTARG"
      echo "OPT_C = $OPT_C"
      ;;
    d)  #set option "d"
      OPT_D=$OPTARG
      echo "-d used: $OPTARG"
      echo "OPT_D = $OPT_D"
      ;;
    h)  #show help
      HELP
      ;;
    \?) #unrecognized option - show help
      echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
      HELP
      #在这里如果你不想打印完整的帮助信息,只想显示简单的错误信息,去掉上面的两行,同时使用下面的两行。
      #echo -e "Use ${BOLD}$SCRIPT -h${NORM} to see the help documentation."\\n
      #exit 2
      ;;
  esac
done

shift $((OPTIND-1))  #This tells getopts to move on to the next argument.

### End getopts code ###


### Main loop to process files ###

#这里你可以用你的脚本处理逻辑来替代。这个例子只是在终端中打印文件的文件名和后缀名。你可以把任意其他的文件处理任务放到这个while-do循环中。   

while [ $# -ne 0 ]; do
  FILE=$1
  TEMPFILE=`basename $FILE`
  #TEMPFILE="${FILE##*/}"  #另外一种获取不带后缀的文件名的方法。
  FILE_BASE=`echo "${TEMPFILE%.*}"`  #file without extension
  FILE_EXT="${TEMPFILE##*.}"  #file extension


  echo -e \\n"Input file is: $FILE"
  echo "File withouth extension is: $FILE_BASE"
  echo -e "File extension is: $FILE_EXT"\\n
  shift  #Move on to next input file.
done

### End main loop ###

exit 0

将上面的代码复制到你的文本编辑器里,然后保存到你的可执行路径下。我将这个脚本命名为 options 并保存到 /home/linerd/bin 路径下。保存之后记得给你的脚本添加可执行权限。

chmod +x ~/bin/options

现在脚本已经可以运行了。试试用 -h 参数来打印帮助信息吧。

options -h

遇到不支持的选项,脚本同样可以给出提示,并打印帮助信息。

options -z

最后,getopts可以以任意的顺序处理你给的命令行参数。唯一的限制是你要处理的文件必须放在所有参数的最后。

options -d bar -c chu -b man -a foo example1.txt example2.txt

现在你可以从这些例子里看到如何通过命令行参数给脚本里的变量赋值。这个脚本里除了getopts还有很多其他的东西,但是我认为这些就足以成为一个新脚本的开头模板了。如果你有兴趣更深入地学习bash的getopts,你可以找找深埋在man page的“Builtins”这一节里的文档,也可以从 Bash Reference Manual 找到信息。

接下来呢?

你会用getops来干什么呢?在评论里告诉我吧。


via: http://tuxtweaks.com/2014/05/bash-getopts/

译者: CNprober <[email protected], QQ619913541> 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在最近的Distrowatch杂志上,Jesse Smith尝试了一下RHEL 7桌面版本。在安装上,“从RHEL安装介质启动到一个图形化的系统安装界面,RHEL用了和最近发布的Fedora一样的新的Anaconda安装方式。就我个人来说新的安装方式是一种倒退”他说道。这没啥大不了的,他猜测在桌面版本就是这样的吧。Smith说他希望有一种图形化的软件包管理工具,因为用户只能在命令行下使用YUM源,只能使用标准的默认库。之后,GNOME shell登录崩溃了,只能使用KDE登录。虽然有些困惑但是他非常喜欢新的防火墙配置工具。请看他的详细报告

ZDNet.com上,Jamie Watson对新发布的PCLinuxOS 2014.05发表了自己的看法。他说道:

这是个有趣的看法,你可能从它的名字当中想到它包含了很多软件,补丁,驱动在非标准的分支中。最有趣的一点是,基于活动聚焦的虚拟桌面配置。这种趋势使PCLinuxOS使用起来既有趣又简单,提供了以下的桌面环境,个性化的图标:

互联网:浏览器,邮件,聊天工具

工作:office、kile、scribus

娱乐:游戏

多媒体:音乐,视频的编辑和创作

图形和图像:浏览,编辑和创作

管理:系统管理任务

“PCLinuxOS始终使用原来的安装方式,它来源于Mandriva/Mandrake安装方式”Watson提到。它还带来了新的内核,最新的软件,和多样化互动的界面。他总结道:“这个新发布的PcLinuxOS版本很不错”。另外Watson在几周前也测试过了Ubuntu、Debian和LMDE。


via: http://ostatic.com/blog/pros-secrets-and-red-hat-7-and-pclinuxos-2014-05-reviews

译者:jiajia9linuxer 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

好吧,Linux博客圈这里这周相对比较平静,给网民们一个拖了很久的机会集体喘口气吧,去享受一下龙舌兰、燕尾服、鸡尾酒带来的欢快吧,然后评估一下过去几周来发生的和自由开放软件相关的事件吧。

“你是否曾经在听一张专辑的时候想过‘伙计,这听起来不错,但是我希望它能经常从用户空间过渡到内核空间去!’”粉丝们在Facebook上写道,“我们会全力支持你的。我们的专辑现在完全可以作为一个可加载的Linux内核模块来播放。”

Linux女孩曾经认为她自己已经完全进入Linux世界了,但是她现在却意识到她的想法是错误的。谢谢你们,粉丝们,是你们让生活一直这么有趣!

‘命令行秘诀’

说到有趣,没什么比围坐在吧台前谈论行业内的事情来度过平静的一周更带劲了,而上周搞了一次。Linux博客圈内的生活很惬意。

座谈会内容是《Linux之声》——那本炫目出世的新杂志,读者也许记得它是去年年底发布的——而谈话的主题恰恰就是命令行秘诀

Linux女孩太激动了。

‘它打算渲染大多数网页’

“有很多使用命令行的真正的好理由,”《Linux之声》的策划者写道,“它是让你和计算机进行交互的强大而简明的方法“

“然而,我想花点时间来看看它里头一些更为晦涩的用法(有人会说毫无意义,不值得去做了)。“他们补充说。

杂志首先列出的是elinks网页浏览器:“它可能看起来没有它的竞争对手那样光彩照人,但它的目标是能够渲染大多数网页。”他们解释道,“它也有着极客时尚,当你需要快速检查你是否能从只能通过SSH访问的计算机上去访问网页时,它就会派上用场了。“

之后谈到的包含了从维基百科上查阅一些定义等其它一些实用的小建议。

'对维护很重要'

“命令行的小技巧很有趣,真的很有趣。”比如,Google+博主亚历桑德鲁:埃伯索尔满怀热情地说,“但是他们忘了cowsay,它可以用来在黑漆漆的终端里博你一笑。“

”命令行对于维护很重要。“他补充说,”大家可以使用bash脚本来自动化,只需按几个快捷键(或者只要一个就行)来完成复杂的任务。”

其它命令行秘诀,埃伯索尔会把它们放进原来的列表的包括sl(蒸汽机车),以及这些这些奇怪的点子

* % cat "food in cans"
cat: can't open food in cans
* % nice man woman
No manual entry for woman.
* % [Where is Jimmy Hoffa?
Missing ].
* % make love
Make: Don't know how to make love. Stop.
* % man: why did you get a divorce?
man:: Too many arguments.

'最珍贵的精华'

“命令行秘诀?根本没这玩意。”博主罗伯特:伯格森告诉Linux女孩道,”失望了吧,新手?那就猛敲‘help’吧。还想要点提示?随便‘man’个什么吧。想更多来点不同?敲‘ls /bin /sbin /usr/bin /usr/sbin | less’,随便捡几个宝贝命令出来,整晚地‘man’去吧。我已经干那活超过十年了,到现在还玩得不亦乐乎。”

伯格森记不得多久以前他发现了‘ssh’,但是“它是自由/开源软件世界中最璀璨的宝石了。“他说。

”ssh的强大力量在于,你可以在一台计算机上输入命令获得快乐,你更可以在100台计算机上干同样的事情来获得100倍的快乐。“他补充道,”当然,要输入100次命令可不是闹着玩的。所以,学习一下通过ssh安全地无密码登陆,可以让ssh的远程登陆透明化。“

'带着尊重来用吧'

当然,”就像干任何快乐的事一样,有人会沉迷于搞破坏。“伯格森警告道,”作为root用户,你可以输入命令来删除所有的东西,或者把这一切搞乱。“

”这是核弹按钮,就像全球领袖处理世界事务一样,在按下那个键之前一定要三思而后行,评估干这事所产生的结果,带着尊重和高尚的动机来使用它。“他补充道。

”我曾经删除了一个文件系统,因为我的大拇指在输入一个命令时不小心蹭到了空格键。“伯格森总结道,”坦白地说,这种蠢事我只干过一次。“

'很强大'

Google+博主贡萨洛:贝拉斯科C不那么热情。

“即使GUI工具更易用,在*nix领域,命令行仍然很强大。“他告诉Linux女孩,”甚至一些高级MacOS用户也用它们。”

对于贡萨洛:贝拉斯科C他自己而言,“我想要掌握的唯一一些命令是进程控制和杀死命令,想要使用ctrl+alt+退格键,因为我可以用来处理给我造成麻烦的那个进程,我还想要掌握tar.gz文件的管理——那玩意到现在还让我头痛。“他说。

'你正在做错事'

最后一点,但并非不重要,SoylentNews博主hairyfeet有一个完全不同的观点。

“我只想谈一件事情来充实一下命令行界面这个报道:如果你不干IT,而且做着一些重复的事情,而这些事情只是很简单、很原始地去记录一些有用的事情,但你还在用命令行,那么‘你在走一条不归路’“hairyfeet告诉Linux女孩,”命令行界面没什么神奇——它只是1970年代以来的一个图形化界面!“

今天,有很多“有用的图形化界面,这要多亏了CPU速度的提升和内存的增加,而不是一美元店里的廉价手表——我们甚至有IDE和脚本语言,大大超过70年代那些古董,可以在广域网或者局域网上工作,并与操作系统最底层交互,一切都在变得更易用,这多亏了智能感应和自动完成这样的技术。“他解释说,”所以上天作证,如果你不是那3%的系统管理员,工作在以字节计数的世界里,你会把那一堆垃圾从陈年旧帐中翻出来?

这是Hairyfeet的最佳命令行建议?“不要——被21世纪那些不切实际的想法所左右,学学怎样真正来使用语言和工具吧。“他总结道,”让命令行成为泡影,把软盘都扔进历史的垃圾桶吧。“

本文作者Katherine Noyes总是尽忠职守扮演好她的Linux女孩,那件斗篷她从2007穿到现在了。作为一个白天举止温和的女记者,她晚上像逛夜店一样,为了搜寻最新的小道消息,在Linux博客圈上灌水。你也能在 TwitterGoogle+上找到她。

via: http://www.linuxinsider.com/story/80437.html?rss=1

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Canonical——Ubuntu Linux背后的公司,其任职已久的社区经理将离职。Jono Bacon,一直是 Ubuntu 业界最熟悉的面孔之一,他将在XPRIZE基金会任新职。

Bacon于2006年加入Canonical,从其博客可知他是在收到XPRIZE的录用通知后决定离开Canonical的,XPRIZE自称为“创新引擎”和“造福人类的催化剂”。他将会在XPRIZE就任社区主管,施展他过去八年中在帮助协调Ubuntu社区方面所获得的能力。

虽然Bacon在Canonical不是直接负责商业或者发展方面,但是他的离开对于Ubuntu和开源界来说都是一件大事儿,在Ubuntu和开源界实际社区参与比行政头衔更重要。与Ubuntu的创始人和Canonical的前CEO Mark Shuttleworth一起,Bacon是早期Ubuntu生态系统项目的领军人物之一。

Bacon可以说在塑造Ubuntu的很多方面比Jane Silber更有影响力。Jane Silber自2010年一直是Canonical的CEO,但是他在公共场合的出面一般是很少的。

Bacon带领的团队包括Daniel Holbach,David Planella,Michael Hall,Nicholas Skaggs和Alan Pope。Bacon说,他们将会接手他社区领袖的工作。然而,尚不清楚的是Canonical是否会填补他留的社区经理职位。

也许Canonical不会。在很多方面,维持一个社区领袖与开源精神格格不入,开源精神往往赞扬的是分散的、用户主导的社区组织。一些Ubuntu的粉丝可能会因Bacon离职的新闻而感到恐慌。

不过,Bacon帮助指导过Ubuntu社区度过一系列的危机——从Canonical将Ubuntu软件中心设计为一个商店的失败尝试,到与Fedora群体的摩擦,到关于将Amazon.com搜索特性植入到新的Ubuntu的争议。他在Ubuntu的生态系统上留下了光辉业绩,没有他这一切将完全不同。


via: http://thevarguy.com/ubuntu/052214/ubuntu-linux-community-manager-jono-bacon-leaves-canonical

译者:linuhap 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出