Linux-Commands-Cheat-Sheet A collection of common Linux commands for system navigation, file management, networking, and more.
Basic Commands Operators File and Directory Management File Permissions Screen Shutdown and Sleep User Management Package Management Cron Jobs and Scheduling Process Management System Monitoring Systemd Management Networking SSH Management Mail Management Kernel and Modules Management Boot, Bootloader (GRUB), and EFI Firmware Command Description pwd
Print the current working directory ls
List files in the directory cd <directory>
Change directory whoami
Display current user echo <text>
Print text to terminal history
Show command history
Command Description uname -a
Display detailed system information (kernel, hostname, etc.) uname -r
Show the kernel version hostname
Show or set the system hostname hostnamectl
Display or set the system's hostname and related settings uptime
Show how long the system has been running and system load whoami
Display the current user id
Show the current user’s ID and group information who
Show who is currently logged into the system w
Display who is logged in and what they are doing date
Show or set the system date and time cal
Display a calendar for the current month df -h
Show disk space usage in human-readable format du -h <directory>
Display the disk usage of files and directories in human-readable format du -sh <directory>
Display the total size of a directory top
Display real-time system resource usage and processes free -h
Show memory usage in human-readable format lscpu
Display CPU architecture information lsblk
List information about block devices (disks, partitions) dmesg
Display messages from the kernel ring buffer lsusb
List information about USB devices lspci
List information about PCI devices uptime
Display the system’s uptime and load averages last
Show the last logins of users uname -m
Show the machine hardware name (e.g., x86_64)
Operator Description ` ` (Pipe) >
Redirect output to a file, overwriting the file if it exists (echo "Hello" > file.txt
) >>
Redirect output to a file, appending if the file exists (echo "Hello" >> file.txt
) <
Redirect input from a file to a command (sort < file.txt
) 2>
Redirect error output to a file (command 2> error.log
) 2>&1
Redirect error output to standard output (command > file.txt 2>&1
) &
Run a command in the background (command &
) &&
Run the next command only if the previous command succeeds (command1 && command2
) ` ;
Run multiple commands in sequence (command1; command2; command3
) $(command)
Command substitution: use the output of a command as an argument (echo $(date)
) &>
Redirect both standard output and error output to a file (command &> output.log
)
File and Directory Management Command Description ls
List files and directories in the current directory ls -l
List files and directories with detailed information ls -a
List all files, including hidden files cd <directory>
Change to a specific directory cd ..
Move up one directory level pwd
Display the current working directory mkdir <directory>
Create a new directory rmdir <directory>
Remove an empty directory rm <file>
Delete a file rm -r <directory>
Remove a directory and its contents recursively rm -rf <directory>
Forcefully remove a directory and its contents cp <source> <destination>
Copy files or directories cp -r <source-directory> <destination>
Copy directories recursively mv <source> <destination>
Move or rename files and directories touch <file>
Create an empty file or update the timestamp of an existing file ln -s <target> <link>
Create a symbolic link (soft link) ln <target> <link>
Create a hard link cat <file>
Display the contents of a file less <file>
View the contents of a file page by page more <file>
View the contents of a file page by page (older thanless
) head <file>
Display the first 10 lines of a file tail <file>
Display the last 10 lines of a file tail -f <file>
Display the contents of a file in real-time (follow the file as it grows) find <directory> -name <filename>
Search for a file or directory by name find <directory> -type d -name <dirname>
Find directories matching a specific name find <directory> -type f -name <filename>
Find files matching a specific name grep "<pattern>" <file>
Search for a specific pattern in a file grep -r "<pattern>" <directory>
Search for a pattern recursively in a directory
Command Description ls -l
List files and show their permissions, owner, and group chmod <permissions> <file>
Change the permissions of a file or directory chmod 644 <file>
Set read/write for owner and read-only for group and others chmod 755 <directory>
Set read/write/execute for owner, read/execute for group and others chown <owner>:<group> <file>
Change the owner and group of a file or directory chown <owner> <file>
Change the owner of a file chgrp <group> <file>
Change the group of a file
Command Description screen
Start a new screen session screen -S <session_name>
Start a new screen session with a custom name screen -ls
List all active screen sessions screen -r <session_id>
Reattach to a detached screen session Ctrl + a + d
Detach from the current screen session screen -X -S <session_id> quit
Force quit a screen session Ctrl + a + k
Kill the current screen screen -x <session_id>
Attach to a running session shared by multiple users Ctrl + a + n
Switch to the next window in the screen session Ctrl + a + p
Switch to the previous window in the screen session Ctrl + a + c
Create a new window in the current screen session Ctrl + a + "
List all windows in the current session
Command Description shutdown now
Shut down the system immediately shutdown -h now
Halt the system immediately shutdown -r now
Restart the system immediately shutdown -h +<time>
Schedule shutdown after a specified time (e.g.,+10
for 10 minutes) shutdown -c
Cancel a scheduled shutdown reboot
Reboot the system halt
Halt the system without powering it off systemctl poweroff
Power off the system systemctl reboot
Reboot the system systemctl suspend
Suspend the system (sleep mode) systemctl hibernate
Hibernate the system systemctl hybrid-sleep
Hibernate and suspend the system pm-suspend
Suspend the system (ifpm-utils
is installed) pm-hibernate
Hibernate the system (ifpm-utils
is installed) pm-suspend-hybrid
Hibernate and suspend the system (ifpm-utils
is installed)
Command Description adduser <username>
Create a new user with home directory and default shell useradd <username>
Create a new user (minimal setup, no home directory by default) userdel <username>
Delete a user account userdel -r <username>
Delete a user account and their home directory passwd <username>
Change the password for a user chage -l <username>
Display password aging information for a user usermod -aG <groupname> <username>
Add a user to a group groups <username>
List groups a user is part of id <username>
Show user ID (UID), group ID (GID), and other group memberships deluser <username>
Remove a user from the system deluser <username> <groupname>
Remove a user from a specific group sudo <command>
Execute a command as the superuser su <username>
Switch to another user account (requires that user's password) who
Show who is logged in whoami
Display the current logged-in user last
Show last logins of users w
Display who is logged in and what they are doing finger <username>
Display detailed information about a user getent passwd
Display all users in the system vipw
Safely edit the/etc/passwd
file (user accounts) visudo
Safely edit the/etc/sudoers
file chown <owner>:<group> <file>
Change ownership of a file chmod <permissions> <file>
Change file permissions
Command Description groupadd <groupname>
Create a new group groupdel <groupname>
Delete a group gpasswd -a <username> <groupname>
Add a user to a group (alternative tousermod -aG
) gpasswd -d <username> <groupname>
Remove a user from a group newgrp <groupname>
Switch to a new group for the current session groups <username>
Display the groups a user belongs to getent group <groupname>
Show group entry in/etc/group
Account and Session Management Command Description chage -E <date> <username>
Set an account expiration date for a user chage -M <days> <username>
Set maximum number of days a password remains valid chage -m <days> <username>
Set minimum number of days before a password can be changed chage -I <days> <username>
Set the number of days after a password expires before an account is disabled faillog -u <username>
Show login failure statistics for a user faillog -r <username>
Reset failed login count for a user lastlog
Show the last login of all users pkill -u <username>
Terminate all processes owned by a user passwd -l <username>
Lock a user account (disallow login) passwd -u <username>
Unlock a user account nologin
Prevent a user from logging in by setting their shell to/sbin/nologin
Command Description apt-get update
Update package list apt-get upgrade
Upgrade all installed packages apt-get install <package>
Install a package apt-get remove <package>
Remove a package
Command Description yum update
Update package list yum install <package>
Install a package yum remove <package>
Remove a package
Command Description crontab -e
Edit the current user's crontab file crontab -l
List the current user's cron jobs crontab -r
Remove the current user's crontab file sudo crontab -e -u <username>
Edit the crontab for a specified user sudo crontab -l -u <username>
List the crontab for a specified user sudo crontab -r -u <username>
Remove the crontab for a specified user
Cron jobs are defined using the following syntax:
* * * * * command_to_run
Entry Description 0 5 * * * /path/to/script.sh
Run a script every day at 5:00 AM */15 * * * * /path/to/backup.sh
Run a backup script every 15 minutes 0 0 1 * * /path/to/report.sh
Run a report script at midnight on the first day of every month 30 2 * * 1 /path/to/cleanup.sh
Run a cleanup script every Monday at 2:30 AM
System-wide cron jobs are configured in/etc/crontab
and can also be found in the/etc/cron.d/
directory.
Theat
command is used to schedule one-time tasks.
Command Description at 10:00
Schedule a command to run at 10:00 AM (prompt for the command) `echo "command_to_run" at 10:00` atq
List scheduled jobs for the current user atrm <job_number>
Remove a scheduled job by its job number
Command Description ps aux
List all running processes in detail ps -ef
List processes with full-format output top
Show real-time system resource usage (CPU, memory, processes) htop
Enhanced interactive process viewer (htop
needs to be installed separately) pgrep <name>
Find the PID(s) of a process by name pidof <process>
Find the PID of a running process pstree
Display processes in a tree-like format
Command Description kill <PID>
Terminate a process by PID kill -9 <PID>
Forcefully kill a process killall <name>
Kill all processes by name pkill <name>
Kill processes by name (supports regular expressions) bg
Resume a suspended job in the background fg
Bring a background job to the foreground jobs
List all background jobs in the current shell nice -n <priority> <command>
Start a process with a specified priority (lower value = higher priority) renice <priority> <PID>
Change the priority of a running process
Command Description top
Display real-time information about running processes and resource usage htop
Interactive version oftop
(install separately withsudo apt-get install htop
) uptime
Show how long the system has been running free -m
Display system memory usage in megabytes vmstat
Report virtual memory statistics lsof
List open files by processes strace -p <PID>
Trace system calls made by a process watch <command>
Execute a command repeatedly and monitor its output in real-time
Linux processes can be sent various signals to control their behavior.
Signal Number Description SIGHUP
1 Hangup, reload configuration SIGINT
2 Interrupt from keyboard (Ctrl + C) SIGKILL
9 Kill signal, cannot be ignored SIGTERM
15 Termination signal SIGSTOP
19 Stop process (cannot be ignored) SIGCONT
18 Continue a stopped process
Background & Foreground Process Management Command Description command &
Run a command in the background bg
Resume a suspended job in the background fg
Bring a background job to the foreground jobs
List current jobs and their statuses nohup <command> &
Run a command immune to hangups, in the background disown <job>
Remove a job from the job table, leaving it running
Process Ownership and Security Command Description ps -u <username>
List all processes belonging to a user sudo -u <username> <command>
Run a command as a different user chown <owner>:<group> <file>
Change ownership of files or directories chmod <permissions> <file>
Modify permissions for a file or directory setfacl -m u:<user>:rwx <file>
Set file access control lists (ACLs) for a user on a file getfacl <file>
View ACL permissions of a file
Monitoring CPU and Memory Usage by Process Command Description top
Display processes sorted by CPU usage htop
Interactive real-time process viewer ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu
List processes sorted by CPU usage ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
List processes sorted by memory usage
systemd is the system and service manager for Linux operating systems. It is responsible for managing services, processes, and various units.
Command Description systemctl
Main command for managing systemd services and units systemctl status <service>
Check the status of a service systemctl start <service>
Start a service systemctl stop <service>
Stop a running service systemctl restart <service>
Restart a service systemctl reload <service>
Reload the configuration of a service without restarting it systemctl enable <service>
Enable a service to start on boot systemctl disable <service>
Disable a service from starting on boot systemctl is-enabled <service>
Check if a service is enabled to start at boot systemctl daemon-reload
Reload systemd manager configuration files after changes systemctl list-units --type=service
List all systemd services systemctl list-units --failed
List failed services journalctl -u <service>
View logs for a specific service journalctl -xe
View systemd logs with more details on errors systemctl mask <service>
Completely disable a service, even if another service tries to start it systemctl unmask <service>
Re-enable a masked service systemctl show <service>
Show detailed properties of a service systemctl cat <service>
View the unit file for a service systemctl isolate <target>
Switch to a specific system target (e.g.,multi-user.target
,rescue.target
)
Systemd manages various types of units, not just services.
Unit Type Description .service
A system service (e.g., web servers, databases) .socket
A socket for inter-process communication .device
A device unit exposed by the Linux kernel .mount
A file system mount point .automount
A mount point that is automatically mounted on access .swap
A swap device or file .target
A group of systemd units (e.g.,multi-user.target
) .timer
A scheduling unit similar to cron jobs
Command Description systemctl get-default
Show the current default target (e.g., multi-user, graphical) systemctl set-default <target>
Set the default target (e.g.,multi-user.target
,graphical.target
) systemctl isolate <target>
Switch the system to the specified target (e.g.,rescue.target
)
Network Interface Management Command Description ip addr
Show all network interfaces and their IP addresses ip -a
Show all network interfaces and their IP addresses ip addr show <interface>
Display information about a specific network interface ip link set <interface> up
Bring a network interface up ip link set <interface> down
Bring a network interface down ifconfig
Display or configure network interface (older command, useip
for new systems) ifconfig <interface>
Show details about a specific network interface ifdown <interface>
Take a network interface down (Debian-based systems) ifup <interface>
Bring a network interface up (Debian-based systems) ethtool <interface>
Display or change Ethernet device settings ip route
Display or manipulate the routing table ip route add <destination> via <gateway>
Add a new route to the routing table ip route del <destination>
Remove a route from the routing table hostname
Show or set the system’s hostname hostname -I
Display all IP addresses of the host nmcli dev show <interface>
Display the connection status of a specific network interface (NetworkManager) nmcli device status
Show status of all network interfaces (NetworkManager) nmcli connection show
Display saved network connections (NetworkManager) nmcli connection up <connection-name>
Bring up a specific network connection (NetworkManager) nmcli connection down <connection-name>
Bring down a specific network connection (NetworkManager) sudo nmcli connection reload
Reload connection nmtui
Text-based user interface for managing network connections sudo systemctl restart NetworkManager
Apply configs sudo nmtui
Ui for managing network in RHel cat /etc/sysconfig/network-scripts/ifcfg-eth160
ip configs in redhat
Command Description dig <domain>
Query DNS information for a domain dig +short <domain>
Get the short output (e.g., only the IP address) dig @<nameserver> <domain>
Query a specific DNS server for domain resolution nslookup <domain>
Query DNS information for a domain host <domain>
Perform DNS lookup and reverse lookup systemd-resolve --status
Show DNS resolution status (systemd-resolved) resolvectl query <domain>
Query DNS using systemd-resolved cat /etc/resolv.conf
Display DNS server configuration
Command Description ping <host>
Check connectivity to a host ping -c <count> <host>
Send a specific number of ICMP echo requests to a host ping6 <host>
Send an ICMP echo request to a host using IPv6 traceroute <host>
Trace the path packets take to reach a host tracepath <host>
Similar to traceroute, but does not require superuser privileges mtr <host>
Combinesping
andtraceroute
to provide continuous network analysis netstat -tuln
Show listening ports and services ss -tuln
Show listening sockets (more modern thannetstat
) nc -zv <host> <port>
Check if a specific port is open on a host (TCP/UDP connection test) nc -l <port>
Open a port and listen for incoming connections telnet <host> <port>
Check TCP connectivity to a host and port curl <url>
Perform a basic HTTP request and display the response curl -I <url>
Display HTTP headers for a URL curl -O <url>
Download a file from a URL wget <url>
Download files from the web using HTTP, HTTPS, or FTP arp -a
Display the system's ARP table (shows MAC to IP mappings) tcpdump
Capture and analyze network traffic tcpdump -i <interface>
Capture packets on a specific network interface tcpdump -nn -X port <port>
Capture packets on a port and display the packet contents in hexadecimal
Firewall Management (iptables and firewalld) Command Description iptables -L
List all firewall rules iptables -A <chain> -p <protocol> --dport <port> -j <target>
Add a rule to a chain (e.g., ACCEPT, DROP) iptables -D <chain> <rule-number>
Delete a specific rule from a chain iptables -F
Flush (delete) all firewall rules firewall-cmd --list-all
List all active firewalld rules (CentOS, Fedora) firewall-cmd --add-service=<service>
Temporarily allow a service through the firewall firewall-cmd --permanent --add-service=<service>
Permanently allow a service through the firewall firewall-cmd --remove-service=<service>
Remove a service from the firewall ufw status
Display the status of UFW (Uncomplicated Firewall) (Ubuntu) ufw enable
Enable UFW ufw disable
Disable UFW ufw allow <port>/<protocol>
Allow traffic on a port (e.g.,ufw allow 22/tcp
) ufw deny <port>/<protocol>
Deny traffic on a port
Command Description scp <source> <user>@<host>:<destination>
Securely copy files to a remote host scp <user>@<host>:<source> <destination>
Securely copy files from a remote host rsync -avz <source> <user>@<host>:<destination>
Synchronize files between local and remote hosts rsync -avz <user>@<host>:<source> <destination>
Synchronize files from remote to local sftp <user>@<host>
Start a secure file transfer session ftp <host>
Start an FTP session (unencrypted)
SSH and Remote Connections Command Description ssh <user>@<host>
Connect to a remote host via SSH ssh -i <keyfile> <user>@<host>
Connect to a remote host using a specific private key ssh -L <local-port>:<remote-host>:<remote-port> <user>@<host>
Create an SSH tunnel with port forwarding ssh-copy-id <user>@<host>
Copy local SSH key to a remote host to enable passwordless login scp <user>@<host>:<source> <destination>
Securely copy files between local and remote hosts sftp <user>@<host>
Securely transfer files to/from a remote host using SFTP tmux
Start a terminal multiplexer session (maintain SSH sessions) screen
Start a screen session (maintain SSH sessions)
This section provides commands for monitoring system performance, processes, CPU, memory, disk I/O, and network activity.
General System Monitoring Command Description top
Real-time view of CPU and memory usage by processes htop
Enhanced, interactive version oftop
with additional features (may require installation) vmstat
Report virtual memory statistics, including processes, memory, paging, block I/O, and CPU activity glances
Comprehensive system monitoring tool (requires installation) uptime
Show how long the system has been running and system load watch <command>
Run a command repeatedly at regular intervals and display the output live
Command Description mpstat
Display CPU usage per core (fromsysstat
package) sar
Collect, report, and save system activity information (including CPU, memory, I/O, etc.) lscpu
Display CPU architecture information (model, cores, speed) cat /proc/cpuinfo
Display detailed CPU information iostat
CPU and I/O statistics, part of thesysstat
package
Command Description free -h
Display memory usage in human-readable format (total, used, free, swap) vmstat -s
Memory and swap statistics in a detailed format cat /proc/meminfo
View detailed memory statistics watch free -h
Monitor memory usage in real-time dmidecode --type memory
Display detailed information about installed memory (requires root)
Disk Usage and I/O Monitoring Command Description df -h
Display disk space usage in human-readable format du -sh <directory>
Display the total size of a directory in human-readable format iostat
Show disk I/O and CPU usage statistics (fromsysstat
package) iotop
Display real-time disk I/O usage by processes (requires installation) dstat
Comprehensive resource statistics (including disk I/O) lsblk
List block devices, partitions, and file systems blkid
Display block device attributes such as UUIDs and file system types df -i
Show inode usage for file systems du -ah <directory>
Show disk usage for all files and directories hdparm -t /dev/sda
Test read speed of a disk (may require installation)
Command Description ps aux
List all running processes with detailed information pgrep <process-name>
Search for a running process by name pidof <process-name>
Find the process ID (PID) of a running process pstree
Show processes in a tree-like format kill <PID>
Send a signal to terminate a process using its PID killall <process-name>
Terminate all processes matching a specific name pkill <process-name>
Send a signal to processes based on name and other attributes renice <priority> <PID>
Change the priority of a running process strace -p <PID>
Trace system calls and signals for a specific process lsof
List open files by processes lsof -i :<port>
List processes using a specific network port nice -n <priority> <command>
Start a command with a specified priority
Command Description netstat -tuln
Show listening ports and their associated services ss -tuln
More modern version ofnetstat
, shows listening ports iftop
Display real-time network bandwidth usage (requires installation) nload
Show incoming and outgoing network traffic (requires installation) tcpdump -i <interface>
Capture and display network packets on a specific interface iptraf-ng
Real-time network traffic monitoring (requires installation) ping <hostname/IP>
Test network connectivity by sending ICMP echo requests traceroute <hostname/IP>
Trace the path packets take to reach a network host ss -s
Show detailed socket statistics arp -a
Display the system's ARP table (address resolution protocol) dig <hostname>
Query DNS servers for information about a hostname host <hostname>
Perform DNS lookup for a domain or IP address nslookup <hostname>
Query DNS to resolve a hostname to an IP address mtr <hostname>
Network diagnostic tool combiningping
andtraceroute
(requires installation)
Miscellaneous System Monitoring Command Description uptime
Show how long the system has been running and the current load average last
Show the last logins of users on the system sar
Collect and display system activity statistics (CPU, memory, I/O, network) dstat
Tool for generating detailed performance and resource statistics vmstat
Report information about processes, memory, paging, and I/O iostat -x
Show extended I/O statistics, including disk utilization tload
Show a graphical representation of system load in the terminal uptime
Display system uptime and load averages w
Show who is logged in and what they are doing who
Show who is logged in to the system
SSH (Secure Shell) is a protocol used for securely accessing remote machines over a network. This section covers commands for managing SSH connections, keys, and configuration.
Command Description ssh <user>@<host>
Connect to a remote host as a specified user ssh -p <port> <user>@<host>
Connect to a remote host on a specific port ssh -i <keyfile> <user>@<host>
Connect using a specific private key file ssh -L <local_port>:<remote_host>:<remote_port> <user>@<host>
Create an SSH tunnel for local port forwarding ssh -R <remote_port>:<local_host>:<local_port> <user>@<host>
Create an SSH tunnel for remote port forwarding ssh -D <local_port> <user>@<host>
Set up a SOCKS proxy on the specified local port scp <file> <user>@<host>:<remote_path>
Copy a file to a remote host using SSH scp <user>@<host>:<remote_path> <local_path>
Copy a file from a remote host to the local machine rsync -avz -e "ssh -p <port>" <source> <user>@<host>:<destination>
Sync files with a remote host over SSH
SSH keys provide a secure way to authenticate without using passwords.
Command Description ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Generate a new SSH key pair (RSA, 4096 bits) ssh-add <keyfile>
Add a private key to the SSH authentication agent ssh-copy-id <user>@<host>
Install your public key on a remote host for passwordless authentication cat ~/.ssh/id_rsa.pub
Display your public key for sharing ssh-agent bash
Start a new shell with the SSH agent running ssh-keygen -R <host>
Remove the specified host from the known_hosts file ssh -Q key
List supported key types
Common SSH Configuration Options Option Description Host <name>
Alias for a host configuration HostName <hostname>
Actual hostname or IP address to connect to User <username>
Default username to log in as Port <port_number>
Port to connect to (default is 22) IdentityFile <path>
Path to the private key file for authentication ForwardAgent yes
Enable SSH agent forwarding StrictHostKeyChecking no
Disable host key verification (not recommended for security)
SSH Key Management for Users Command Description ssh-keygen
Generate a new SSH key pair ssh-copy-id <username>@<host>
Copy SSH key to a remote host for passwordless login cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Manually add SSH public key for user authentication chmod 600 ~/.ssh/authorized_keys
Set correct permissions for SSH authorized keys
SSH Security Best Practices Best Practice Description Use SSH keys instead of passwords SSH keys provide better security than passwords. Disable root login Prevent direct SSH login as root by editing/etc/ssh/sshd_config
: ```plaintext PermitRootLogin no ``` Use strong passphrases for SSH keys Protect private keys with strong passphrases. Change the default SSH port Edit/etc/ssh/sshd_config
and changePort 22
to another port. Enable two-factor authentication Add an extra layer of security with 2FA using tools likeGoogle Authenticator
.
The SSH client can be configured using the~/.ssh/config
file for convenience and ease of use.
Example SSH Configurations # Default settingsHost * User your_username Port 22 IdentityFile ~/.ssh/id_rsa# Specific host configurationHost myserver HostName myserver.example.com User myuser Port 2222 IdentityFile ~/.ssh/myserver_id_rsa
Command Description mail <recipient>
Open the mail client to send an email `echo "Email body" mail -s "Subject" ` sendmail <recipient>
Send an email using the sendmail command mailx -s "Subject" <recipient> < <file>
Send the contents of a file as the body of the email mutt -s "Subject" <recipient> < <file>
Send an email with a subject using mutt ssmtp <recipient>
Send an email using ssmtp (simple SMTP client) mail -c <cc_recipient>
Send a carbon copy (CC) of the email to another recipient mail -b <bcc_recipient>
Send a blind carbon copy (BCC) of the email to another recipient
Service Description postfix
A widely used mail transfer agent (MTA) sendmail
A traditional mail transfer agent, often used for sending mail exim
Another popular mail transfer agent ssmtp
A simple utility to send emails via SMTP mutt
A text-based email client for Unix mailx
An enhanced version of the mail command
Command Description tail -f /var/log/mail.log
Monitor mail logs for sending issues (Debian/Ubuntu) grep "error" /var/log/mail.log
Search for errors in the mail log mailq
View the mail queue sendmail -bv <recipient>
Verify if an email can be sent to a recipient
Configuration files for mail services can typically be found in/etc/mail/
or/etc/
.
Example/etc/ssmtp/ssmtp.conf
Configuration root=postmastermailhub=smtp.example.com:587AuthUser=usernameAuthPass=passwordUseSTARTTLS=YES
Kernel and Modules Management This section provides commands for managing the Linux kernel and its modules, including loading, unloading, and querying kernel modules.
Command Description uname -r
Display the current kernel version uname -a
Display all system information, including the kernel version hostnamectl
Show information about the host, including kernel version cat /proc/version
Display kernel version information from the/proc
filesystem dmesg
Display boot and kernel log messages `dmesg grep ` ls /boot/
List the files related to the kernel, including kernel images
Command Description lsmod
List currently loaded kernel modules modinfo <module_name>
Display detailed information about a specific kernel module modprobe <module_name>
Load a kernel module into the running kernel modprobe -r <module_name>
Remove a kernel module from the running kernel insmod <path_to_module>
Insert a module into the kernel (requires the full path to the module file) rmmod <module_name>
Remove a kernel module depmod -a
Generate a list of module dependencies modprobe --show-depends <module_name>
Show module dependencies before loading it ls /lib/modules/$(uname -r)/kernel/
List the kernel modules available for the current kernel
Kernel Parameters Management Command Description sysctl -a
Display all kernel parameters (sysctl settings) sysctl <parameter>
View the current value of a specific kernel parameter sysctl -w <parameter>=<value>
Set the value of a kernel parameter at runtime cat /proc/sys/<parameter>
View a kernel parameter's current value directly from the/proc
filesystem echo <value> > /proc/sys/<parameter>
Temporarily change a kernel parameter (until reboot) nano /etc/sysctl.conf
Edit the sysctl configuration file to apply kernel parameter changes permanently sysctl -p
Reload sysctl settings from the configuration file
Command Description cat /proc/cmdline
Show the kernel parameters passed at boot time nano /etc/default/grub
Edit GRUB configuration to permanently modify kernel boot parameters grub-mkconfig -o /boot/grub/grub.cfg
Rebuild the GRUB configuration file after making changes update-grub
Update GRUB to apply boot configuration changes
Command Description mkinitcpio -p linux
Rebuild the initramfs for Arch-based systems update-initramfs -u
Update the initramfs for the current kernel (Debian/Ubuntu) dracut -f
Regenerate initramfs on systems using Dracut
Kernel Upgrade and Management Command Description apt-cache search linux-image
Search for available kernel versions (Debian/Ubuntu) apt install linux-image-<version>
Install a specific kernel version (Debian/Ubuntu) dnf list kernel
List available kernel versions (Fedora) dnf install kernel-<version>
Install a specific kernel version (Fedora) yum update kernel
Update the kernel to the latest version (CentOS/Red Hat) grubby --default-kernel
Show the default kernel used at boot time grubby --set-default /boot/vmlinuz-<version>
Set a specific kernel as the default for booting (RHEL/CentOS) reboot
Reboot the system to load the newly installed kernel
Kernel Compilation (Advanced) Command Description make menuconfig
Configure kernel options before compiling make -j$(nproc)
Compile the kernel using all available CPU cores make modules_install
Install compiled kernel modules make install
Install the compiled kernel make mrproper
Clean up all kernel build files and configurations cp /boot/config-$(uname -r) .config
Copy the current kernel config file as a base for compiling
Boot, Bootloader (GRUB), and EFI Firmware This section covers commands related to system boot, managing the GRUB bootloader, and working with EFI/UEFI firmware.
GRUB Bootloader Management GRUB (GRand Unified Bootloader) is the default bootloader for many Linux distributions, and it manages which kernel or operating system to boot.
Command Description grub-install /dev/sda
Install GRUB bootloader on the specified disk (e.g.,/dev/sda
) grub-mkconfig -o /boot/grub/grub.cfg
Generate the GRUB configuration file (run after installing or updating GRUB) update-grub
Update GRUB configuration (Debian/Ubuntu) grub-set-default <entry>
Set the default boot entry by specifying the menu entry index or title grub-reboot <entry>
Reboot the system into a specific GRUB entry once grub-editenv list
List the saved GRUB environment variables grub2-mkconfig -o /boot/grub2/grub.cfg
Generate GRUB configuration (Red Hat/CentOS/Fedora) grub2-install /dev/sda
Install GRUB on Red Hat-based systems (RHEL/CentOS/Fedora) nano /etc/default/grub
Edit GRUB configuration file for setting timeout, default OS, etc.
GRUB Configuration Example You can manually edit/etc/default/grub
to modify boot options, such as default kernel, timeout, or adding kernel boot parameters.
GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_CMDLINE_LINUX=" quiet splash" GRUB_GFXMODE=1920x1080 After making changes, update the GRUB configuration:
EFI/UEFI Firmware Management EFI (Extensible Firmware Interface) or UEFI (Unified Extensible Firmware Interface) is the modern replacement for the traditional BIOS. It manages the system boot process and offers advanced features like secure boot, boot entries management, and boot order control.
Command Description efibootmgr
Manage UEFI boot entries and settings efibootmgr -v
List all UEFI boot entries in verbose mode efibootmgr -n <boot-number>
Set the next boot entry for the system to boot from once efibootmgr -o 0001,0002
Change the boot order to prioritize boot entry 0001 followed by 0002 efibootmgr -b 0003 -B
Remove the UEFI boot entry number 0003 efibootmgr -c -d /dev/sda -p 1 -L "Linux" -l /vmlinuz
Create a new boot entry for Linux on the EFI partition on/dev/sda1
efibootmgr -t 5
Set a 5-second timeout for the UEFI boot menu efibootmgr -a <boot-number>
Activate a specific boot entry
Viewing and Modifying EFI Variables EFI variables contain information about system settings and configuration.
Command Description ls /sys/firmware/efi/efivars/
List all EFI variables on the system cat /sys/firmware/efi/fw_platform_size
Display whether the platform is 32-bit or 64-bit UEFI efivar --list
List all UEFI variables in a readable format efivar --print <variable>
Display detailed information about a specific EFI variable modprobe efivars
Load theefivars
module to access UEFI variables
Secure Boot is a feature of UEFI that only allows signed software (such as bootloaders and operating systems) to boot.
Command Description mokutil --sb-state
Check the current state of Secure Boot mokutil --enable-validation
Enable Secure Boot validation mokutil --disable-validation
Disable Secure Boot validation mokutil --list-enrolled
List the keys enrolled in Secure Boot mokutil --import <keyfile>
Import a new key to be used for Secure Boot mokutil --reset
Reset all Secure Boot keys to their default state
Booting into UEFI Firmware To enter the UEFI firmware settings from Linux:
Systemd-based distributions :systemctl reboot --firmware-setup