RHCSA verification cheat sheet
One command per kind of task, answering the only question that matters: will this still be true after the grader reboots? Grouped by subsystem, with the persistent form beside the runtime one that looks identical and is not.
- OSRHEL 10.0 (Coughlan)
- Kernel6.12.0-55.9.1.el10_0
- dnf4.20.0
- Flatpak1.16.0
- Commands15
- Reviewed23 August 2026
Before you reboot - run all four
-
findmnt --verifyA bad fstab entry stops the boot and loses every other task. This is the most important command on the sheet.
bash Example session sudo findmnt --verify --verbose 2>&1 | tail -4 [ ] UUID=a1137778-982a-4d14-9e64-5ef60b92ba3a translated to /dev/mapper/rhel-swap [ ] source /dev/mapper/rhel-swap exists [ ] FS type is swapSuccess, no errors or warnings detected -
mount -aEvery fstab entry actually mounts. The rehearsal for what boot will do.
bash Example session sudo mount -a && echo "mount -a exit=$? - every fstab entry mounts cleanly"mount -a exit=0 - every fstab entry mounts cleanly -
systemctl --failedCatches a unit you broke an hour ago and forgot. Empty is the answer you want.
bash Example session systemctl --failed --no-legend; echo "failed units above (empty is what you want)"failed units above (empty is what you want) -
grubby --info=DEFAULTA bootable kernel with sane arguments. Verify kernel-argument tasks here, not in /proc/cmdline.
bash Example session sudo grubby --info=DEFAULT | grep -E "^(kernel|args)"; echo "--- a bootable kernel with sane arguments"kernel="/boot/vmlinuz-6.12.0-55.9.1.el10_0.x86_64"args="ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=a1137778-982a-4d14-9e64-5ef60b92ba3a rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"--- a bootable kernel with sane arguments
The same change, two ways
-
firewall-cmd --list-services vs --list-services --permanentCompare the two lists. If they differ, something changes at the next reload - here the rule vanished without a reboot at all.
bash Example session sudo firewall-cmd --add-service=ftp >/dev/null; echo "runtime only:"; sudo firewall-cmd --list-services; sudo firewall-cmd --list-services --permanent; sudo firewall-cmd --reload >/dev/null; echo "after reload:"; sudo firewall-cmd --list-servicesruntime only:cockpit dhcpv6-client ftp sshcockpit dhcpv6-client sshafter reload:cockpit dhcpv6-client ssh -
semanage boolean -l -C (NOT getsebool)getsebool reports the RUNNING value and cannot tell you whether it persists. The -C list only holds what is written down.
bash Example session sudo setsebool httpd_enable_homedirs on 2>/dev/null; getsebool httpd_enable_homedirs; sudo semanage boolean -l -C 2>/dev/null | grep -c httpd_enable_homedirs || echo "0 - not persistent"; sudo setsebool -P httpd_enable_homedirs off 2>/dev/nullhttpd_enable_homedirs --> on1 -
getenforce vs sestatus | grep "Mode from config"Runtime mode and boot mode are separate. A task saying "set SELinux enforcing" usually means both.
bash Example session sudo setenforce 0; getenforce; sestatus | grep "Mode from config"; sudo setenforce 1; getenforcePermissiveMode from config file: enforcingEnforcing -
systemctl is-enabled <units...> and is-active <units...>Both, for every service you touched. They take several units at once, so this is one command at the end.
bash Example session systemctl is-enabled chronyd sshd crond firewalld NetworkManager auditd 2>&1 | tr '\n' ' '; echoenabled enabled enabled enabled enabled enabled
One command per subsystem
-
id <user> · passwd -S <user> · chage -l <user>Groups, password state and ageing. `passwd -S` reporting P means a usable password; LK means locked.
bash Example session echo "user: id X + passwd -S X + chage -l X"user: id X + passwd -S X + chage -l X -
lsblk -f · lvs · vgsFilesystems and labels, logical volumes, free extents. Three commands, whole storage picture.
bash Example session echo "storage: lsblk -f + lvs + vgs"storage: lsblk -f + lvs + vgs -
ls -Z <path> · semanage fcontext -l -C · semanage port -l -CThe label on the file, and the local policy modifications you made. The -C forms show your work and nothing else.
bash Example session echo "selinux: ls -Z path / semanage fcontext -l -C / semanage port -l -C"selinux: ls -Z path / semanage fcontext -l -C / semanage port -l -C -
crontab -l · systemctl list-timers · atqThree schedulers, three listings. A task naming "at, cron and timer units" can mean any of them.
bash Example session echo "schedule: crontab -l / systemctl list-timers / atq"schedule: crontab -l / systemctl list-timers / atq -
swapon --show + grep swap /etc/fstabActive swap AND an fstab line for it. Either alone is half the answer.
bash Example session swapon --show=NAME,SIZE,PRIO; grep -c swap /etc/fstabNAME SIZE PRIO/dev/dm-1 3.9G -21
What it costs to check
-
systemd-analyzeA full boot on this machine is 27 seconds. Two reboots is under two minutes of the 180 you have.
bash Example session systemd-analyze | head -2Startup finished in 4.272s (kernel) + 1.554s (initrd) + 7.327s (userspace) = 13.154smulti-user.target reached after 2.935s in userspace. -
time <command>Create, format and remove a logical volume: under two seconds. The work is fast; the thinking is slow.
bash Example session time (sudo lvcreate -y -L 200M -n lvtime vgdata >/dev/null 2>&1 && sudo mkfs.xfs -q -f /dev/vgdata/lvtime >/dev/null 2>&1 && sudo lvremove -y vgdata/lvtime >/dev/null 2>&1) 2>&1 | tail -3 real 0m0.054suser 0m0.010ssys 0m0.009s
No command matches that search.