The Sudonomicon
An Introduction to Unix Systems for the Cautious and Weary
Many think they know Unix. Few realize that what they know is just a shell. Beneath it lie mysteries both bewildering and wonderful: ports, processes, permissions, files that are not files, and components built atop other, older components that occasionally rise to the surface like ancient sea creatures believed long extinct.
Like such creatures, Unix will outlive those who mock it. Welcome, then, to a world in which the strange will become familiar, and the familiar, strange. Welcome, thrice welcome, to Unix systems programming.
-
Please see the website to view the current version of this tutorial.
-
Contributions are very welcome: please see the contributors' guide for background and these issues for items where assistance would be most appreciated. Please also see our license for terms of use, and note that all contributors are required to abide by our Code of Conduct.
This lesson notes and working examples for instructors to use as a starting point. We do not expect novices with only basic Python and Unix experience to be able to learn from this on their own. As a musical analogy, these notes are the chord changes and melody; we expect instructors to create an arrangement and/or improvise over the material when delivering it. Please see Teaching Tech Together for background.
Syllabus
- Introduction: who this is for and what it covers
- The Filesystem: how to manage files, directories, and their stranger kin
- Processes: how to create, signal, and interact with running programs
- Running Jobs: how to do work on demand
- HTTP: how to move data from place to place
- Authentication: how to tell who someone is
- Virtualization: how and why to pretend you have lots of computers
- Conclusion: where we've been and what comes next
Appendices
Start where you are
Use what you have
Help who you can