The third edition of Unix Power Tools (UPT), by Shelley Powers, Jerry Peek, Tim O'Reilly, and Mike Loukides, and Analytical Network and System Administration (ANSA), by Mark Burgess, both deal with systems administration, but the two books cover very different areas. UPT is UNIX®-specific, extremely detailed, and indispensable for any systems administrator. ANSA is operating system- and platform-neutral, very thorough, and of interest mainly to administrators with a strong theoretical computer science background and at least a few years of advanced mathematics under their belts.
If ANSA sounds like a tough book to tackle, it is. While UPT is for everyone in the systems administration business, from beginner to guru, ANSA is a textbook for a third- or fourth-year undergraduate university course, and even at the post-graduate level it would not be out of place.
Note for readers outside the U.S. with possibly different university course structures: in the U.S., engineering and computer science degrees are normally obtained in a four-year undergraduate program, followed by advanced graduate programs for degrees such as M.S. and Ph.D., which require anywhere from two to six more years. ANSA would fit in the third or fourth year of the undergraduate program.
It might seem unusual to review a book like ANSA in a general column like this one, but you will see as we look closer that ANSA is not a typical textbook, and for a systems administrator, it is in fact a milestone book by virtue of its comprehensive analysis of the field. ANSA contrasts nicely with UPT, which is why I chose to review the two together.
UPT is a terrific book. Now in its third edition, it has only improved with age. Old material was removed, and all that's left is good, up-to-date information that's immediately applicable to UNIX systems administration. Below are brief summaries of each part, because summarizing in greater detail for a 1,000 page book is simply impossible in this column.
"Part I, Basic Unix Environment," is a gentle introduction to the world of UNIX. The flow is somewhat broken up by all the short chapters, so beginners may find it hard to follow. Later in the book, short chapters are okay, but in an introduction I would have preferred a more continuous story. Part I covers the basics of UNIX: files, processes, users, and the help system.
"Part II, Customizing Your Environment," is great fun. If you like to tinker (and I hope you do), you'll find all the fun tips in here. Customize your prompt, your login settings, your terminal settings, etc. This is essential information for anyone who's into UNIX, and I guarantee you will find something new here.
"Part III, Working with Files and Directories," together with Part IV, is the heart of the book. Every possible way you can look up, search inside of, or manipulate a file or directory is listed, analyzed, and explained. The short chapters really come into their own here: you can look up any particular task, such as "quick finds in the current directory." Typically, the chapters are half a page to two pages long, which is the perfect length for tips-oriented chapters.
"Part IV" is definitely more technical, going into great detail about UNIX file editing. Emacs and vi are the two editors of interest here, with batch editing and "not quite" editing in the mix as well. The chapters on sorting are very useful to anyone who needs to sort data; the elegance, speed, and agility of the UNIX text-based sorting utilities put modern GUIs to shame.
"Part V, Processes and the Kernel," is the beginning of the advanced material in UPT. While it might seem intimidating to a beginner (starting with the unfortunate word "kernel," which has so little resonance with non-technical beginners), this is not difficult material when studied gradually. Do the examples and you'll see how simple processes really are. Starting a process in the background and controlling it later gives you a much better experience in UNIX.
"Part VI, Scripting," is advanced material. You learn how to write scripts, manipulate the shell history, and generally be more efficient. The goal of computers, after all, is to make us more efficient -- sometimes people forget that. Modern GUIs with their point-and-click interfaces can actually be impediments to getting work done, when compared to scripts and text-based interfaces. A GUI is not written to be scripted (there are exceptions, but the very idea of a GUI presupposes a human element, the "user"). "Point and click" means the user spends time pointing and clicking. Script a series of repetitive actions and you'll never spend time clicking on a bunch of buttons to do the same actions. This is why Part VI is important: the full power of UNIX is finally revealed, and all the previous material connects with scripting glue.
Regular expressions and wildcards are separate sections in Part VI. They are important to almost every other chapter of the book, because regular expressions are part of many, many UNIX utilities and all the major shells. The sections are crisp and well written, a joy to read.
"Part VII, Extending and Managing Your Environment" follows. By now (page 787) your eyes might be glazed over, but the material is just short tips rather than any coherent narrative. File backups and archiving and Perl and Python are covered in decent detail. The Perl and Python chapters are rushed by necessity, but at least they should generate interest in the real deal.
"Part VIII, Communication and Connectivity," is of interest for most readers. While the parts on redirecting I/O and TCP/IP connectivity are interesting, the section on UNIX Devices is probably too esoteric for those not into UNIX internals. Connecting to Windows® has its own section, which is nice but not very extensive. The pattern at this point is that the chapters are introductions to advanced material rather than full expositions; it would be impossible to do otherwise in a book that's already over 1,000 pages long. Consider these chapters previews of the good stuff, and turn to the standalone books and tutorials on and off the Web for more information.
"Part IX, Security," wraps up the book. It is detailed and useful. The chapters on SSH are particularly useful, but I guarantee you that reading any chapters here will improve your UNIX knowledge tremendously.
Analytical Network and System Administration
Mark Burgess is known as the author of Cfengine, a terrific system administration tool. His books and papers are numerous, and ANSA is a good standalone textbook on the topic of systems administration.
ANSA's basic premise is that the analysis of computer systems should be treated with the same rigor as the study of physical or chemical systems. This is a simple idea but surprisingly rare in today's computer field, where heuristic (meaning "educated guess") approaches seem to be favored. The above-reviewed UPT is a good example of the solving-by-example school of thought for systems administration; while not wrong, any improvements will be incremental rather than fundamental as is the case with the systematic ANSA approach.
Fourier analysis and statistics show up by chapters 3 and 4, and from that point on, a college-level mathematics background is required for following the book. Up to that point, chapters 1 through 4 cover the general scientific method, experiment and observation, and simple systems and definitions.
Chapter 5 on Sets, States, and Logic explains how configurations can be mapped to system states; modifications of the system are transitions between those states. This concept becomes more and more important in ANSA, and is useful for understanding the Cfengine software as well.
Chapter 6 digresses to talk about diagrams. While this may seem tangential to a mathematical analysis of computer systems, it is a useful way to think about them and is done haphazardly today at best. Connectivity, maxima and minima, and other graph and matrix concepts are explained here.
With chapters 7 and 8, the concept of system configurations as states is expanded further. The key word again and again is "change" -- nothing is ever static in computer systems unless you pull the plug, and thus applying change turns out to be crucial to maintaining a system's steady state.
Chapter 9 talks about information. Entropy and information flows are explained; the compressibility of information and Shannon's theorem are also mentioned. There are surprising applications of these concepts in the maximum entropy distribution, which tells us how to build "least clustered" networks according to the Boltzmann distribution. Such networks tend to have fewer single points of failure, of course, and thus are of significant practical interest.
Chapter 10 is about stability. This is an important concept with very specific applications in systems administration. Regions of stability in a graph (remember that system configurations can be expressed as nodes in a graph of a state machine) are explained. Random node removal is examined together with ways to defend the stability of the system against it. The Hurst exponent in 10.10 can show if a system is stable when scaled -- that is, if its behavior depends on recent or long-ago events. This can be very helpful when analyzing the traffic of a Web server, for example.
Chapters 11 and 12 cover resource networks and task management. The analysis in these chapters deals with system capacity and responsiveness.
Chapter 13 digresses from the analysis to make some definitions about system architectures. Then, chapter 14 discusses system normalizations, which basically seek to reduce the complexity of a system by eliminating dependencies.
Chapter 15 discusses system integrity. A central theorem to Cfengine is obtained in 15.2.2: simply put, do N operations N times and you'll converge to the desired state as long as the operations are convergent and commutable themselves. This is an important statement of Cfengine's philosophy of applying small changes iteratively until the system converges to a stable, desired state.
In chapters 16 through 18, system maintenance, fluctuations, and faults are covered. Fault trees, degrees of knowledge (applying Bayes' theorem), and the general issues of "what can go wrong, and how do we know it" are addressed.
Chapter 19 is about decision and strategy: what is the winning strategy in the game of administrator versus attacker, for example? Nash equilibria are in 19.8, followed by detailed analysis in terms of computer systems and various examples.
UPT is a great book for any UNIX user, beginner or guru. I recommend it wholeheartedly.
ANSA is a terrific book for systems administration theory. It has few practical applications, because it concentrates on the theoretical underpinnings of computer maintenance and analysis. If you are interested in the convergent approach to systems administration, look into the Cfengine software before reading ANSA and you'll understand ANSA more easily.
Learn
-
Read the books discussed in this article:
- Unix Power Tools (O'Reilly, October 2002) by Shelley Powers, Jerry Peek, Tim O'Reilly, and Mike Loukides
- Analytical Network and System Administration (John Wiley & Sons, April 2004) by Mark Burgess
-
Ted covers two other important texts in his review of Randal Schwartz's Perls of Wisdom and Higher-Order Perl in "Cultured Perl: Perl books, Part 1" (developerWorks, March 2006) .
-
Read Ted's reviews of Perl 6 Essentials, Perl Cookbook, and Perl Template Toolkit in Cultured Perl: Three essential Perl books (developerWorks, May 2004).
-
Read all of Ted's Perl articles in the Cultured Perl series on developerWorks.
-
In the tutorial "Living in Emacs" (developerWorks, July 2002), learn the basics of using this popular modeless text editor with many powerful features.
-
In the tutorial "vi intro -- the cheat sheet method" (developerWorks, December 2000), get up to speed quickly with vi, a favorite visual editor.
-
In the developerWorks Linux zone, find more resources for Linux® developers.
-
Stay current with developerWorks technical events and Webcasts.
Get products and technologies
-
Check out the Cfengine site for more information on the system administrator's best friend.
-
CPAN, the Comprehensive Perl Archive Network, is the main source for Perl modules, scripts, documentation, and more.
-
Order the SEK for Linux, a two-DVD set containing the latest IBM trial software for Linux from DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.
-
With IBM trial software, available for download directly from developerWorks, build your next development project on Linux.
Discuss
-
Check out developerWorks
blogs and get involved in the developerWorks community.

Teodor Zlatanov graduated with an M.S. in computer engineering from Boston University in 1999. He has worked as a programmer since 1992, using Perl, Java, C, and C++. His interests are in open source work on text parsing, 3-tier client-server database architectures, UNIX system administration, CORBA, and project management.