在pipe理Unix或类Unix服务器之后,你觉得你不能没有什么工具(命令行)?
GNU屏幕 – 在pipe理大量系统时不可或缺的是打开十几个terminal窗口。
有些我知道我不能没有…
tee – 允许同时写入STDOUT(标准输出)和一个文件。 非常适合查看信息并稍后logging。
top – UNIX的任务pipe理器给出了系统的一个很好的概述。
tail -f – 允许您在文件增长时查看附加数据,非常适合监视服务器上的日志文件。
grep – 全局正则expression式打印,非常适合在系统中search文件中的数据。
df – 报告当前文件系统的磁盘使用情况。
du – 报告某个文件/目录的磁盘使用情况。
不需要查看手册页! 对于以易于查找的方式查看命令的输出也是有用的。
vim / Emacs / nano / pico / ed – 不pipe你select的文本编辑器是什么,自我解释为什么需要它。
lsof来确定哪些进程正在使用文件或目录(当试图找出是什么阻止设备被卸载时很有用)
netstat来确定哪些进程正在使用networking连接(当试图找出哪个守护进程被绑定到某个端口时特别有用)
学习所有的基本工具,但学习Perl。
Perl是处理文本的理想select,由于un * x操作符存在于文本文件,pipe道,input和输出中,所以Perl非常适合。
另外一个好处是Perl是跨平台的,如果你必须在windows上做一些工作,那么你已经知道了一个很容易安装的语言(只要在服务器上放一个Perl目录)。
在那个思路上,也得到Cygwin。 如果你是一个un * x的pipe理员,并且必须在有ls,rm,grep,sed,tail等的windows系统上(甚至是你的桌面)工作,在切换操作系统的时候可以节省很多时间。
现代系统脚本被遗忘的祖父。 我知道Perl获得了大部分的爱(以及Bash脚本,Python,Ruby和[在这里插入你最喜欢的脚本语言]),不要误解我的意思,我喜欢Perl。 我几乎每天都在使用它。
但是sed和awk不应该被遗忘,忽略或忽视。 对于很多情况,sed和awk是最好的工具。 快速示例是使用sed进行命令行筛选,以及使用awk快速和肮脏的日志处理。 两者都可以在Perl中完成,但是需要更多的工作和开发时间。
rsync,尤其是与ssh一致。 它允许从主机到主机简单高效地复制文件。 我们如何处理没有ssh和rsync? 🙂
Netcat的。
networking瑞士军刀,正如他们所说。
面对它 – 迟早你会处理networking。 mtr , tcpdump和tshark对于查看正在发生的事情非常有用。
对于快速脚本,自动化等:
要连接到您的* NIX服务器:
我使用了已经列出的大部分工具,但是这里还没有人涉及:
Puppet – 系统pipe理任务自动化系统
对于脚本:
大多数标准的都包含在其他的答案中,所以我会去非标准的:
我还没有看到一些方便的工具:
ClusterSSH
ClusterSSH通过单个graphics控制台窗口控制许多xterm窗口,允许通过ssh连接交互地在多个服务器上运行命令。
vmstat 1
给你一个很好的系统行为的概述。
PV:显示可以redirect的长操作的进度。 http://www.ivarch.com/programs/pv.shtml
有用的话,你想监视一些将要花费时间的东西,比如通过networking复制/压缩一个原始块设备(这是我对8Gb上网本进行偏执狂备份之前,修改任何类似于文件系统设置的重大事项)。
另外:我会第二次投票ssh,rsync,screen,htop和netcat,正如上面提到的人 – 所有这些都比pv更重要,但是pv还没有被提及。 事实上,当pipe道连接到netcat或者从netcat时,pv通常是一个有用的补充。
ssh,Vim,htop,su,Python,ls,cd,screen,du,tar 🙂
sudo
。
说真的, tail -f
是有用的。
以前没有提到的一些:
焦油pipe!
将tar的输出pipe道输送到另一个工具,tar运行在同一个盒子上,或者tar运行在SSH上,这是我最喜欢的旧式Unix移动方式,用于将文件从一个地方移动到另一个地方。
这也为您提供了Windows风格的选项,即将一个文件夹复制到另一个文件夹,并以源目标和目标目录中的所有文件结束。
zsh作为一个shell
这对grml.org的扩展/安装尤其有效。
iotop是一个类似于顶级的程序,用于监视对磁盘的I / O访问。
大多数这些工具使用Bash“可编程完成”function变得更加强大 – 因此您可以制表完成诸如命令行选项之类的东西,或者使用“apt-get install”来说明软件包的名称。 它也会限制你为相关文件选项卡填写的内容,例如“unzip”只能完成支持的档案文件。
它真的是笨蛋 – 如果你从来没有尝试过,你可能只需要捣鼓你的.bashrc:
if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
当然这在Ubuntu和Debian上也是如此。 您可能需要在某些Linux发行版上获取该软件包。
在这个类似的问题中可以find一些额外的答案
我想提一些被忽视的东西。
哦,我忘记提及,在编写脚本时,我相信你应该总是使用Korn。 我讨厌Korn(不是乐队,我喜欢乐队:-P),但实际上它到处都是。 您可以采取脚本,在Solaris,AIX和Linux之间移动脚本,而不必担心pipe理员是否有安装Bash的风格。
一个工具有时非常方便是nohup。 我用它来运行使用远程SSH客户端很长时间的脚本。
男人 – 阅读手册页。
elinks – 检查谷歌,因为我当然不能记住一切。
并注意细节和坚韧,因为没有它们,我只是浪费时间。
屏幕是必须的,尤其是一个好的.screenrc文件。 我把它configuration成在视觉上显示我所在的窗口,并且可以用Ctrl +箭头在它们之间移动。 对于单个ssh会话和多个shell而言,它是一个生命保护程序。
我喜欢AWK以及命令行上的“for”。
特别是build立一个我想运行的命令列表,然后一次执行它们。