Most people drive cars and don't know how they work. However, a professional truck driver will save time, trouble and money by knowing and being able to tweak an engine. The same analogy fits computer hobbyists versus system administrators. The former can get by with packaged software, but the latter will be better off knowing how to tweak or even build software, according to Arnold Robbins, author of
Linux Programming By Example: The Fundamentals from Addison-Wesley/Prentice Hall PTR.
In this interview, Robbins explains why and how programming skills can make a good admin a stellar admin, and he offers a basic curriculum for those who want to bone up on programming. He also weighs in on why programs written in GNU are better than those written in Unix.
Does a system administrator need to have some knowledge of programming when working in a Linux and/or Linux/Unix enterprise environment? Why, or why not?
Robbins: It depends upon how you define programming. Shell programming and some basic familiarity with the standard Unix tools are absolutely essential. Although many vendors provide GUI tools for admin and that works OK for desktop systems, I'm of the old school and feel that understanding what's going on under the hood is really necessary to manage things when they go wrong, or if you need to do something that the GUI's author didn't anticipate.
I don't think it's essential to have C programming and Unix API knowledge, but it certainly will help. If you understand how the shell and other programs do their job at the C level, it'll help you form the correct "mental model" of how the tools work. As I said, shell and scripting skills, such as awk or perl, would be valuable. Python is also a good tool for the tool box.
Actual experience and a knowledgeable mentor are handy, too.
Could you offer examples of programming tasks that an IT manager or system administrator could do to make everyday administration easier?
Robbins: At the shell level, things like daily checks for the 10 biggest consumers of disk space or CPU time, programs to check for connections that have been idle for too long (if you have a modem pool, for instance), and scripts to manage incremental backups.
Big sites almost always need some solution for which there is no product that is 100% perfect out of the box.
In your book, you suggest that learning programming should be viewed as a "10-year" project. Could you offer a course guide for the time-strapped sys admin?
Robbins: Start with Bourne shell programming. Avoid the csh like the plague, it should never be used for scripting.
- The Unix toolset. These two are usually covered in most shell programming books.
- System Administration, including filesystem management, including backups; users and groups and permissions; process and load management; and, network configuration and administration.
- Security, including local system security (setuid programs, Trojans, etc.); network security; vendor patch/update management; and, some system for producing local documentation, such as troff, TeX or Open Office.
- C programming and the Unix APIs
In the first chapter of your new book, you say that GNU are programs better than standard Unix programs. Why?
Robbins: The primary reason is because they are
Here's where the C programming skills are helpful: If I'm an administrator and a tool isn't working the way I think it should, I can go in and fix it myself instead of having to find someone to do it for me, possibly for pay.
A secondary reason is that they're often designed and implemented better, from a technical standpoint. One of the guiding principles of GNU software development is "no arbitrary limits" and this leads to more robust software.
Share your expertise! Write a tip. Win a prize! Send us a technical tip or description of a best practice, or tell us about how you fixed an IT problem. Every one who sends a tip will receive a recently-published IT book. The writer of the top-ranked tip of every batch of 10 entered and published will receive a $100 gift certificate. E-mail your tip today!
This was first published in June 2004