📚 Glossary
This glossary defines key terms and concepts used throughout the shell scripting and system administration documentation. Understanding these terms is essential for effective system management and script development.
🖥️ System Architecture Terms
ABI – Application Binary Interface
The interface between compiled programs and the operating system, defining how programs interact at the binary level. Ensures compatibility between applications and system libraries.
API – Application Programming Interface
A set of protocols and tools for building software applications, defining how different software components should interact.
Daemon
A background process that runs continuously and handles requests for services such as printing, file sharing, or email. Named after Maxwell's demon, a fictional being that performs tasks invisibly.
FHS – Filesystem Hierarchy Standard
A standard defining the directory structure and file locations in Unix-like operating systems, ensuring consistency across distributions.
IPC – Inter-Process Communication
Mechanisms that allow processes to communicate and synchronize their actions, including pipes, sockets, shared memory, and message queues.
Kernel
The core component of an operating system that manages system resources, hardware communication, and provides services for user programs.
Namespace
An isolation mechanism that partitions kernel resources such that one set of processes sees one set of resources while another set sees a different set.
POSIX – Portable Operating System Interface
A family of standards specifying the API, command line shells, and utility interfaces for compatibility between operating systems.
Scheduler
The kernel component responsible for determining which processes run when and for how long, managing CPU time allocation.
Subsystem
A distinct component of a larger system that performs specific functions, such as networking, storage, or security management.
🛠️ Shell and Scripting Terms
Bourne Shell
The original Unix shell developed by Stephen Bourne at Bell Labs, serving as the foundation for many modern shells including Bash, Dash, and Ksh.
Builtin
A command that is built into the shell itself rather than being a separate executable program, providing faster execution and access to shell internals.
Expansion
The process by which the shell substitutes text patterns with their corresponding values, including variable expansion, command substitution, and pathname expansion.
Globbing
Pattern matching for filenames using wildcards such as *, ?, and [...] to match multiple files simultaneously.
Herestring
A shell feature that passes a string directly as input to a command, using the <<< operator (e.g., command <<< "string").
Metacharacter
Special characters that have meaning to the shell beyond their literal value, such as $, *, ?, [, ], |, &, ;, <, >.
Parameter
A variable that holds values, referenced using $ notation (e.g., $VAR, ${variable}).
Pipeline
A sequence of commands connected by pipes (|) where the output of one command becomes the input of the next.
Quote
Characters used to preserve the literal value of characters, preventing shell interpretation. Includes single quotes ('...'), double quotes ("..."), and backticks (`...`).
Subshell
A separate shell process spawned by the parent shell to execute commands, typically created by parentheses (...) or command substitution.
🔧 Process and Resource Management
Cgroups – Control Groups
Linux kernel feature that limits, accounts for, and isolates the resource usage (CPU, memory, disk I/O, network) of a collection of processes.
Core Dump
A file containing the memory image of a process at a specific time, usually when the process terminates abnormally, useful for debugging.
Foreground Process
A process that has control of the terminal and receives keyboard input, preventing other commands from being entered until it completes.
Job Control
The ability to manage multiple processes from a single terminal session, including stopping, starting, and switching between jobs.
Nice Value
A value that determines the priority of a process, ranging from -20 (highest priority) to 19 (lowest priority) in Unix systems.
Orphan Process
A process whose parent process has terminated, typically adopted by the init process (PID 1).
Race Condition
A situation where the behavior of a program depends on the relative timing of events, potentially leading to unpredictable results.
Semaphore
A synchronization primitive used to control access to a common resource by multiple processes in a concurrent system.
Signal
A software interrupt delivered to a process to notify it of an event, such as termination request, keyboard interrupt, or timer expiration.
Zombie Process
A process that has completed execution but still has an entry in the process table, waiting for its parent to read its exit status.
🌐 Networking and Security
ACL – Access Control List
A list of permissions attached to an object that specifies which users or system processes are granted access and what operations they can perform.
Chroot Jail
A security mechanism that changes the apparent root directory for a running process and its children, isolating them from the rest of the system.
Firewall
A network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules.
Hardening
The process of securing a system by reducing its surface of vulnerability, typically by removing unnecessary software, closing unused ports, and applying security patches.
Jail – FreeBSD Security Mechanism
A FreeBSD feature that creates a virtualized environment with restricted access to system resources, similar to but more feature-rich than chroot.
MAC – Mandatory Access Control
A security model where access to objects is restricted based on the sensitivity of the information and the formal authorization of users.
Packet Sniffing
The practice of intercepting and logging network traffic passing over a digital network or part of a network for analysis.
Sandboxing
A security mechanism for separating running programs, usually in an effort to reduce system failures or software vulnerabilities.
TLS – Transport Layer Security
A cryptographic protocol designed to provide communications security over a computer network, successor to SSL.
VPN – Virtual Private Network
A technology that creates a safe and encrypted connection over a less secure network, such as the internet.
📊 Performance and Monitoring
IOPS – Input/Output Operations Per Second
A common performance measurement used to benchmark computer storage devices like hard disk drives (HDD), solid state drives (SSD), and storage area networks (SAN).
Latency
The time delay between the cause and the effect of some physical change in a system, often measured in milliseconds or microseconds.
Throughput
The rate of production or the rate at which something is processed, typically measured in units per time period.
Utilization
The degree to which a resource is actively used versus its maximum possible capacity, expressed as a percentage.
Bottleneck
A point in a system where the flow of data is impaired or stopped entirely, limiting overall system performance.
Cache
A hardware or software component that stores data temporarily to serve future requests more quickly than would be possible from the original data source.
Load Average
A measure of the amount of computational work that a computer system performs, averaged over specific time periods (typically 1, 5, and 15 minutes).
Page Fault
An exception raised by hardware when a program accesses a memory page that is mapped into the virtual address space but not loaded in physical memory.
Swap Space
Disk storage used as an extension of physical memory when RAM is full, allowing the system to continue operating but with reduced performance.
Thrashing
A condition in which a computer system performs poorly due to excessive paging activity, where the system spends more time swapping data than executing useful work.
🗃️ File Systems and Storage
Block Device
A type of device file that represents a hardware device that transfers data in fixed-size blocks, such as hard drives and SSDs.
Character Device
A type of device file that represents a hardware device that transfers data character by character, such as terminals and serial ports.
Extent
A contiguous area of storage in a filesystem, used to reduce fragmentation and improve performance compared to linked allocation.
Fragmentation
The process of breaking a file into non-contiguous pieces across a storage medium, reducing read/write performance.
Inode
A data structure in a Unix-style filesystem that describes a file or directory, storing metadata such as permissions, ownership, and timestamps.
Journaling
A filesystem feature that maintains a log of pending changes before committing them, providing crash recovery and data integrity.
Mount Point
A directory in a filesystem where another filesystem is attached, making its contents accessible.
RAID – Redundant Array of Independent Disks
A data storage virtualization technology that combines multiple physical disk drive components into one or more logical units for data redundancy or performance improvement.
Snapshot
A point-in-time copy of a filesystem or volume that captures the exact state of data at a specific moment.
Symlink – Symbolic Link
A special type of file that serves as a reference to another file or directory, similar to a shortcut in Windows.
🧪 Development and Debugging
Assertion
A statement that a predicate is expected to always be true at that point in the code, used for debugging and testing purposes.
Breakpoint
A deliberate stopping or pausing place in a program, put in place for debugging purposes.
Call Stack
A stack data structure that stores information about the active subroutines or functions of a computer program.
Debugger
A computer program used to test and debug other programs by controlling the execution of the target program and examining its state.
Heap
A region of computer memory used for dynamic memory allocation where blocks of memory are allocated and freed in any order.
Profiling
The process of measuring the space or time complexity of a program, typically to identify performance bottlenecks.
Stack Overflow
A programming error that occurs when a program tries to use more space in the call stack than is available.
Static Analysis
The analysis of computer software that is performed without actually executing programs, in contrast to dynamic analysis.
Symbol Table
A data structure used by compilers and debuggers to associate each identifier in a program's source code with information about its declaration or appearance.
Valgrind
A programming tool for memory debugging, memory leak detection, and profiling of Linux programs.
📈 Scripting Concepts
Idempotent
An operation that has the same effect whether applied once or multiple times, crucial for reliable automation and configuration management.
Orthogonal
Features or operations that can be used independently without interfering with each other, promoting modularity and flexibility.
Portable
Code that can run on different systems or environments with minimal or no modifications, following standards and avoiding system-specific features.
Shebang
The character sequence #! at the beginning of a script file that tells the system which interpreter to use to execute the script.
Trap
A shell builtin that allows you to specify commands to be executed when the shell receives specific signals.
Unbuffered
Output that is written directly to the destination without being held in a buffer, ensuring immediate visibility.
Verbose
Producing detailed output about operations being performed, useful for debugging and understanding program behavior.
Whitespace
Characters that are used to separate tokens in a program, including spaces, tabs, and newlines.
Word Splitting
The process by which the shell splits expanded text into separate words based on the Internal Field Separator (IFS).
YAML – YAML Ain't Markup Language
A human-readable data serialization standard commonly used for configuration files and data exchange.
🧾 See Also
- Reference: POSIX Shell
- Reference: Bash Differences
- Reference: BSD vs GNU Tools
- Reference: Common Gotchas
- Reference: Zsh Differences
- System Administration Best Practices
- Unix/Linux System Programming