In this module, let's talk more about some of the details that are used with commands. First, let's talk about system monitoring. There are many command-line utilities used in Linux routinely to monitor the system's performance. There are straightforward everyday utilities, such as top, which lets you manage CPU usage and see what processes are taking up the most resources on your system. There are other programs which check memory usage, input/output usage, network performance, et cetera. There are also graphical interfaces to monitoring performance. Two well-known ones that ship on every system are: GNOME System Monitoring, ksysguard, and then there are other alternative and more robust methods, which are available from Linux distributions with a graphical interface. But as I said, most Linux administrators tend to do a lot of work at the command line for monitoring performance and looking at various logs, et cetera, that are on the system. The second thing we want to talk about here is how the kernel handles so-called kernel modules, and how it manages devices. One of the strengths of the Linux kernel is that you can add things at runtime and remove them when you no longer need it. These are called kernel modules. It's a very robust system in Linux, and we'll talk about how that works. A kernel module might have to be added to enable a new device that's added to the system, that maybe is plugged into a USB port, for example, or it might be something like a new network protocol that isn't actually running right now, but the capability is there if you load a module. As far as device management goes, it's pretty complicated to make sure that when a device is added to the system or found at boot, that it's handled properly, and Linux uses something called udev, or user device as a facility in order to enable this. We'll talk about how that works, and we'll do some exercises to give you some practical experience with it. So, let's begin.