Tested on
RHEL 10.2 (Coughlan)
Package
Multiple RHEL 10 base utilities (dnf, systemd, lvm2, firewalld, shadow-utils)
Applies to
RHEL 10, Rocky Linux 10, AlmaLinux 10, CentOS Stream 10, Fedora (objective overlap)
Privilege
Varies by task — most patterns need sudo or root
Man page
EX200 objectives (Red Hat)
Scope
Objective-organized RHCSA revision for RHEL 10—command patterns, key files, and verification steps with links to full lessons. Not a site-wide command index or timed exam simulation.
Use this page after you have worked through the RHCSA tutorial lessons. Each row gives a task pattern, a verification command, and where to read the full procedure. Commands assume you understand the flags—lab practice matters more than memorizing syntax alone.
RHEL 10 focus aligned to the live EX200 objective list
Configurations must survive reboot (--now, --permanent, /etc/fstab, enabled units)
For general Linux syntax outside RHCSA scope, use the Linux commands cheat sheet
Navigation and paths
Task
Command pattern
Verify
Lesson
Print working directory
pwd
Path matches expected location
Linux command line
Change directory
cd /path or cd ~user
pwd
Linux command line
List directory
ls -la path
Entries and permissions visible
Linux command line
Absolute vs relative paths
/etc/passwd vs ../file
readlink -f path
Filesystem hierarchy
File operations
Task
Command pattern
Verify
Lesson
Create empty file
touch file
ls -l file
File management
Create directory
mkdir -p dir
test -d dir
File management
Copy or move
cp -a src dst / mv src dst
ls -l dst
File management
Remove safely
rm file / rm -r dir
ls parent directory
File management
Edit text
vim file or nano file
cat file or :wq then diff
Edit text files
Redirection and pipes
Task
Command pattern
Verify
Lesson
Redirect stdout
cmd > file
cat file
Redirection and pipes
Append output
cmd >> file
tail file
Redirection and pipes
Pipe to filter
cmd | grep pattern
Expected lines only
Redirection and pipes
Save stderr
cmd 2> err.log
cat err.log
Redirection and pipes
Search and archives
Task
Command pattern
Verify
Lesson
Search file content
grep -E 'pattern' file
Matching lines
grep command
Recursive search
grep -r pattern /path
File:line output
grep command
Create tar archive
tar -czf archive.tgz dir/
tar -tzf archive.tgz
tar command
Extract archive
tar -xzf archive.tgz -C /dest
ls /dest
tar command
Compress with gzip
gzip file
gzip -t file.gz or ls -l file.gz
gzip command
Uncompress gzip
gzip -d file.gz
Original file restored
gzip command
Compress with bzip2
bzip2 file
bzip2 -t file.bz2 or ls -l file.bz2
bzip2 command
Uncompress bzip2
bzip2 -d file.bz2
Original file restored
bzip2 command
Links and permissions
Task
Command pattern
Verify
Lesson
Symbolic link
ln -s target linkname
ls -l linkname
Symbolic links
Hard link
ln target linkname
ls -li target linkname (same inode)
Symbolic links
Change mode
chmod 640 file
ls -l file
File permissions
Change owner
chown user:group file
ls -l file
File permissions
Diagnose permissions
ls -l path; namei -l path
Access or execute succeeds after chmod/chown
File permissions
Default permissions
umask / umask 022
touch t; ls -l t
umask
Documentation and remote access
Task
Command pattern
Verify
Lesson
Manual page
man command
Correct section opens
Linux command line
Keyword search
man -k keyword
Relevant pages listed
Linux command line
Info documentation
info command
Info page opens
Linux command line
Package documentation
ls /usr/share/doc/pkg*
Documentation listed
Linux command line
SSH login
ssh user@host
Shell on remote host
SSH command
Copy over SSH
scp file user@host:/path
File on remote
scp command
DNF, RPM and Flatpak
Task
Command pattern
Verify
Lesson
Search package
dnf search keyword
NEVRA in output
dnf command
Install package
sudo dnf install pkg
rpm -q pkg
dnf command
Install local RPM
sudo dnf install ./package.rpm
rpm -q package
dnf command
Upgrade all packages
sudo dnf upgrade
dnf check-update (no package updates listed)
dnf command
Remove package
sudo dnf remove pkg
rpm -q pkg fails
dnf command
List repos
dnf repolist
Enabled repos shown
dnf command
Configure repository
sudo dnf config-manager --add-repo URL or /etc/yum.repos.d/name.repo; sudo dnf makecache
dnf repolist
dnf command
Query installed RPM
rpm -qi pkg
Name, version, install time
rpm command
Which package owns file
rpm -qf /path/file
NEVRA line
rpm command
Verify package files
rpm -V pkg
No unexpected changes
rpm command
Flatpak remote
flatpak remote-add --if-not-exists name url
flatpak remotes
Flatpak
Install Flatpak app
flatpak install remote app
flatpak list
Flatpak
Remove Flatpak app
flatpak uninstall APP_ID
flatpak list
Flatpak
Bash Script Patterns
Short patterns only—full walkthroughs live in the scripting lesson.
Task
Pattern
Verify
Lesson
Shebang
#!/bin/bash as line 1
file script.sh shows bash
Bash shell scripting
Positional args
$1, $#, $@
echo "$@" in test run
Bash shell scripting
Test command status
if command; then ...; fi
Branch taken as expected
Bash shell scripting
File test
if [ -f file ]; then ...; fi
Branch behaves as expected
Bash shell scripting
Loop over arguments
for arg in "$@"; do ...; done
Each argument processed
Bash shell scripting
Read file lines
while IFS= read -r line; do ...; done < file
Each line processed
Bash shell scripting
Command substitution
var=$(command)
echo "$var"
Bash shell scripting
Exit status
command; echo $?
0 on success
Bash shell scripting
Running Systems and systemd
Task
Command pattern
Verify
Lesson
Reboot
sudo systemctl reboot
Host returns after boot
Boot and shutdown
Power off
sudo systemctl poweroff
System halts
Boot and shutdown
Change target (runtime)
sudo systemctl isolate multi-user.target
systemctl is-active multi-user.target
systemd targets
Set default target
sudo systemctl set-default multi-user.target
systemctl get-default
systemd targets
List processes
ps aux or ps -ef
PID and CMD columns
Process management
CPU-intensive processes
ps aux --sort=-%cpu | head
High %CPU PIDs at top
Process management
Memory-intensive processes
ps aux --sort=-%mem | head
High %MEM PIDs at top
Process management
Signal process
kill -TERM pid / kill -9 pid
Process gone from ps
Process management
Nice value
nice -n 10 cmd / renice -n 5 -p pid
ps -o pid,ni,cmd -p pid
nice and renice
Tuned profile
sudo tuned-adm profile throughput-performance
tuned-adm active
Tuned profiles
Journal logs
journalctl -u unit -e
Recent unit lines
journalctl
Persistent journal
Storage=persistent in /etc/systemd/journald.conf or drop-in; sudo systemctl restart systemd-journald
ls -ld /var/log/journal; after reboot journalctl --list-boots
Persistent journald
Manage service runtime
sudo systemctl start|stop|restart name
systemctl status name
systemctl
Start service now + boot
sudo systemctl enable --now name
systemctl is-active name; systemctl is-enabled name
systemctl
Root password recovery
Bootloader edit → rd.break workflow
Login as root after reboot
Reset root password
Local Storage and Filesystems
Task
Command pattern
Verify
Lesson
Block layout
lsblk -f
NAME, FSTYPE, MOUNTPOINT
GPT partitions
GPT partition
sudo parted /dev/vdb mklabel gpt then mkpart
parted /dev/vdb print
GPT partitions
Delete GPT partition
sudo parted /dev/vdb rm N
parted /dev/vdb print
GPT partitions
Create PV
sudo pvcreate /dev/vdb1
pvs
LVM
Add PV to existing VG
sudo vgextend vg0 /dev/vdb2
pvs; vgs
LVM
Remove empty PV from VG
sudo vgreduce vg0 /dev/vdb2; sudo pvremove /dev/vdb2
pvs
LVM
Create VG and LV
sudo vgcreate vg0 /dev/vdb1; sudo lvcreate -L size -n lv0 vg0
vgs; lvs
LVM
Delete LV
sudo lvremove /dev/vg0/lv0
lvs
LVM
XFS filesystem
sudo mkfs.xfs /dev/vg0/lv0
blkid /dev/vg0/lv0
Create and mount filesystems
ext4 filesystem
sudo mkfs.ext4 /dev/vg0/lv0
blkid /dev/vg0/lv0
Create and mount filesystems
VFAT filesystem
sudo mkfs.vfat /dev/vdb1
blkid /dev/vdb1
Create filesystem on partition
Mount once
sudo mount /dev/vg0/lv0 /mnt
findmnt /mnt
Create and mount filesystems
Unmount
sudo umount /mnt
findmnt /mnt empty
mount and umount command
Persistent mount
Add UUID=... or LABEL=... entry to /etc/fstab; sudo systemctl daemon-reload
sudo mount -a; findmnt
fstab UUID and labels
Swap LV
sudo mkswap /dev/vg0/swaplv; sudo swapon /dev/vg0/swaplv; add swap UUID to /etc/fstab
swapon --show; /proc/swaps
swap
NFS client mount
sudo mount server:/export /mnt/nfs
findmnt; df -h
NFS client
autofs map
Edit /etc/auto.master and map file
systemctl is-active autofs; ls trigger
configure autofs
Extend LV and FS
lvextend -r -L +size /dev/vg0/lv0
lvs; df -h
Extend LVM
If a PV still holds allocated extents, run pvmove before vgreduce.
Scheduling, Time and Bootloader
Task
Command pattern
Verify
Lesson
User crontab
crontab -e — min hour dom mon dow cmd
crontab -l
crontab
System cron
File in /etc/cron.d/ or /etc/cron.daily/
Run at scheduled time / ls
crontab
One-shot at time
echo 'cmd' | at 14:30
atq; job runs
at command
systemd timer
.timer + .service units; systemctl enable --now timer
systemctl list-timers
systemd timers
Chrony sync
pool/server in /etc/chrony.conf; chronyc sources
chronyc tracking
Chrony
Boot target (runtime)
sudo systemctl isolate graphical.target
systemctl is-active graphical.target
systemd targets
GRUB default kernel
sudo grubby --set-default-index=N
grubby --default-index
GRUB2 on RHEL
GRUB kernel params
sudo grubby --args="param" --update-kernel ALL
grubby --info=ALL
GRUB2 on RHEL
Networking
Task
Command pattern
Verify
Lesson
Connection profile
nmcli con mod name ipv4.method manual ipv4.addresses ... ipv4.gateway ...
nmcli con show name
nmcli
IPv6 on profile
nmcli con mod name ipv6.addresses ... ipv6.method manual
nmcli con show name
Configure IPv6
Activate connection
sudo nmcli con up name
nmcli dev status
nmcli
Static hostname
sudo hostnamectl set-hostname host.example.com
hostnamectl
Hostname resolution
Hostname mapping
/etc/hosts
getent hosts name
Hostname resolution
DNS servers
nmcli con mod NAME ipv4.dns "IP1 IP2"; sudo nmcli con up NAME
cat /etc/resolv.conf
Hostname resolution
Listening ports
ss -tulnp
Expected LISTEN rows
ss command
Routing table
ip route
Default via gateway
nmcli
firewalld service
sudo firewall-cmd --permanent --add-service=http; sudo firewall-cmd --reload
firewall-cmd --permanent --list-services; firewall-cmd --list-services
firewalld
firewalld port
sudo firewall-cmd --permanent --add-port=8080/tcp; sudo firewall-cmd --reload
firewall-cmd --permanent --list-ports; firewall-cmd --list-ports
firewalld
firewalld zone
sudo firewall-cmd --permanent --zone=public --change-interface=eth0; sudo firewall-cmd --reload
firewall-cmd --get-active-zones
firewalld
Remote check
ssh peer 'ss -tlnp' or curl http://peer
Service reachable from peer
SSH command
Use --permanent for exam-style firewalld changes, firewall-cmd --reload, then verify both permanent and runtime lists (--list-services / --list-ports).
Users, Groups and Privileged Access
Task
Command pattern
Verify
Lesson
Create user + home
sudo useradd -m -s /bin/bash name
id name; getent passwd name
User and group management
Set password
sudo passwd name
sudo passwd -S name
User and group management
Modify user
sudo usermod -aG group name
id name
User and group management
Delete user + home
sudo userdel -r name
getent passwd name fails
User and group management
Group create
sudo groupadd group
getent group group
User and group management
Modify group
sudo groupmod -n new old
getent group new
User and group management
Delete group
sudo groupdel group
getent group group fails
User and group management
Password aging
sudo chage -M 90 -W 7 name
chage -l name
chage command
sudo rule
visudo — user ALL=(ALL) ALL
sudo -l -U user
sudo command
Switch user
su - name
id; new home
su command
Default file mode
umask 027 in /etc/profile or ~/.bashrc
New file mode from touch
umask
SELinux and SSH Keys
Task
Command pattern
Verify
Lesson
SELinux mode (runtime)
sudo setenforce 0|1
getenforce
SELinux modes
SELinux mode (persistent)
Set SELINUX=permissive|enforcing in /etc/selinux/config
grep '^SELINUX=' /etc/selinux/config; getenforce after reboot
SELinux modes
File context
ls -Z path
user:role:type:level
SELinux modes
Process context
ps -efZ or ps -eZ
Process type/context visible
SELinux modes
Restore context
sudo restorecon -Rv path
ls -Z matches system_u:object_r:...
SELinux modes
Persistent context
sudo semanage fcontext -a -t type 'path(/.*)?' then restorecon
matchpathcon path
SELinux modes
Port label
sudo semanage port -a -t http_port_t -p tcp 8080
semanage port -l | grep 8080
SELinux ports and booleans
Boolean
sudo setsebool -P httpd_can_network_connect on
getsebool httpd_can_network_connect
SELinux ports and booleans
Generate key
ssh-keygen -t ed25519 -f ~/.ssh/keyname
ssh-keygen -l -f ~/.ssh/keyname
SSH key authentication
Install public key
ssh-copy-id -i ~/.ssh/keyname.pub user@host
ssh -i ~/.ssh/keyname user@host
SSH key authentication
Verification and Persistence Checklist
Before you move on—or before you leave an exam task—run through this list:
Check
Question
Command exit status
Did the last command succeed (echo $? or obvious output)?
Service active
Does systemctl is-active name show active when a daemon is required?
Enabled at boot
Does systemctl is-enabled name show enabled when persistence is required?
Config on disk
Is the change in the correct file (/etc/fstab, nmcli profile, firewalld --permanent, visudo, cron file)?
Survives reboot
After reboot, do findmnt, systemctl, getent, or remote tests still pass?
Remote view
Can a second host reach the service (ssh, curl, nfs, ping as appropriate)?
Permissions
Do ls -l modes and owners match the task (chmod, chown, umask)?
SELinux
Do ls -Z labels and booleans allow the service (restorecon, setsebool -P)?
Common Exam-Time Command Patterns
Generic habits that apply across objectives—no speculation about exam mechanics:
Situation
Pattern
Unfamiliar flag
man command or command --help
Before editing config
sudo cp file file.bak
Before restart
sudo command -t or config test when available (sshd -t, apachectl configtest)
After failure
journalctl -xe, journalctl -u unit, or tail relevant log
Repeat prior command
history or !n
Wrong disk or user
lsblk, id, getent passwd, nmcli con show before destructive commands
RHCSA cheat sheet — interview corner
How is this RHCSA cheat sheet different from the Linux commands cheat sheet?
The Linux commands cheat sheet is a broad command index across administration topics. This page is organized by EX200-style objective areas on RHEL 10—each row ties a task to verification and a full lesson in the RHCSA course.
Should I memorize every command on this page?
No. Use it for revision after labs. EX200 rewards repeatable workflows you have practiced—storage, users, networking, SELinux—not verbatim memorization of every flag.
What should I do after reviewing this cheat sheet?
Re-run lesson exercises on your lab VMs, especially storage, users, networking, and SELinux. Return to individual lessons when a row exposes a gap, and confirm the live
EX200 objectives before you schedule the exam.
Does this page replace the official Red Hat objectives?
No. Confirm the live
EX200 objectives on Red Hat's site before you schedule the exam.
References