Daily Weekly Monthly

Weekly Shaarli

Week 18 (April 28, 2025)

System information, root recovery, environment variables, shortcuts

Finding System Information

  • cat /etc/redhat-release → Red Hat version
  • uname -a → Linux hostname, kernel, architecture
  • dmidecode → hardware, BIOS, system info
  • arch → x86_64 or i386/32-bit

Common Keyboard Shortcuts

  • Ctrl + U → erase command line
  • Ctrl + C → stop/kill current command
  • Ctrl + Z → suspend command
  • Ctrl + D → exit interactive session

Record Terminal Session

  • script mylog.log → record shell session

    • Use exit to stop recording

Root Password Recovery

  1. Reboot → enter GRUB menu
  2. Press e → edit boot params
  3. Add rd.break at end of kernel line
  4. Ctrl + X to boot
  5. Mount root with chroot /sysroot
  6. passwd root → change password
  7. touch /.autorelabel → SELinux relabeling on reboot

View Environment Variables

  • printenv, echo $PATH, echo $SHELL

Set Environment Variables

  • Temporary: export TEST=1, echo $TEST
  • Permanent:

    vi ~/.bashrc
    TEST=123
    export TEST

Global → vi /etc/profile or /etc/bashrc

SED: Stream Editor for Text Manipulation
  • Basic Replace Syntax:

    • sed -i 's/KENNY/LENNY/g' filename

    • Substitute all occurrences of "KENNY" with "LENNY"

  • Delete Line Containing String:

    • sed -i '/SEINFELD/d' filename
  • Delete Empty Lines:

    • sed -i '/^$/d' filename
  • Delete First Line:

    • sed '1d' filename
  • sed '1,2d' filename → delete the first two lines

  • sed 's/\t/ /g' filename → replace tabs with spaces

  • sed -n '12,18p' filename → print only lines 12 to 18

  • sed '12,18d' filename → delete lines 12 to 18

  • sed G filename → insert an empty line after every line

  • sed '8!s/seinfeld/S1/' filename → replace "seinfeld" with "S1" on every line except line 8

Crontab / at

Crontab Basics

  • crontab -e → edit crontab
  • crontab -l → list crontab entries
  • crontab -r → remove crontab entries
  • systemctl status crond → check crond service status

AT: One-time Scheduled Tasks

  • Used to schedule jobs only once.

Scheduling Examples:

  • at HH:MM PM → schedule a job interactively
  • at 11:23AM 12/24/25

    • Enter job (e.g., echo "test") and press Ctrl + D to finish
  • at 2:45PM 01/30/25
  • at 4PM + 4 days
  • at now + 5 hours
  • at 8:00AM Sun
  • at 10:00AM next month

Managing AT Jobs

  • atq → list the scheduled at jobs
  • atrm # → remove a specific at job (use number from atq)
  • systemctl status atd → check atd daemon status
File Display Commands / Filters / Text Processing Input

File Display Commands

cat → Show entire content
cat -A → Show non-printable characters

more → Paginate output
less → Same as more but allows navigation with arrow keys

head → Show top lines (default: 10)
tail → Show bottom lines (default: 10)

head -2 myfile
tail -2 myfile

Filters / Text Processing Input

  • cut → Cut input
  • awk → List by columns
  • grep & egrep → Search by keyword
  • sort → Sort in alphabetical order
  • uniq → Remove duplicate lines
  • wc → Word count (including lines)

cut Command Examples

  • cut -c1 filename → First letter of each line
  • cut -c1,2,4 filename → Characters 1, 2, and 4
  • cut -c1-3 filename → Range: characters 1 to 3
  • cut -c1-3,6-8 filename → Ranges: characters 1-3 and 6-8
  • cut -b1-3 filename → Byte range 1 to 3
  • cut -d: -f6 /etc/passwd → Field 6 using : delimiter
  • cut -d: -f6-7 → Fields 6 and 7
  • ls -l | cut -c2-4 → Extract character range 2 to 4 from ls output

awk Command Examples

  • awk '{print $1}' file → Print 1st column of file
  • ls -l | awk '{print $1, $3}' → Print 1st and 3rd columns from ls -l
  • ls -l | awk '{print $NF}' → Print last column
  • awk '/jerry/ {print}' file → Search for "jerry" and print matching lines
  • awk -F: '{print $1}' /etc/passwd → Use : as delimiter, print 1st field
  • echo "hello tom" | awk '{$2="adam"; print}' → Replace column 2 with "adam"
  • awk 'length($0) > 15' file → Print lines longer than 15 characters

grep Command Examples

  • grep keyword file → Search for keyword
  • grep -c keyword file → Count matching lines
  • grep -i keyword file → Ignore case
  • grep -n keyword file → Show line numbers
  • grep -v keyword file → Invert match (everything except keyword)
  • grep keyword file | awk '{print $1}' → Pipe grep to awk to extract 1st column
  • ls -l | grep keyword → Filter ls -l output by keyword
  • egrep -i "keyword1|keyword2" file → Search for multiple keywords (case-insensitive)

sort Command Examples

  • sort file → Sort alphabetically
  • sort -r file → Sort in reverse order
  • sort -u file → Sort and remove duplicates
  • sort file | uniq → Same as above with explicit uniq
  • sort file | uniq -d → Show only duplicate lines
  • sort file | uniq -c → Count duplicates
  • sort -k4 -n file → Sort by 4th field (numeric)
  • ls -l | sort -k4 -n → Sort by size from ls -l

wc Command Examples

  • wc -c filename → Byte count
  • wc -w filename → Word count
  • wc -l filename → Line count
  • ls -l | wc -l → Count lines from ls -l
  • wc -l filename → Count number of lines in file

cmp / diff

  • diff → Compare files line by line
  • cmp → Compare files byte by byte

tar / gzip

  • tar cvf export.tar somedir → Compress directory
  • tar xvf export.tar → Extract tar archive
  • gzip export.tar → Compress with gzip
  • gzip -d export.tar.gz → Decompress gzip archive

truncate Command

  • truncate -s10 filename → Chop file to 10 bytes
  • truncate -s60 filename → Extend file to 60 bytes

Combining & Splitting Files

  • cat file1 file2 file3 > fileN → Combine multiple files into one

Disk usage, logging, shutdown, hostname

Disk and Memory Info

  • df → disk partition info
  • df -h → human-readable format
  • du → size of file/directory
  • free → memory info
  • cat /proc/cpuinfo → CPU info
  • cat /proc/meminfo → memory info

System Logs & Diagnostics

  • dmesg → check kernel ring buffer logs
  • iostat → check disk I/O stats
  • ip route | column -t → check routing table
  • ss → view open ports/sockets

Log Directory Structure

  • Logs in /var/log/

    • boot → startup records
    • chronyd → NTP info
    • cron → cron jobs
    • maillog → mail daemon
    • secure → login/logout tracking
    • messages → general trace logs
    • httpd → web server errors

Log Monitoring

  • tail -f filename → follow log file in real time

System Shutdown & Boot Control

  • shutdown → graceful shutdown
  • init 0-6 → runlevels (0=off, 3=multi-user, 6=reboot)
  • reboot → reboot system
  • halt → force shutdown immediately

Hostname Management

  • cat /etc/hostname → current hostname
  • hostnamectl set-hostname myhostname → change hostname
User management
  • Essential Commands:

    • useradd, groupadd, userdel, groupdel, usermod
    • Modify 3 files: /etc/passwd, /etc/group, /etc/shadow

Create User with Custom Options

useradd -G mygroup -s /bin/bash \
  -c "User Description" -m \
  -d "/home/myuser" myuser

Other Useful User Commands

  • useradd myuser → create user
  • id myuser → check if user exists
  • groupadd → create group
  • cat /etc/group → check group
  • userdel -r myuser → delete user and home directory
  • groupdel mygroup → delete group
  • usermod -G mygroup myuser → change user's group
  • chgrp -R mygroup myuser → change group ownership recursively
  • passwd myuser → set or update user's password

Password Aging with chage

  • chage → manage password aging

    • -m → minimum days
    • -M → maximum days
    • -d → last password change
    • -I → inactive days
    • -E → expiration date
    • -W → warning days
  • Example:

    • chage -M 5 -M 90 -W 10 -I 10 username

Edit Password Policies

  • File: /etc/login.defs

    • PASS_MAX_DAYS 9999
    • PASS_MIN_DAYS 0
    • PASS_MIN_LEN 5
    • PASS_WARN_AGE 7

Switch User Privileges

  • visudo → edit sudo permissions config (/etc/sudoers)

    • Add user to wheel group for sudo access
  • usermod -aG wheel myuser → grant sudo rights

User Info and Monitoring Commands

  • who → see logged in users
  • last → list last login records
  • w → who is logged in with more details
  • finger → show user details
  • id → show UID, GID and groups
  • id myuser → check user info

Send Messages to Users

  • wall → broadcast message to all users

    • Type message, then Ctrl + D to send
  • write myuser → send message to specific user

    • Type message, then Ctrl + D to send
Basic File Commands / File Search Commands
  • touch one two three → Create 3 files

  • mkdir folder → Make directory

  • mv -R / cp -R → Move or copy folder including subfolders

  • find . -name "george" → Search from current directory

  • locate → Faster, but relies on a database

  • updatedb → Update the locate database


Wildcards

Symbol Meaning
* Zero or more characters
? Single character
[] Range of characters
\ Escape character
^ Beginning of the line
\$ End of the line
Linux File Links and Permissions

Links

Soft Link (Symbolic Link)

  • ln -s
  • Link will be removed if the original file is removed or renamed.

Hard Link

  • ln
  • Deleting, renaming, or moving the original file will not affect the hard link.

Diagram

       INODE
        ↑
MY HARD LINK ← MYFILE.TXT → MY-SOFT-LINK

Command to check links:

ls -lTri

File Permissions

Permission Types

Symbol Permission Example (Mnemonic)
R Read Riri (4)
W Write Winnie (2)
X Execute Xena (1)

Each Permission (R, W, X) Can Be Controlled at Three Levels

  • U → User
  • G → Group
  • O → Others (Everyone)

Permission Strings

Example:

-rwxrwxrwx
 |   |  |
 |   |  └── Others
 |   └───── Group
 └───────── User

To remove write permission from all:

chmod a-w filename

To add read and write permission for user:

chmod u+rw filename

Directory Permissions

Example:

drwxrwxrwx
^   ^  ^
|   |  └── Others
|   └───── Group
└───────── User

Numeric Permission Mapping

Value Permissions Symbol Mnemonic
0 No permission ---
1 Execute --x Xena
2 Write -w- Winnie
3 Execute + Write -wx
4 Read r-- Riri
5 Read + Execute r-x
6 Read + Write rw-
7 Read + Write + Exec rwx

Example to set permissions:

chmod 764 file

Breakdown:

  • User (7) → rwx
  • Group (6) → rw-
  • Others (4) → r--
Systemctl, process management

Basic System Info Commands

  • uptime → time, uptime, users, load average
  • hostname → current hostname
  • ip hostname → show IP & hostname
  • uname -a → current OS and kernel info
  • which command → path to a command
  • cal → calendar for current month/year

    • cal 2025 → full year
  • bc → basic calculator

System Monitoring

  • systemctl → interact with systemd system manager
  • ps → view current processes
  • top → dynamic view of process usage

Systemctl Usage

  • systemctl start|stop|status servicename.service → manage service state
  • systemctl enable servicename.service → start service at boot
  • systemctl restart|reload servicename → restart or reload service
  • systemctl list-units --all → list all units
  • To add a service:

    • Create a unit file in /etc/systemd/system/servicename.service

Process Management

  • Start a process in the background:

    • Ctrl + Z then jobs → suspend and background
    • bg → continue in background
    • fg → bring back to foreground
  • Run process detached from terminal:

    • nohup process & → keep running after logout
    • nohup process > /dev/null 2>&1 & → suppress all logs/output

Killing and Prioritizing

  • pkill name → kill process by name
  • nice → start process with a priority (range -20 to 19)

    • lower = higher priority
    • nice -20 top

Jobs Monitoring

  • jobs → list background/foreground job states
Vi Editor

Vi Editor Commands

  • i → insert mode
  • I → insert at line start
  • ESC → escape to command mode
  • R → replace mode
  • x → delete character
  • dd → delete line
  • yy → copy line
  • p → paste
  • v → visual mode
  • o → open new line below and insert
  • O → open new line above and insert
  • a → append after cursor
  • A → append at end of line
  • :q! → quit without saving
  • :wq or ZZ → save and quit
Process monitoring

ps Command

  • ps → Current shell process status
  • ps -E → All running processes
  • ps aux → All in BSD style with details
  • ps -EF → Running process with details
  • ps -u root → Processes of specific user
  • ps -EF | grep ? → Find process by pattern

top Command

  • top -u username → Show only that user's processes
  • top +d c → Absolute path
  • top +d k → Kill by PID
  • top +d M or +d P → Sort by memory or process usage

kill Commands

  • kill -l → List all signals
  • kill PID → Default terminate
  • kill -1 → Restart
  • kill -2 → Equivalent to Ctrl+C
  • kill -9 → Force kill
  • kill -15 → Graceful kill
  • killall → Kill all processes by name
  • pkill → Kill by process name
Linux File Ownership, ACLs, and I/O Redirects

File Ownership

  • chown → Change ownership
  • chgrp → Change group

Access Control List (ACL)

  • setfacl → Set file ACL
  • getfacl → Get file ACL

Add Permission to User

setfacl -m u:user:rwx /path/to/file
setfacl -m g:group:rw /path/to/file

Recursive Inheritance from Folder

setfacl -R -m entry /path/to/dir

Remove Specific ACL Entry

setfacl -x u:user /path/to/file

Remove All ACL Entries

setfacl -b /path/to/file

Check ACL

ls -ltr

Example output:

-rw-rw-r--+

Help Commands

  • whatis command
  • command --help
  • man command

Add Text to a File

echo "my text" > myfile    # Overwrite
cat myfile                 # Read the text
echo "hello" >> myfile     # Append

Input and Output Redirects
3 Redirect Types

  • stdin → 0 → < or << → Feeding file content to a command
  • stdout → 1 → > or >>
  • stderr → 2 → 2> or 2>> → Write error output to a file

tee Command

  • tee → Output + Save
echo "test" | tee myfile
tee -a file  # Append
Navigating File System / Linux filetypes
  • ls -l → List
  • pwd → Print working directory

dr-xr-xr-x
|
directories


-rw-r--r--
|
file


Linux File Types

Symbol Type
- Regular file
d Directory
l Link
c Special file or device file
s Socket → Network communication / process data between external processes
p Named pipe → FIFO → First In First Out, data between internal processes
b Block device

Inode = Pointer or number of a file on a hard disk.

Linux filesystem

/boot -> Grub.cfg
/root -> home of root
/dev -> system device (mouse, keyboard)
/etc -> configuration files
/bin -> /usr/bin -> everyday user commands
/sbin -> /usr/sbin -> system/filesystem commands
/opt -> third party app (not part of os)
/proc -> running process (only in memory)
/lib -> /usr/lib -> C prog lib
/tmp -> temporary folder
/home -> user dir
/var -> system logs
/run -> system daemon -> store temporary runtime / PID file
/mnt -> mount external file system
/media -> CDrom