I use TLPI as an optional text for my CS Operating Systems course! It's honestly the best resource for a comprehensive look at the innards of Linux. I actually even snip select pages for lectures.
catfood's point about a 2nd edition is worth unpacking:
The syscall ABI itself is remarkably stable, backward compact is practically Linux's religion, but the conceptual model has shifted substantially.
Namespaces and cgroups went from obscure subsystems to the foundational abstraction containers run on.
io_uring rewrote the async I/O model.
eBPF changed how you think about observability and policy enforcement.
One of the greatest texts ever written. Ok maybe just one of my favorites. I wouldn't mind a 2nd edition though... surely the system call interface has changed a bit since 2010.
One of the best books I've read. It helped me lead meetings and solve complex problems where other engineers struggled.
This is the curriculum I wish my university’s CS program had back in the day.
My favorite book about systems programming on UNIX systems is the book by the late Stevens, but this book more detailed, Linux-specific and if updated (after 16 years, in which Linux did not stand still), could steal the crown from Stevens.
I guess it is more appealing to current university students, than reading about UNIX Lion's commentary, Minix, BSD design, and other academix books with UNIX like implementations.
We did not get as recommend or required reading in a course. But the professor did recommend it to me outside of class.
Excited to see there is a new edition coming.
What a horrible selection for a university textbook! It doesn't get trivially updated every year to prevent reuse and reselling, so how is this supposed to generate more profit for the booksellers? /s
Seriously though, this book is fantastic, and far better than typical course textbooks. I'm honestly a little surprised that universities would select it.
So much of practical CS is abiding by standards created by solo programmers in the past.
My university frowned on any industry-related classes (i.e. teaching software engineering tools vs. theoretical CS), but I was fortunate enough to know a passionate grad student who created a 1-credit seminar course on this exact topic.
This course covered CLIs/git/Unix/shell/IDEs/vim/emacs/regex/etc. and, although I had experience with Linux/git already, was invaluable to my early education (and adoption of Vim!).
It makes sense that this isn't a core topic, as a CS education should be as pure as possible, but when you're learning/building, you're forced to live within an operating system and architecture that are built on decades of trade-offs and technical debt.