没有Unix管理员就无法生存的工具


Answers:



34

我知道有些人不能没有...

  • tee-允许同时写入STDOUT(标准输出)和文件。非常适合查看信息并将其记录下来供以后使用。

  • top-UNIX的任务管理器,对系统进行了很好的概述。

  • tail -f-允许您在文件增长时查看附加的数据,非常适合监视服务器上的日志文件。

  • grep-全局正则表达式打印,非常适合在系统中搜索文件中的数据。

  • df-报告当前文件系统的磁盘使用情况。

  • du-报告特定文件/目录的磁盘使用情况。

  • 更少-需要查看手册页!对于以易于查找的方式查看命令输出也很有用。

  • vim / Emacs / nano / pico / ed-无论您选择哪种文本编辑器,都要自己解释为什么需要它。


对于那些不知道的人,“更少”是“更多”的更新版本。更多的限制,因为您只能向前移动一个文件,而更少的也可以向后滚动。啊,幽默... :-)
伊恩·霍尔德

8
更少的另一个有用但鲜为人知的功能是,您始终可以使用“ v”命令开始编辑当前正在查看的文件。助记符是“ vi”的“ v”。
dr-jan 2009年

如果您不喜欢moreless,可以随时尝试most
drybjed

我现在首选的PAGER实际上是w3m。它具有较少的所有功能,并且可以兼作文本模式的Web浏览器:-)我还使用了bash函数在只读模式下使用vim(例如,这种方式我得到了漂亮的彩色diff)。bash函数仅用于决定是否提供“-”(用于读取标准输入)(如果我们正在分页文件)。像魅力一样工作,但手册页上的nroff确实会大
罢工

1
htop是的“更好”版本top
亚历山大·伯德

26

lsof来确定哪些进程正在使用文件或目录(在试图找出阻止设备挂载的原因时很有用)

netstat来确定哪些进程正在使用网络连接(在尝试找出哪个守护程序绑定到特定端口时特别有用)


1
如果您拥有lsof,则不需要netstat。只需使用lsof -i
vartec,

lsof -n是我最喜欢的调用。我管这到grep削下来
西蒙斯

19

学习所有基本工具,但学习Perl。

Perl是处理文本的理想选择,由于un * x运算符存在于文本文件,管道,输入和输出中,因此Perl非常适合。

额外的好处是Perl是跨平台的,如果您必须在Windows框上做一些工作,那么您已经拥有一种易于安装的语言(只需将Perl目录放在服务器上)。

按照这种思路,也可以使用Cygwin。如果您是un * x管理员,并且必须在具有ls,rm,grep,sed,tail等的Windows框(甚至是台式机)上工作,则可以在切换操作系统时节省大量时间。


18
  • sed
  • awk

现代系统脚本的被遗忘的祖父。我知道Perl得到了大部分的爱(以及Bash脚本,Python,Ruby和[在这里插入您喜欢的脚本语言]),并且不要误会我,我爱Perl。我几乎每天都使用它。

但是sed和awk不应被遗忘,忽略或忽略。在很多情况下,sed和awk是完成这项工作的最佳工具。快速的示例是使用sed进行命令行过滤,以及使用awk进行快速且脏的日志处理。两者都可以在Perl中完成,但是需要更多的工作和开发时间。


13

rsync,尤其是与ssh配合使用。它允许简单高效地在主机之间复制文件。没有ssh和rsync,我们如何应对?:-)


12

网猫。

  • 测试TCP服务是否正在侦听。
  • 针对纯文本协议(例如SMTP)执行事务。
  • 机器之间的快速不安全数据传输。
  • Telnet客户端仿真。

正如他们所说,该网络是瑞士军刀。


我最近开始使用socat作为netcat的替代产品,我为它为您提供的众多选择感到惊讶。尽管有很多令人恐惧的开关和奇怪的语法,但绝对值得一试。
Marcin 2010年

12

面对现实-迟早您也会与网络打交道。mtrtcpdumptshark对于查看正在发生的事情非常有用。


9

对于快速脚本,自动化等:

  • 重击
  • 佩尔

要连接到您的* NIX服务器:

  • 打开SSH(Linux客户端)
  • 腻子(Windows客户端)

+1……真的很棒,尤其是Perl。* nix,Windows或Mac,我无法想象没有它会做什么。
John Gardeniers

9

我使用了已经列出的大多数工具,但是这里还没有人提到过:

人偶 -用于自动执行系统管理任务的系统



6

大多数标准答案都包含在其他答案中,因此我将使用非标准答案:

  • htop-非常适合流程管理;
  • pinfo — lynx,类似于浏览器的信息和手册页。

6

我还没有提到的一些便捷工具:

  • dstat --nocolorCPU,磁盘,网络使用情况概述)
  • iftop(网络流量的动态概览)
  • ccze(很好的彩色日志文件)
  • ssh隧道(有时可能有用;请参阅手册; -R)
  • 期望(自动交互,健谈的对话界面,如果您不方便,那就很好了)

+1“ tail -f <文件> | ccze” =读取日志文件的惊人方式。

+1expect
亚历山大·伯德

dstat为+1。最佳替代vmstat,iostat等。
Christopher Cashell

5

集群SSH

ClusterSSH通过单个图形控制台窗口控制多个xterm窗口,以允许命令通过ssh连接在多台服务器上交互运行。


...并且因为ClusterSSH是用Perl编写的,所以也许您应该学习Perl。
布拉德·吉尔伯特

ClusterSSH和GNU屏幕之间有什么区别?还是相同概念的不同实现?
亚历山大·伯德


4

pv:显示可以重定向的长操作的进度。http://www.ivarch.com/programs/pv.shtml

有用的是,您想要监视需要花费很多时间的内容,例如通过网络复制/压缩原始块设备(这是我修改8Gb上网本的偏执狂备份方式,然后再修改诸如文件系统设置之类的主要内容的方法)。

另外:我将对上面的人提到的ssh,rsync,screen,htop和netcat进行第二次投票-所有这些投票都比PV重要,但PV尚未提及。实际上,在将物料运入或运出Netcat时,PV通常是有用的添加。


pv可以是一个方便的工具,但请注意不要过度使用它。通过数据传递绝对会对性能产生影响(所有数据必须通过另一个程序传递)。在我的上一份工作中,我们做了很多日志处理。其中一个人决定开始将pv放入所有日志处理脚本中,直到我们发现它为他们增加了大约15%的处理时间。现在,它仅用于少于几分钟的作业,或具有现有资源限制(例如,穿越缓慢的网络连接)的作业。
Christopher Cashell

克里斯托弗(Christopher)说得好,尽管我从未见过它会导致多达15%的性能变化(然后,我使用的大多数pv是磁盘或网络I / O绑定,而不是CPU /内存绑定)。相同的观点也是反对过度使用的关键cat(我有时有时在不需要猫时使用cat只是为了使事情从左到右很好地读取,但是通过管道和上下文切换来复制额外的内存中数据可能会有一个错误。可衡量的性能影响)。
David Spillett

是的,我也做同样的事情。我大部分的过度cat使用都来自以开头cat foo,然后点击“向上”箭头,然后添加| [command]到我的前一行。我知道将猫放在其中会给我带来(小的)性能损失,但是与重写/重新键入be相比,将其保留下来需要更少的精力[command] < foo。与(大多数)临时命令行工作无关,但对于脚本也不是理想的选择(与我的想法相同pv,我猜)。
Christopher Cashell

4

ssh,Vim,htop,su,Python,ls,cd,screen,du,tar :)



3

一些以前没有提到的:

  • 头/尾
  • 差异
  • pstree
  • 柏油
  • gzip / bzip

+1 pstree非常漂亮。
林2009年

3

焦油管!

将tar的输出传递到另一个实用程序,在同一盒上运行的tar或通过SSH运行的tar是我最喜欢的老式Unix移动,它用于将文件从一个位置移动到另一个位置。

这也为您提供了Windows风格的选项,可以将一个文件夹复制到另一个文件夹,并以源目录和目标目录中的所有文件结束。




3

使用Bash的“可编程完成”功能可以使这些工具中的大多数功能更加强大-因此,您可以使用Tab键完成命令行选项之类的功能,或者使用“ apt-get install”说出软件包的名称。它还会限制您用制表符填写相关文件的内容-例如,“ unzip”将仅完成受支持的存档文件。

这确实是杂项-如果您从未尝试过,您可能只需要摆弄.bashrc:

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
 fi

在Ubuntu和Debian上当然是这样。您可能需要在某些Linux发行版上获得该软件包。



2

我想提一些忽略的事情。

  • vim -d分屏控制台diff,可以很容易地查看文件中的差异
  • pdsh使您可以轻松地在任意数量的系统上以串行或并行方式运行命令(我是集群管理员。没有它,我将无法运行。)
  • nmon就像是裂口。它使您对单个屏幕上的系统正在发生的事情有一个很好的了解。您可以实时查看磁盘I / O,网络I / O CPU使用率和内存使用率。在对系统进行概要分析时,至少要玩一个真正有趣的事情。

哦,我忘了提,在编写脚本时,我相信您应该始终使用Korn。我讨厌Korn(不是乐队。我爱乐队:-P),但是到处都是。您可以采用脚本并将其在Solaris,AIX和Linux之间移动,而不必担心管理员是否可以正常安装Bash。


2

有时非常方便的一种工具是nohup。我使用它来运行使用远程SSH客户端持续很长时间的脚本。


2

man-阅读手册页。

elinks-要检查google,请确保我无法记住所有内容。

并注意细节和坚韧,因为没有它们,我只会浪费时间。


+1注重细节和韧性
cop1152'4

2

屏幕是必须的,尤其是具有良好的.screenrc文件时。我将其配置为可视地显示我所在的窗口,并可以使用Ctrl + Arrow在它们之间移动。对于单个ssh会话和多个shell,它可以节省生命。



2

我喜欢AWK,也喜欢命令行上的“ for”。

特别是要建立我要运行的命令列表,然后一次执行所有命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.