Description

RHCSA Red Hat Enterprise Linux 10: Training and Exam Preparation Guide, Fourth Edition provides comprehensive, in-depth coverage of all objectives for the RHCSA EX200 exam based on RHEL 10. This book is strategically organized to take you from fundamental concepts to advanced system administration through a structured, logical progression.
What You Will Find Inside:
• 22 Chapters of Progressive Learning: The book begins with building your lab environment and learning essential Linux concepts and commands, and advances through critical topics including user and group administration, software management, system initialization, storage (partitions, LVM, filesystems, and swap), networking, and security (firewalls, SELinux).
• Proven Learning Aids:
oStep-by-Step Exercises: Guided, hands-on procedures with screenshots of actual commands and outputs.
oDIY Challenge Labs: End-of-chapter labs that test your comprehensive understanding without provided solutions, building problem-solving resilience.
oReview Questions & Answers: To help you self-assess your grasp of each chapter’s key concepts.
oExam Tips, Notes, and Warnings: Highlight crucial information, common pitfalls, and best practices.
• Final Preparation Tools: Four full-length practice exams in the appendices simulate the real RHCSA testing environment, allowing you to gauge your readiness.
This Book Is Designed For:
• RHCSA 10 exam candidates using it as a self-study guide.
• Students and instructors in formal training courses (RH124/RH134 equivalents).
• IT professionals seeking a structured desktop reference for RHEL 10.
• Administrators new to RHEL who need a clear, practical introduction.

CERTIFICATION RESOURCES

https://www.redhat.com/en/services/training/ex200-red-hat-certified-system-administrator-rhcsa-exam

EXAM INFO AND OBJECTIVES

The Red Hat Certified System Administrator (RHCSA) exam (EX200) is a performance-based test conducted on a live system running Red Hat Enterprise Linux 10. Your exam environment will consist of two RHEL 10 virtual machines where you will perform all tasks. This is a closed-book exam; no external resources, including the internet, personal devices, or printed materials, are permitted. Access is limited to documentation and manual pages installed on the exam VMs.

The official exam objectives (62 in total as of this writing) are the definitive source for exam content and are subject to change. For the most current list, always refer to:
http://www.redhat.com/training/courses/ex200/examobjective

There are no formal prerequisites to attempt the RHCSA certification.

This book provides comprehensive coverage of all official exam objectives. The following list enumerates each objective and directs you to the corresponding chapter for detailed study.

Understand and Use Essential Tools

  1. Access a shell prompt and issue commands with correct syntax (chapter 2)
  2. Use input-output redirection (>, >>, |, 2>, etc) (chapter 7)
  3. Use grep and regular expressions to analyze text (chapter 7)
  4. Access remote systems using ssh (chapters 1 and 20)
  5. Log in and switch users in multiuser targets (chapter 6)
  6. Archive, compress, unpack, and uncompress files using tar, gzip, and bzip2 (chapter 3)
  7. Create and edit text files (chapter 3)
  8. Create, delete, copy, and move files and directories (chapter 3)
  9. Create hard and soft links (chapter 3)
  10. List, set, and change standard ugo/rwx permissions (chapter 4)
  11. Locate, read, and use system documentation including man, info, and files in /usr/share/doc (chapter 2)

Manage Software

  1. Configure access to RPM repositories (chapters 10 and 11)
  2. Install and remove RPM software packages (chapter 11)
  3. Configure access to Flatpak repositories (chapter 12)
  4. Install and remove Flatpak software packages (chapter 12)

Create Simple Shell Scripts

  1. Conditionally execute code (use of: if, test, [], etc.) (chapter 8)
  2. Use Looping constructs (for, etc.) to process file, command line input (chapter 8)
  3. Process script inputs ($1, $2, etc.) (chapter 8)
  4. Processing output of shell commands within a script (chapter 8)

Operate Running Systems

  1. Boot, reboot, and shut down a system normally (chapter 14)
  2. Boot systems into different targets manually (chapter 14)
  3. Interrupt the boot process in order to gain access to a system (chapter 13)
  4. Identify CPU/memory intensive processes and kill processes (chapter 9)
  5. Adjust process scheduling (chapter 9)
  6. Manage tuning profiles (chapter 14)
  7. Locate and interpret system log files and journals (chapter 14)
  8. Preserve system journals (chapter 14)
  9. Start, stop, and check the status of network services (chapter 14)
  10. Securely transfer files between systems (chapter 20)

Configure Local Storage

  1. List, create, and delete partitions on MBR and GPT disks (chapter 15)
  2. Create and remove physical volumes (chapter 15)
  3. Assign physical volumes to volume groups (chapter 15)
  4. Create and delete logical volumes (chapter 15)
  5. Configure systems to mount file systems at boot by Universally Unique ID (UUID) or label (chapter 16)
  6. Add new partitions and logical volumes, and swap to a system non-destructively (chapters 15 and 16)

Create and Configure File Systems

  1. Create, mount, unmount, and use vfat, ext4, and xfs file systems (chapter 16)
  2. Mount and unmount network file systems using NFS (chapter 18)
  3. Configure autofs (chapter 18)
  4. Extend existing logical volumes (chapters 15 and 16)
  5. Diagnose and correct file permission problems (chapter 4)

Deploy, Configure, and Maintain Systems

  1. Schedule tasks using at and cron (chapter 9)
  2. Start and stop services and configure services to start automatically at boot (chapter 14)
  3. Configure systems to boot into a specific target automatically (chapter 14)
  4. Configure time service clients (chapter 19)
  5. Install and update software packages from Red Hat Network, a remote repository, or from the local file system (chapters 10 and 11)
  6. Modify the system bootloader (chapter 13)

Manage Basic Networking

  1. Configure IPv4 and IPv6 addresses (chapter 17)
  2. Configure hostname resolution (chapter 19)
  3. Configure network services to start automatically at boot (chapter 14)
  4. Restrict network access using firewall-cmd/firewall (chapter 21)

Manage Users and Groups

  1. Create, delete, and modify local user accounts (chapter 5)
  2. Change passwords and adjust password aging for local user accounts (chapters 5 and 6)
  3. Create, delete, and modify local groups and group memberships (chapter 6)
  4. Configure superuser access (chapter 6)

Manage Security

  1. Configure firewall settings using firewall-cmd/firewalld (chapter 21)
  2. Manage default file permissions (chapter 4)
  3. Configure key-based authentication for SSH (chapter 20)
  4. Set enforcing and permissive modes for SELinux (chapter 22)
  5. List and identify SELinux file and process context (chapter 22)
  6. Restore default file contexts (chapter 22)
  7. Manage SELinux port labels (chapter 22)
  8. Use Boolean settings to modify system SELinux settings (chapter 22)

SAMPLE CHAPTER

Viewing and Monitoring Processes with ps

A system can have hundreds or thousands of processes running concurrently, depending on its purpose. You can view and monitor these processes using various native tools such as ps (process status) and top (table of processes). The ps command offers plentiful switches that influence its output, whereas top is used for real-time viewing and monitoring of processes and system resources.

Without options, the ps command lists only the processes associated with the current terminal session:

The above output returns the elementary information about processes in four columns. These processes are tied to the current terminal window. It exhibits the PID, the terminal (TTY) where the process was spawned, the cumulative time (TIME) the system CPU has given to the process, and the name of the actual command or program (CMD) being executed.

Some common options that can be used with the ps command to generate detailed reports include -e (every), -f (full-format), -F (extra full-format), and -l (long format). A combination of -e, -F, and -l (ps  -eFl) produces a comprehensive process report, though this level of detail may be unnecessary for most situations. Other common options such as –forest and -x will report the output in tree-like hierarchy and include the daemon processes as well. Check the manual pages for the command for additional options and their usage.

Here are a few sample lines from the beginning and end of the output when ps is executed with -e and -f flags on the system.

This output is displayed across eight columns showing details about every process running on the system. Table 9-1 describes the content type of each column.

Column Description
UID User ID or name of the process owner
PID Process ID of the process
PPID Process ID of the parent process
C Processor utilization
STIME Process start time (date if process started over 24 hours ago)
TTY Controlling terminal. “pts“ indicates pseudo terminal, “tty” indicates physical terminal, “?” represents no controlling terminal (daemon processes), and “Console” represents the graphical console.
TIME Aggregated execution time for a process
CMD The command or program name

Table 9-1 ps Command Output Description

The ps output above pinpoints several daemon processes running in the background. These processes are not associated with any terminal, which is why there is a ? in the TTY column. Notice the PID and PPID numbers. The smaller the number, the earlier it is started. The process with PID 0 is started first at system boot, followed by the process with PID 1, and so on. Each PID has an associated PPID in column 3. The owner of each process is exposed in the UID column along with the name of the command or program under CMD.

Information for each running process is recorded and maintained in the /proc file system, which ps and many other commands reference to acquire desired data for viewing.

The ps command output may be customized to view only the desired columns. For instance, if you want to produce an output with the command name in column 1, PID in column 2, PPID in column 3, and owner name in column 4, run it as follows:

Make sure the -o option is specified for a user-defined format and there is no white space before or after the column names. You can add or remove columns and switch their positions as needed.

Another switch to look at with the ps command is -C (command list). This option is used to list only those processes that match the specified command name. For example, run it to check how many sshd processes are currently running on the system:

The output exhibits multiple background sshd processes.

Viewing and Monitoring Processes with top

The other popular tool for viewing process information is the top command. This command displays real time, continuously updated statistics, which can help identify performance issues on the system. A sample of a running top session is shown below:

Press q to quit.

The top output may be divided into two major portions: the summary portion and the tasks portion. The summary area spreads over the first five lines of the output, and it shows the information as follows:

Line 1: Indicates the system uptime, number of users logged in, and system load averages over the period of 1, 5, and 15 minutes. See the description for the uptime command output in Chapter 02 “Initial System Interaction”.

Line 2: Displays the task (or process) information, which includes the total number of tasks running on the system and how many of them are in running, sleeping, stopped, and zombie states.

Line 3: Shows CPU utilization percentages: us (user processes), sy (system processes), id (idle), wa (I/O wait), hi (hardware interrupts), si (software interrupts), and st (steal time).

Line 4: Shows memory usage: total physical memory, free memory, used memory, and memory used for buffers and cache.

Line 5: Exhibits swap (virtual memory) usage that includes the total amount of swap allocated to the system, and how much of it is free and in use. The “avail Mem” shows an estimate of the amount of memory available for starting new processes without using the swap.

The second major portion in the top command output showcases the details for each process in 12 columns as described below:

Columns 1 and 2: Pinpoint the process identifier (PID) and owner (USER)

Columns 3 and 4: Display the process priority (PR) and nice value (NI)

Columns 5 and 6: Depict amounts of virtual memory (VIRT) and non-swapped resident memory (RES) in use

Column 7: Shows the amount of shared memory used by the process (SHR)

Column 8: Represents the process status (S)

Columns 9 and 10: Express the CPU (%CPU) and memory (%MEM) utilization

Column 11: Exhibits total CPU time used by the process (TIME+)

Column 12: Identifies the process name (COMMAND)

While in top, you can press “o” to re-sequence the process list, “f” to add or remove fields, “F” to select the field to sort on, and “h” to obtain help. top is highly customizable. See the command’s manual pages for details.

Listing a Specific Process

While ps and top show detailed process information, the pidof and pgrep commands are used to quickly find the PID of a specific process. These commands have switches to modify their behavior; however, their most elementary use is to pass a process name as an argument to view its PID. For instance, to list the PID of the rsyslogd daemon, use either of the following:

Both commands produce an identical result if used without an option.

Listing Processes by Ownership

A process can be listed by its owning user or owning group. You can use the ps command for this purpose. For example, to list all processes owned by user1, specify the -U (or -u) option with the command and then the username:

The command lists the PID, TTY, TIME, and CMD name for all the processes owned by user1. You can specify the -G (or -g) option instead and the name of an owning group to print processes associated with that group only:

The above output reveals all the running processes with root as their owning group.

ERRATA

No errors are reported