日期:2014-05-16  浏览次数:20586 次

Linux管理员不可不知的五大命令+工具

【51CTO精选译文】对于Linux管理员来说,有很多非常有用的工具可供选择。在这里,我只是列举出其中5个,Linux管理员日常操作都要用到的工具。我认为,功能最强的工具可能并不适合你的使用情况,而且绝对有些工具我还忘了把它们统计进来,如果是这样的话,我恳请大家把我没收录的工具在评论中写出来。另外,本文中提到的工具仅供选择,并不是每个人都一定需要它们,而那些没提到的工具,并不是说Linux管理员就不需要使用,像SSH, SCP这样的工具,每个Linux管理员都必须使用并且没有其他选择。

#5. head/tail命令

大多数情况下,登录服务器的唯一目的是诊断某些问题,常规方法是查看日志。有各种不同应用类型的日志,比如Apache日志、MySQL日志、邮件日志等。那么你用什么命令来查看日志呢,难道不是tail吗?这其实与此类似,我们有时候可以使用“head”命令来查看一个文件的开始几行。

几个例子:

  1. *持续检查Apache错误日志文件,可以使用以下命令: ?
  2. ?
  3. $?tail?-f?/var/log/httpd/error_log?
  4. ?
  5. *查看MySQL日志中的前15行内容,可以使用以下命令: ?
  6. ?
  7. $?head?-15?/var/log/mysqld.log ?
  8. ?

#4. vi/nano/emacs工具

一般而言,文本编辑器需要频繁地用来创建/更新配置文件。我更喜欢使用vim,使用起来非常舒服,很容易记住它的一些快速编辑命令。

下面是使用vi的几个例子。用vi打开一个文件,而且不进入插入模式(insert mode),那么你可以输入如下所示的有用字符:

  1. =>跳至行末 ?
  2. ?$ ?
  3. =>?跳至行首 ?
  4. ?0 ?
  5. =>?删除余下的行 ?
  6. ?D ?
  7. =>?重复上一个命令 ?
  8. .?(点) ?
  9. =>?给每行的末尾加上“maal”。1表示第一行,$表示最后一行 ?
  10. :1,$?s/$/maal/ ?
  11. =>在5至10行的行首加上“bingo” ?
  12. :5,10?s/^/bingo/ ?
  13. =>?文件在光标之后的内容中如果出现foo,则把它替换成bar ?
  14. :s/foo/bar/g ?
  15. =>?删除本行并进入插入模式 ?
  16. C ?
  17. =>?去掉windows系统文件中的^M ?
  18. :se?ff=unix ?
  19. =>?开启/关闭行数显示 ?
  20. ?:set?nu ?
  21. ?:set?nonu ?
  22. =>?显示文件里的实际行数 ?
  23. :%!cat?-n ?
  24. =>?定位光标下面的单词 ?
  25. ?*?(星号) ?
  26. ?

#3. screen命令

在nix世界中,screen命令是尚未得到充分利用的命令之一。打个比方,当你最后一次在远程服务器上执行一个命令时,如果你发现那个命令需要几个小时才能完成,或者当你需要登录10个服务器并检查东西、在它们之间复制文件的时候,突然之间,你的互联网连接重启了,ssh会话也终结了,这时,你就会用到screen命令,而一旦你开始使用这个命令,你就会被它吸引。Screen是一个终端复用器(terminal multiplexer),允许你通过使用一个物理终端来管理多个进程(比如ssh会话)。每个进程都有自己的虚拟窗口,而你可以在跟每个进程交互的虚拟窗口之间来回切换。

我们再深入的解释一下。假设你有许多服务器,理想情况下你应该把ssh(端口22)访问限制放在特定的IP地址上面。这样,你可以登陆一个允许远程IP访问的服务器。此时,你就可以键入“screen”(所有主要的linux版本都安装了screen命令)并开始执行。你会看到一个状态栏,你可以按Ctrl+ac组合键创建新的screen窗口。用Ctrl+an (下一个)和Ctrl+ap(上一个)组合键在窗口之间进行切换。通常,它提供的功能非常有用,比如远程终端会话管理(分离或共享终端会话),无限窗口数量(这与固定的Linux虚拟控制台数量不一样),在窗口之间复制/粘贴,在窗口中显示活动或静止,把终端分割成多个区(横向以及纵向),共享终端等等。

你可以把你的参数保存在.screenrc文件中,下面是我的.screenrc文件一样,在里面我已经重新定义了状态栏的外观和感觉,并且设置了键f5(上一个窗口)和f6(下一个窗口)的含义:

  1. $?cat?~/.screenrc? ?
  2. #请不要有烦人的铃声 ?
  3. vbell?on ?
  4. ?
  5. #在挂起时分离 ?
  6. autodetach?on ?
  7. ?
  8. #不显示版权页 ?
  9. startup_message?off ?
  10. ?
  11. #模仿.logout消息 ?
  12. pow_detach_msg?"Screen?session?of?\$LOGNAME?\$:cr:\$:nl:ended."?
  13. ?
  14. #告知$TERMCAP硬状态(窗口列表和时钟)支持 ?