What is the Linux Philosophy for SysAdmins?

0

Background

The Unix Philosophy is an important part of what makes Unix unique and powerful. Much has been written about the Unix Philosophy and the Linux philosophy is essentially the same as the Unix philosophy because of its direct line of descent from Unix.

The original Unix Philosophy was intended primarily for the system developers. Having worked with Unix and Linux for almost 30 years as of this writing, I have found that the Linux Philosophy has contributed greatly to my own efficiency and effectiveness as a SysAdmin. I have always tried to follow the Linux philosophy because my experience has been that a rigorous adherence to it, regardless of the pressure applied by a legion of Pointy-Haired-Bosses (PHB), will always pay dividends in the long run.

The original Unix and Linux Philosophy was intended for the developers of those operating systems. Although system administrators could apply many of the tenets to their daily work, many important tenets that address things unique to SysAdmins were missing. Over the years I have been working with Linux and Unix, I have formulated my own philosophy – one which applies more directly to the everyday life and tasks of the system administrator. My Philosophy is based in part upon the original Unix and Linux Philosophy, as well as the philosophies of my mentors.

My book, The Linux Philosophy for SysAdmin, is the result of my approach to system administration and the Linux Philosophy.

The Structure of the Philosophy

There are three layers to the Linux Philosophy for system administrators in a way that is similar to Maslow’s Hierarchy of Needs. These layers, shown in Figure 1, are also symbolic of our growth through progressively higher levels of enlightenment.

The bottom layer is the foundation – the basic commands and knowledge that we as SysAdmins need to know in order to perform the lowest level of our jobs. The middle layer consists of those practical tenets that build on the foundation and inform the daily tasks of the SysAdmin. The top layer contains the tenets that fulfill our higher needs as SysAdmins and which encourage and enable us to share our knowledge.

In the first and most basic layer of the Philosophy is the foundation. It is about “The Linux Truth,” data streams, Standard Input/Output (STDIO), transforming data streams, small command line programs, and the meaning of “everything is a file,” for example.

Figure 1: The hierarchy of the Linux Philosophy for SysAdmins.

The middle layer contains the functional aspects of the Philosophy. Embracing the command line, we expand our command line programs to create tested and maintainable shell programs that we save and can use repeatedly, and even share. We become the “lazy admin” and begin to automate everything. We use the Linux filesystem hierarchy appropriately and store data in open formats. These are the functional portions of the Philosophy.

The top layer of the Philosophy is about enlightenment. We begin to progress beyond merely performing our SysAdmin tasks and just getting the job done, our understanding of the elegance and simplicity in the design of Linux is perfected. We begin striving for doing our own work elegantly, keeping solutions simple, simplifying existing but complex solutions, and creating usable and complete documentation. We begin to explore and experiment simply for the sake of gaining new knowledge. At this stage of enlightenment, we begin to pass our knowledge and methods to those new to the profession and we actively support our favorite open source projects.

In my opinion it is impossible to learn about many Linux commands and utilities without learning about the structure and philosophy of Linux. Working on the command line requires such knowledge. At the same time, working on the command line engenders the very knowledge required to use it. If you use the command line long enough you will find that you have learned at least some about the intrinsic beauty and elegance of Linux without even trying. If you then follow your own curiosity about what you have already learned, the rest will be revealed.

Does that sound a bit Zen? It should because it is.

The Tenets

These are the tenets of the Linux Philosophy.

  1. Data streams are a universal interface
  2. Transforming Data Streams
  3. Everything is a file
  4. Use the Linux FHS
  5. Embrace the CLI
  6. Be the Lazy SysAdmin
  7. Automate everything
  8. Always use shell scripts
  9. Test early test often
  10. Use common sense naming
  11. Store data in open formats
  12. Use separate filesystems for data
  13. Make programs portable
  14. Use open source software
  15. Strive for elegance
  16. Find the simplicity
  17. Use your favorite editor
  18. Document Everything
  19. Backup everything – frequently
  20. Follow your curiosity
  21. There is no should
  22. Mentor the young SysAdmins
  23. Support your favorite open source project
  24. Reality Bytes

Final thoughts

Following the tenets of this philosophy has enabled me to work smarter, resolve problems faster, spend less time doing repetitive tasks, and leave things so that my future self or someone else, can easily pick up and maintain the network and its hosts.

If you’re interested in learning more about the Linux Philosophy for SysAdmins, I’ll be writing more about the individual tenets over the next few months.

Leave a Reply