对Linux管理员而言,实用的工具数不胜数。在这里,我仅仅列举出5个比较实用的工具,一般Linux管理员在每天的操作中都会用到。对于某款工 具,可能我觉得非常有用,但是极可能会和您的经验相冲突,亦或您知道一些非常好的工具,但是我却没有将其列出,对于这种情况,我真诚的希望您能在留言中不 吝赐教。另外,我在此列出的工具是相当可选的,并非每个人都绝对需要,同时还排除了一些每个Linux管理员所必须使用的工具,比如SSH,SCP等。
#5. head/tail
大部分时间,登录服务器的唯一目的就是诊断一些问题,而通常方式就是查看日志。不同程序的日志,比如Apache,MySQL,邮件日志等。您如何 查看日志呢?难道不是tail?类似的,我们有时用head检查文件的开头几行。
举例:
* 不断检查Apache的错误日志文件:
$ tail -f /var/log/httpd/error_log
* 查看MySQL日志的前15行:
$ head -15 /var/log/mysqld.log
#4. vi/nano/emacs
对于频繁创建/更新配置文件,文本编辑器基本上是必需的。我更喜欢Vim,只因为我用起来感觉比较舒服,记了一些比较有用的命令,可以方便快速编 辑。
vi举例:(用vi打开文件,同时不要进入插入模式,您可以尝试这些 比较实用的字符)
跳至行尾:$
跳至行首:0
删除至行尾:D
重复上次命令:. (点)
添加’maal’至每一行的行尾:1是第一行,$是最后一行:1,$ s/$/maal/
在第5行到第10行的行首添加’bingo’:5,10 s/^/bingo/
从光标所在行开始,替换所有的foo为bar:s/foo/bar/g
删除当前行并进入插入模式:C
移除文件中由Windows带来的^M:se ff=unix
开启/关闭行号显示:set nu / set nonu
如果您需要在文件中显示真实(实际存在的)行号:%!cat -n
查找当前光标所在的单词:* (星号)
#3. screen
screen是在nix世界中没有得到充分利用的命令之一。列举个情况,您刚刚对远程服务器发出命令,但发现需要数个小时才能完成。或您需要登录 10个服务器并检查一些东西…在它们之间拷贝文件…接着…您的网络连接被重置,您的SSH会话被终止。这就需要screen了,保证用一次就会上瘾。 Screen是一个终端复用器,它使您可以通过一个物理终端管理多个进程(比如SSH会话)。每一个进程都有单独的虚拟窗口,同时您可以在每一个进程的虚 拟窗口自由跳转。
再多说一些。假设您有很多服务器,现在通过SSH登录到其中一台服务器。您可以通过输入’screen’(所有的主流Linux发行版都已经安装了 screen)启动screen。您可以看到一个状态条。通过点击Ctrl+ac创建新的screen窗口。点击Ctrl+an(下一个)和 Ctrl+ap(前一个)进行跳转。基本上,它提供了非常实用的功能,比如远程终端会话管理(分离或共享终端会话),无限窗口(不同于Linux虚拟控制 台的硬编码),在窗口之间复制/粘贴,提示活动和非活动窗口,拆分终端(横向和纵向)到多区域,共享终端等。
您可以将您的配置保存到.screenrc。
这里就是我的.screenrc,我重新定义了状态栏外观和感觉,同 时分配了快捷键F5(前一个窗口)和F6(下一个窗口):
$ cat ~/.screenrc
# no annoying audible bell, please
vbell on
# detach on hangup
autodetach on# don’t display the copyright page
startup_message off# emulate .logout message
pow_detach_msg “Screen session of \$LOGNAME \$:cr:\$:nl:ended.”# advertise hardstatus support to $TERMCAP
termcapinfo xterm* ti@:te@# make the shell in every window a login shell
shell -$SHELLdefscrollback 10000
# Extend the vt100 desciption by some sequences.
termcap vt* AF=\E[3%dm:AB=\E[4%dm
caption always
caption string ‘%{= wk}[ %{k}%H %{k}][%= %{= wk}%?%-Lw%?%{r}(%{r}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %{k}][%{b} %d/%m %{k}%c %{k}]’# keybindings
bind -k F5 prev
bind -k F6 next
#2. netstat/nmap
有很多实用的命令可以用来诊断网络。当然啦,ping/traceroute可能是最常用的,但是nmap和netstat比基本的ping更有 用。netstat代表网络状态。nmap可以说是安全/端口扫描器,或是说是一个网络勘查命令。
netstat命令举例:
* 显示互联网(端口80)连接的总数:
$ netstat -an |grep :80 |wc -l
* 显示您电脑所侦听的所有端口:
$ netstat -ant | grep LISTEN
* 使用nmap扫描局域网内的电脑,并获知其开放端口:
$ nmap ip
#1. find and grep
一些日常任务的清单:哪些文件占用空间最多?删除两天前的所有临时文件,找出有多少问题文件是基于旧服务器名写入的,将所有的’.list’重命名 为’.txt’。对于这些,find和grep是您最好朋友。
Find命令用于查找文件。您可以指定很多参数,比如创建于今天的文件,或指定更多参数。通常,我们还将 xargs或exec与find结合使用。
find命令举例:
* 查找/var下最大的前10个文件:
$ find /var -type f -ls | sort -k 7 -r -n | head -10
* 查找/var/log/下大于5GB的文件:
$ find /var/log/ -type f -size +5120M -exec ls -lh {} \;
* 找出今天的所有文件并将它们拷贝到另一个目录:
$ find /home/me/files -ctime 0 -print -exec cp {} /mnt/backup/{} \;
* 找出所有一周前的临时文件并删除:
$ find /temp/ -mtime +7-type f | xargs /bin/rm -f
* 查找所有的mp3文件,并修改所有的大写字母为小写字母:
$ find /home/me/music/ -type f -name *.mp3 -exec rename ‘y/[A-Z]/[a-z]/’ ‘{}’ \;
grep命令举例:
* 打印Apache的documentroot文件夹名称:
$ grep -i documentroot /etc/httpd/conf/httpd.conf
* 浏览文件内容而不显示解释行和空行:
$ grep -Ev “^$|^#” /etc/my.cnf
* 显示分配给该接口的IP地址:
$ ifconfig eth0 | grep ‘inet addr:’ | cut -d’:’ -f2 | awk ‘{ print $1}’
* 特定日期发送邮件的数量:
$ cat /var/log/maillog | grep “status=sent” | grep “May 25” | wc -l
* 在进程列表中找出正在运行的进程/守护进程:
ps -ef | grep mysql
* 您还可以通过它关注cpu/内存的使用率。就像下面的命令输出,您可以看到Plesk的统计进程占用了超过18%的cpu:
root@myserver ~]# ps aux | grep statistics
root 8183 18.4 0.0 58384 2848 ? D 04:05 3:00 /usr/local/psa/admin/sbin/statistics
————————-