Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm wondering about tools that are powerful and that most system administrators either don't know about or don't use (but should).

Thus, things like sudo, vi, emacs, dtrace, ps, and top are out. I have some ideas but I just hate to skew the statistics...

I'll just wait and see if anyone mentions my favorites.

share|improve this question

closed as not a real question by Chris S Feb 26 '12 at 20:07

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

7  
There are so many 'what tools' questions, do we really need another? –  Zoredache Jun 6 '09 at 9:49
4  
I just have to ask: if no one's heard of a tool, then how will it get upvotes? –  quux Jun 7 '09 at 2:52
2  
Please mention one tool per answer. –  Cristian Ciupitu Aug 4 '09 at 14:18

40 Answers 40

I already mentioned this tool in another answer on SF.
sysv-rc-conf

DESCRIPTION:
sysv-rc-conf gives an easy to use interface for manag‐ ing "/etc/rc{runlevel}.d/" symlinks.

alt text

If you have ubuntu : sudo apt-get install sysv-rc-conf

share|improve this answer

Ncat (part of Nmap 5) is a great replacement for Netcat, OpenSSL's s_client and telnet. I used it recently to test and verify an HTTPS connection over IPv6.

share|improve this answer

HTOP as yet another TOP. For Windows; PortQueryUI as a replacement for NMAP.

share|improve this answer

vnstat comes in handy - a little traffic monitor that gives output in the same way as vmstat, e.g:

> eth1
> 
>            received:       1.40 TiB   (48.4%)
>         transmitted:       1.50 TiB   (51.6%)
>               total:       2.90 TiB   since 20.11.08
> 
>                         rx      |     tx      |   total
>         ------------------------+-------------+------------
>         yesterday      6.15 GiB |    8.50 GiB |   14.65 GiB
>             today      6.98 GiB |    4.77 GiB |   11.75 GiB
>         ------------------------+-------------+------------
>         estimated      7.82 GiB |    5.35 GiB |   13.17 GiB
share|improve this answer

DBAN

Excellent bootable CD (or floppy) for completely wiping the contents of a hard drive. I use it in two ways:

  1. Zeroing out a hard drive before installing or reinstalling an OS.
  2. Securely wiping a hard drive before shelving it or destroying it.

It's great, and it's easy to use. It runs in about an hour on most of the disks I have ever tried it on, it may require more time for terabyte-class drives, I'm not sure.

This is one example of a good tool that performs one function and performs it right.

share|improve this answer

tcping

From the author: "tcping.exe is a small (Win32) console application that operates similarly to 'ping', however it works over a tcp port."

It's one of the best (OSI Layer 3+) ways to determine whether a host is powered on and connected to the network.

share|improve this answer

dsh

Distributed SHell. With dsh you can perform a command via ssh on multiple servers. I find it quite handy when doing a lot of the same things on a serverfarm, at least when it's not complicated. For instance, doing a reboot of the whole farm is just 'dsh --all reboot'. I wouldn't recommend it for using it interactively. With dsh you can make lists of servers, like a list of all your webservers or all servers located in .uk, and only perform the action on that list.

ClusterSSH

Sort of the same, it spawns multiple ssh sessions and you can input in multiple sessions at the same time. It's extreme usefull when you've got interactive commands, like aptitude dist-upgrade. I found this very usefull when upgrading a serverfarm from etch to lenny.

share|improve this answer

PuTTy connection Manager! Tabbed Putty!

http://puttycm.free.fr/

alt text

share|improve this answer

Here is a few tools I have come across:

SYDI

Auto network documentation tool.

Orca

Messing with .msi files.

RichCopy

An advanced alternative to Robocopy.

ImgBurn

Best free burning software hands down.

PowerGUI

A nice PowerShell editor.

Your Brain!

A lot of people seem to forget they have one.

share|improve this answer

Another set of tools I am surprised isn't used more - or heard of more - is Performance Co-Pilot. This is an amazing performance monitoring tool, and is available on a number of UNIX platforms. It is a distributed performance monitoring tool with historical recording and history recall - and with an amazing set of rules for alarms and so forth.

The rule engine allows you to do things like: notify me if 80% of the disks in the system are busy 90% of the time over the last 5 minutes; notify me if disk space grows at a rate of more than 1Gb/min; notify me if all processors are more than 75% busy during work hours; notify me of swap space used is increasing more than 5% per second for the last minute.

The tool also allows you to run the programs not only in real-time - even against hosts across the network - but also over an archive file acting as if it was in real-time.

share|improve this answer

sdiff. It displays two files in a split screen, showing the direction of change in the middle. It can also merge files interactively.

#sdiff -w 40 /etc/fstab /tmp/fstab
/dev/md0                /dev/md0
/dev/md1                /dev/md1
tmpfs                   tmpfs
devpts                  devpts
sysfs                   sysfs
proc                    proc
LABEL=SWAP-sdb2    |    /dev/sda2
LABEL=SWAP-sda2    <
share|improve this answer

I personally never go anywhere without UnxUtils. It's got a very large amount of Nix command line utilities. Some of my faves include: find, wget, and sed. And of course it's nice to not have to remember to type dir/copy/etc when I'm switching to a Windows machine after a long stint on a nix machine.

Throw in a batch file to quickly add it to your PATH and you're good to go.

http://sourceforge.net/projects/unxutils/

share|improve this answer

Windows

Although all SysInterals tools are great, the tools which helped me the most, were the monitoring tools:

Nothing's better to quickly determine, why something is not working.

(* Regmon and Filemon are integrated into Process Monitor for newer Windows versions)

share|improve this answer

It's not exactly a small cli tool as such, but I can heartily recommend Zenoss Core for network and system monitoring. It has restored my faith in monitoring-and-alerting software.

Where tools like Nagios, Cacti, etc. all have steep learning curves and seem to be good at only one thing, most often you have a need for an all-in-one solution, and Zenoss Core provides that for free (and Free).

It's hard to summarize, but basically it's an application with web-interface that autodiscovers devices on your network, then monitors tons of parameters, logfiles, ports, services, software, hardware, amount-of-pages-printed, etc. If anything fails or crosses a threshold you get an alert. It's easy to get started: enable/install snmp on each device you want to monitor, install Zenoss on a server, and open the web interface.

The free Core version is good enough for small and medium businesses, while the commercial Professional and Enterprise versions provide some advanced features.

If you ever thought about Nagios, Cacti or the like, be sure to evaluate Zenoss as well.

share|improve this answer

A lot of the suggestion above are Network related. But for a SysAdmnin:

htop - an interactive process viewer for Linux

This is htop, an interactive process viewer for Linux. It is a text-mode application (for console or X terminals) and requires ncurses. Tested with Linux 2.4 and 2.6.

Or Human Readable Top

http://htop.sourceforge.net/

share|improve this answer

One tool that I absolutely find indispensible is tcptraceroute [1] - this is a traceroute that does not use ICMP packets to perform timings, but uses TCP instead. This allows you to traceroute without regard to the typical blocking of ICMP: it works well.

share|improve this answer

iPerf

Iperf helps you run tests that measure maximum TCP and UDP bandwidth performance. It allows the tuning of various parameters and UDP characteristics reporting bandwidth, delay jitter, datagram loss: http://openmaniak.com/iperf.php


,And

MTR

MTR (My Trace Route) is also a pretty good tool. It combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool. Like traceroute except it gives more network quality and network diagnostic info. Leave running to get real time stats. Reports best and worst round trip times in milliseconds... It shows latency, jitter (average/best/worst): http://www.bitwizard.nl/mtr/

use:

mtr server.domain.com (or IP)

  • Add more fields with "O", type "LDRS NBAW V JMXI" and hit ENTER
  • Type "n" to toggle DNS Off/On

alt text

share|improve this answer
2  
+1 for mtr. Beats traceroute every time. –  David Pashley Jun 6 '09 at 9:15
1  
@sh-beta, or mtr -u ;) –  l0c0b0x Oct 30 '09 at 21:10

I'm going to go with a hacker tool, that might as well be useful to diagnose troubles: Cain. It can sniff a network and do a lot of attacks(arp poisoning, man in the middle,etc) on a network as well as breaking(or recovering) passwords.

What better way to know your network is secure.

share|improve this answer

Programmable Bash completion functions. Make life less error-prone. They're not that hard to write.

Some of the less obvious options to GNU grep, especially --color, -P, and -o.

My standard quick reporting one-liner:

grep something /some/logfile | sort | uniq -c | sort -n

Simple frequency analysis from a logfile:

grep something /some/log | grep -o '^... .. ..:..' | uniq -c

(adjust the second bit for how granular you want the frequency breakdown to be).

share|improve this answer

Odd answer in a way as it's not a tech tool directly - but I couldn't live without EverNote. It's a centralised note taking system, it has Windows, Mac, iPhone clients and lets you clip pits of web pages (with links to the original), has catergories, records images & voice notes.

It's what I use when my brain breaks :)

share|improve this answer

Windows PowerShell.

Until Windows PowerShell I always was envious about the powerful Linux shells.

share|improve this answer

I try not to use too many "nonstandard" tools. That is, tools that aren't easily available between operating systems or out of a particular distribution's software repository. I work on a Macbook, and I do testing on a variety of different Linux/Unix platforms.

That said, I like ohai(1). It is the node data collection tool used by Chef. It outputs data in JSON, so it can be manipulated with a variety of JSON parsing libraries. Since I work on Chef :-), it's a "nonstandard" tool available on every system I work with.

(1) Disclosure. I work for the company that wrote Chef and Ohai.

share|improve this answer

pv pipe viewer. Insert it between commands in a pipeline to get an indication how fast data is moving, how long till it finishes, etc. It can also act as a rate limiter.

share|improve this answer

All our apps are clustered, so cssh is pretty handy.

scp - only mentioned because so few people use it, relying on FTP instead. I've always loved the ability to grab files instantly from remote hosts. Secure, quick, and doesn't need a dedicated daemon running.

share|improve this answer

fldiff is a graphical diff program

share|improve this answer

iftop, this gives a much better output than ntop in my opinion.

share|improve this answer

Multitail is a must. Monitor multiple files on one screen. Can also follow file names instead of descriptors.

alt text

share|improve this answer
2  
Nice, but how is that different than running the standard tail -f in two windows using the GNU screen utility? –  Mei Jun 8 '09 at 15:32

Facter is a particular favourite.

It's frequently just considered as part of the larger Puppet configuration management framework, but extremely useful in its own right; giving a consistent cross-platform way of finding out core system information. Great in shell scripts, essentially.

For example:

  facter operatingsystem => ubuntu
  facter lsbdistcodename => hardy
  facter domain => mydnsdomain.com

It's also very easy to extend with your own (or other people's) 'facts', eg:

  facter local_postgresql_port => 5434
  facter has_hardware_raid => LSI
share|improve this answer

Unix centric answer (simple tools) :

  • ntop (can't believe I haven't seen this yet)
  • tcpdump/snoop
  • double recommendation for sar
  • rsync (life would suck more than anything without it)
share|improve this answer

Windows: Nbtstat (has a variety of tricks, but -A to get the machine name of a remote IP can be really handy assuming you're in an environment where permissions will let this work)

All of the sysinternals tools, (process explorer, debug view, etc...). Particularly debug view, you'd be surprised how many server programs write interesting/useful things to the debug log and that's the only way I know to view it. Those are must-haves though.

Unix: strace/ktrace/truss Are my favorite tools (best non-obvious use, if a there's a process running that has it's stderr redirected to /dev/null and you don't want to stop it, monitor the calls to write on fd2.

lsof: (list of open files) I always forget about this one, but when you need it, you need it.

share|improve this answer
6  
+1 for lsof - it's great –  Dennis Williamson Jun 6 '09 at 16:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.