Book review – How Linux Works 2nd edition
Imagine having a tool that can automatically detect JPA and Hibernate performance issues. Wouldn’t that be just awesome?
Well, Hypersistence Optimizer is that tool! And it works with Spring Boot, Spring Framework, Jakarta EE, Java EE, Quarkus, or Play Framework.
So, enjoy spending your time on the things you love rather than fixing performance issues in your production system on a Saturday night!
The book’s author is Brian Ward, who has a Ph.D. in computer science and has written several books about Linux Kernel, Vim, and VMware. The book has 17 Chapters and covers many Linux aspects, from the Operating System architecture to Bash scripting and Package Managers.
The first chapter is a very nice introduction to Linux architecture. You are going to learn about Linux abstraction layers and the clear difference between the kernel and the userspace.
This second chapter is very useful for Linux beginners to accommodate with some basic, yet extremely useful, Linux commands, utilities and shell pipes and filters. One very important aspect of Linux is the directory hierarchy, which you definitely have to know it if you don’t want to get lost.
The third chapter is dedicated to Linux devices. You’ll learn about the standard file-based device interface and the most useful dd command. The chapter covers in details all device types, from hard disks to USB and terminals.
The fourth chapter talks about disk partitions and various Linux File Systems. You’ll learn how to mount a device and how to partition it for both data and swap. The inode concept is very well explained too.
Chapter 5 and 6
The fifths and the six chapters are more advanced and so they require more time to understand what’s happening during kernel boot process and the user space initialization.
This chapters is dedicated to system configuration. You’ll learn about the content of etc/ folder, as well as user management and cron tasks. This chapter is very useful for Linux beginners since you’ll interact with them on a regular basis.
This chapter is one of the most important ones since it covers everything you need to know about Linux processes. You will learn to use ps and lsof for both process and thread monitoring. From CPU to memory, you will learn that Linux offers a great variety of resource monitoring tools. Unless you are a .NET developer, there’s a great chance your applications get deployed on a Linux server, so skipping this chapter is not an option.
This chapter is an introduction to networking and you can skip it if you already know networking basics. You can also learn about Linux routing, but unless you are a system administrator, you are not going to need this on your daily job.
While the previous chapter was a more theoretical one, the tenth chapter is one you don’t want to miss. You are going to learn about network monitoring, using lsof, tcpdump and
port scanning. The network security is also a good read for every programmer as well as the socket section. The Unix socket domains and the Inter-Process Communication (IPC) are very important aspects for every developer working with Linux.
Chapter 11 and 12
The eleventh chapter is dedicated to shell scripting and automating recurring tasks is not only a system administrator job. Learning a little about shell scripting can save you a lot of time and prevent accidental mistakes, so make sure you don’t skip it.
The twelfth chapter talks about file network access and the rsync section is very important since there’s a great chance you’ll have to use it sooner or later.
In this chapter, you are going to learn about user environment configurations for both login and remote sessions.
The fourteenth chapter is dedicated to Desktop environments, emphasizing the importance of X server and client utilities. You’ll also learn how to utilize window-based applications on a remote Linux server using X11 forwarding from within a SSH session.
Chapter 15 and 16
These chapters give you an introduction into C programming, from a Linux administration perspective. You will learn how to build a Linux package even without a package manager.
The last chapter wraps everything up and reiterates the importance of Linux for both servers and embedded devices. Linux might not be easy in other domains of activity, but as a developer, you have no excuse but to learn to use it.
I certainly recommend this book for every developer wanting to learn something more about Linux.
To master the command line, I also recommend the The Linux Command Line by William Shotts.