# CommandSection

title: CAVEATS
content:
<b>killall5</b> is deeply tied to System V init systems and is less relevant in environments predominantly using <b>systemd</b>, although it might exist for compatibility. Its use as a general-purpose command for killing processes is strongly discouraged due to its broad impact; it is intended for system-wide state transitions. Misuse can lead to data loss or system instability. It specifically avoids killing critical system processes like <b>init</b> itself and the current shell/console processes to maintain system control during shutdown.


title: RUNLEVEL UTILITY
content:
<b>killall5</b> is a utility specifically designed for System V init systems to facilitate the termination of processes during runlevel transitions, especially during system shutdown. It's typically invoked by <b>init</b> or <b>shutdown</b> scripts to ensure a clean state before changing to a new runlevel or powering off.


title: DISTINCTION FROM KILLALL
content:
It's crucial to distinguish <b>killall5</b> from the more common <b>killall</b> command. While <b>killall</b> terminates processes by their name, <b>killall5</b> targets virtually all processes running on the system, excluding only critical system processes like <b>init</b> and the current shell. This makes <b>killall5</b> a much broader and more impactful command, primarily used for system-wide cleanup.


title: HISTORY
content:
<b>killall5</b> originates from the System V (SysV) init system, which was the standard Unix-like initialization system for decades before the rise of <b>systemd</b>. It was developed as an integral part of the runlevel concept, ensuring that a system could transition cleanly between different operational states by terminating non-essential processes. Its name directly reflects its SysV heritage. While its direct usage has diminished on systems running <b>systemd</b>, it often persists in compatibility packages (like <b>sysvinit-utils</b> or <b>systemd-sysv</b>) to maintain compatibility with older shutdown scripts and utilities, ensuring that the system's core shutdown procedures remain functional.


title: SYNOPSIS
content:
<i>kind</i> <I>command</I> [<I>flags</I>]<br><br>Common commands:<br>  <i>kind create cluster</i><br>  <i>kind delete cluster</i><br>  <i>kind get clusters</i><br>  <i>kind kubeconfig</i><br>  <i>kind load docker-image</i>


title: PARAMETERS
content:
<b>--name <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the cluster to operate on. Defaults to 'kind'.<br><br><b>--config <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a <i>kind</i> config file for cluster creation or modification.<br><br><b>--image <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Node image to use for the cluster (e.g., <i>kindest/node:vX.Y.Z</i>).<br><br><b>--wait <I>duration</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait for control plane to become ready, e.g., '5m' for 5 minutes. Defaults to '0s'.<br><br><b>--retain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retain nodes for debugging when a cluster creation fails.<br><br><b>--kubeconfig <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the <i>kubeconfig</i> file to write to (for <i>create</i>) or read from (for <i>delete</i>).<br><br><b>--verbosity <I>int</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logging verbosity level. Higher numbers provide more detailed output.<br><br>


title: DESCRIPTION
content:
<i>Kind</i> (Kubernetes IN Docker) is a tool designed to run local Kubernetes clusters using Docker containers as nodes. It was created to facilitate the testing of Kubernetes itself, but has since become a a popular choice for local development, CI/CD pipelines, and learning Kubernetes. By leveraging Docker, <i>kind</i> offers a lightweight and ephemeral solution for spinning up isolated Kubernetes environments quickly. Each node in the cluster is represented by a Docker container, making it easy to create multi-node clusters on a single machine without the overhead of virtual machines. This approach ensures consistent behavior across different environments and simplifies the setup process for developers. <i>Kind</i> supports multi-cluster setups, image loading from Docker to cluster nodes, and highly configurable cluster topologies via a YAML configuration file. It provides a robust, production-grade Kubernetes cluster locally, mimicking the behavior of a cloud-based cluster, making it ideal for validating deployments and experimenting with Kubernetes features before deploying to staging or production environments.


title: CAVEATS
content:
<i>Kind</i> requires Docker to be installed and running on the host system. While efficient, running multi-node clusters can consume significant system resources (CPU, RAM, disk) depending on the cluster size and workload. It's primarily designed for testing and development, not for production deployments. Network configurations within Docker can sometimes pose challenges for complex setups.


title: INSTALLATION
content:
<i>Kind</i> is typically installed by downloading pre-built binaries, using a package manager like Homebrew on macOS, or via <i>go install</i> if Go is installed. It's not a standard package available through <i>apt</i> or <i>yum</i> for most Linux distributions, as it's a Kubernetes tool rather than a core OS utility.


title: CONFIGURATION
content:
<i>Kind</i> clusters can be extensively configured using a YAML configuration file specified with the <i>--config</i> flag. This allows for defining custom node images, Kubernetes versions, API server port, network configuration, and multi-node setups, including control plane and worker nodes.


title: HISTORY
content:
<i>Kind</i> emerged from the Kubernetes community, specifically developed by Kubernetes SIGs (Special Interest Groups). Its primary motivation was to enable efficient and reliable end-to-end testing of Kubernetes itself, ensuring that new features and bug fixes behaved as expected across various Kubernetes versions. Over time, its utility extended beyond just testing, becoming a widely adopted tool for local Kubernetes development and CI/CD environments due to its simplicity, speed, and reliance on Docker. It continues to be actively maintained by the Kubernetes project.


title: SEE ALSO
content:
docker(1): The containerization platform <i>kind</i> relies on., kubectl(1): The command-line tool for interacting with Kubernetes clusters, including those created by <i>kind</i>., minikube: Another popular tool for running local Kubernetes clusters, often using virtual machines., k3s: A lightweight, certified Kubernetes distribution.


title: PARAMETERS
content:
<b><b>--module</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts KInfoCenter with the specified information module active. Common module names include <i>cpu</i>, <i>memory</i>, <i>network</i>, <i>opengl</i>, and <i>kde</i>.<br><br><b><b>--category</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts KInfoCenter with the specified category selected in the sidebar. Examples include <i>hardware</i>, <i>software</i>, and <i>plasma</i>.<br><br><b><b>--systeminfo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly displays general system information, often a default or prominent module within the application.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>kinfocenter</b> application.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message with available command-line options.<br><br>


title: DESCRIPTION
content:
The <b>kinfocenter</b> command launches the KDE Plasma Information Center, a comprehensive graphical application designed to provide users with detailed insights into their system's hardware, software, and KDE Plasma environment configuration. It serves as a central hub where users can access information ranging from CPU and memory statistics, network interface details, and display settings, to specific versions of KDE components and installed applications. <br><br>Beyond simple information display, <b>kinfocenter</b> often includes modules that allow for basic diagnostics and management of certain system aspects. Its user-friendly interface organizes vast amounts of system data into categorized modules, making it easier for users to understand their system's setup, troubleshoot issues, or simply explore the capabilities of their KDE Plasma desktop. It's an indispensable tool for both casual users and system administrators operating within the KDE Plasma ecosystem.


title: CAVEATS
content:
<b>kinfocenter</b> is a graphical application and requires an active X server or Wayland compositor to run. While it might technically launch on other desktop environments, its full functionality and relevance are primarily within a KDE Plasma desktop environment. Its accuracy in reporting system information relies heavily on the underlying operating system's ability to provide data (e.g., kernel modules, <i>udev</i>, <i>D-Bus</i> services).


title: MODULAR DESIGN
content:
<b>kinfocenter</b> is built with a modular architecture, meaning its various information sections (e.g., CPU, memory, network) are provided by individual modules. This design allows for flexibility, extensibility, and easy updates. Third-party applications or system components can integrate their own information modules into KInfoCenter, making it a truly centralized information hub.


title: INTEGRATION WITH SYSTEM SETTINGS
content:
In many KDE Plasma installations, <b>kinfocenter</b> can be accessed directly from the <i>System Settings</i> application, often found under a 'Hardware Information' or 'About This System' section. This integration ensures that users have a seamless path to detailed system information alongside their system configuration options.


title: HISTORY
content:
The <b>kinfocenter</b> application has been a foundational component of the KDE desktop environment since its early versions. It evolved from and alongside the KDE Control Center (<i>kcontrol</i> or <i>kcontrolcenter</i>), which historically combined both system information and configuration settings. With the maturation of KDE Plasma, the functionality was split: <i>System Settings</i> became the primary configuration tool, and <b>kinfocenter</b> was solidified as the dedicated application for displaying comprehensive system information. This specialization allows <b>kinfocenter</b> to focus purely on presenting hardware and software details in a clear, organized, and user-friendly manner, reflecting KDE's commitment to providing intuitive system management tools.


title: SYNOPSIS
content:
<i>kinit</i> [<b>-A</b>] [<b>-f</b>] [<b>-F</b>] [<b>-p</b>] [<b>-P</b>] [<b>-R</b>] [<b>-v</b>] [<b>-l</b> <i>lifetime</i>] [<b>-s</b> <i>start_time</i>] [<b>-r</b> <i>renewable_life</i>] [<b>-k</b> [<b>-t</b> <i>keytab_file</i>]] [<b>-C</b> <i>cache_name</i>] [<i>principal</i>]


title: PARAMETERS
content:
<b><b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not include addresses in the ticket. This can be useful in environments where your IP address frequently changes (e.g., VPN).<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Request a forwardable ticket. This allows the TGT to be forwarded to another host, enabling multi-hop authentication.<br><br><b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not request a forwardable ticket. This is the default behavior if <b>-f</b> is not specified.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Request a proxiable ticket. Similar to forwardable, but for obtaining new tickets locally on behalf of the principal.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not request a proxiable ticket. This is the default behavior if <b>-p</b> is not specified.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Request a renewable ticket. This allows the ticket's lifetime to be extended without requiring a new password-based authentication.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Be verbose. Display more information during the authentication process.<br><br><b><b>-l</b> <i>lifetime</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the requested lifetime of the TGT. Examples: '12h' for 12 hours, '3d' for 3 days.<br><br><b><b>-s</b> <i>start_time</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the desired start time of the TGT. This can be used to request a ticket that becomes valid in the future.<br><br><b><b>-r</b> <i>renewable_life</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the maximum renewable lifetime of the TGT. This is only applicable if <b>-R</b> is also specified.<br><br><b><b>-k</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a <i>keytab</i> file for authentication instead of prompting for a password. This is essential for non-interactive use, such as in scripts.<br><br><b><b>-t</b> <i>keytab_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the <i>keytab</i> file to be used with the <b>-k</b> option. If omitted, the default <i>keytab</i> (e.g., <i>/etc/krb5.keytab</i>) is used.<br><br><b><b>-C</b> <i>cache_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path or name of the credentials cache file where the TGT will be stored. This overrides the default location.<br><br><b><i>principal</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Kerberos principal name to obtain a ticket for (e.g., <i>user@REALM.COM</i>). If omitted, <i>kinit</i> attempts to determine the principal from the current user and realm configuration.<br><br>


title: DESCRIPTION
content:
<i>kinit</i> is the primary command-line tool used to obtain and cache Kerberos ticket-granting tickets (TGTs). This initial ticket is essential for authenticating to a Kerberos Key Distribution Center (KDC) and subsequently accessing various Kerberos-protected services without repeated password prompts.<br><br>When invoked, <i>kinit</i> typically prompts the user for their Kerberos principal's password. Upon successful authentication with the KDC, a TGT is issued and stored in the user's default credentials cache. This TGT acts as proof of identity and is later used by other Kerberos-aware applications (e.g., <i>ssh</i>, <i>scp</i>, <i>ftp</i>) to request service-specific tickets from the KDC, enabling secure access to network resources.<br><br>Beyond password-based authentication, <i>kinit</i> also supports non-interactive authentication using a <i>keytab</i> file, which is crucial for scripts and automated processes. It can also manage ticket properties like lifetime, renewability, and forwarding capabilities.


title: CAVEATS
content:
<b>Time Synchronization:</b> Kerberos relies heavily on accurate time synchronization. A significant clock skew (typically more than 5 minutes) between the client, KDC, and services can prevent successful authentication, resulting in 'Clock skew too great' errors.<br><br><b>Password Security:</b> When <i>kinit</i> prompts for a password, the input is often echoed to the terminal, and it might be stored in command history. For automated processes or enhanced security, using <i>keytab</i> files (with the <b>-k</b> option) is strongly recommended over supplying passwords interactively or via scripts.<br><br><b>Firewall Considerations:</b> Ensure that network firewalls allow communication on standard Kerberos ports (UDP/TCP 88 for KDC, UDP/TCP 464 for password changes) to reach the Kerberos Key Distribution Center.


title: CREDENTIALS CACHE
content:
The <i>credentials cache</i> is a temporary storage location (commonly a file like <i>/tmp/krb5cc_&lt;uid&gt;</i>, where &lt;uid&gt; is the user's ID, or a memory-based cache) where <i>kinit</i> stores the obtained TGT and subsequent service tickets. This cache is automatically consulted by other Kerberos-aware applications to retrieve tickets, thereby avoiding repeated password prompts. The default cache location can often be overridden by the <b>KRB5CCNAME</b> environment variable or the <b>-C</b> option.


title: KEYTAB FILES
content:
A <i>keytab</i> file (short for 'key table') contains one or more pairs of Kerberos principals and their encrypted keys. It allows <i>kinit</i> (and other Kerberos utilities) to authenticate to the KDC without requiring human interaction, making it invaluable for background processes, cron jobs, and service accounts. Using <b>kinit -k</b> specifies authentication via a <i>keytab</i> rather than a password. These files are highly sensitive and must be kept secure, typically with strict file permissions.


title: HISTORY
content:
<i>kinit</i> is a foundational client command within the <b>MIT Kerberos V5</b> distribution, which originated from the Massachusetts Institute of Technology's Project Athena in the 1980s. The V5 protocol, largely implemented by <i>kinit</i>, represented a significant evolution from the earlier Kerberos V4, introducing enhanced security features, improved cross-realm authentication, and greater flexibility. It has since become the de facto standard for secure authentication in countless distributed computing environments.


title: SYNOPSIS
content:
<B>kismet</B> [<I>options</I>]<br><br><I>Example usage:</I><br><B>kismet</B> <B>-c</B> <I>wifi:wlan0:name=mywifi</I> <B>--daemonize</B><br><B>kismet</B> <B>--list-datasources</B>


title: PARAMETERS
content:
<b>-c <source>, --capture-source <source></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a capture source, which defines the interface and data type (e.g., <I>wifi:wlan0</I>, <I>bluetooth:hci0</I>). Multiple sources can be specified.<br><br><b>-f <configfile>, --config <configfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses an alternate configuration file instead of the default.<br><br><b>-L <logtypes>, --log-types <logtypes></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the types of logs to create (e.g., <I>kismet,pcap,gps</I>). Comma-separated list.<br><br><b>--daemonize</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the Kismet server process in the background as a daemon.<br><br><b>--dump-sources</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a list of available capture sources detected by Kismet.<br><br><b>--generate-api-key</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a new API key for accessing the Kismet web interface and API.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Kismet version information and exits.<br><br>


title: DESCRIPTION
content:
Kismet is a powerful, <I>passive</I> wireless network and device detector, sniffer, and intrusion detection system. It operates by collecting packets without sending any, making it stealthy. Initially designed for 802.11 Wi-Fi networks, modern Kismet (often referred to as Kismet NewCore) has expanded its capabilities to support a wide range of wireless protocols, including Bluetooth, Zigbee, and various RF signals, with the use of appropriate hardware and plugins.<br><br>Kismet can identify visible networks, hidden networks, and even non-beaconing networks by analyzing data traffic. Its primary functions include <I>network discovery</I>, <I>packet sniffing</I>, <I>logging</I> (in various formats like PCAP), and <I>intrusion detection</I> by flagging suspicious activities or known attacks. It can also help map network topology and identify connected clients. Unlike active scanners, Kismet does not transmit data, relying solely on received packets for analysis, making it an excellent tool for <I>forensics</I>, <I>security auditing</I>, and <I>troubleshooting</I> wireless environments.


title: CAVEATS
content:
<I>Requires Specialized Hardware:</I> Kismet necessitates a wireless adapter capable of monitor mode. For protocols other than Wi-Fi, specific Software Defined Radios (SDRs) or Bluetooth dongles may be required.<br><br><I>Root Privileges:</I> Running Kismet often requires root access to properly configure and manage network interfaces for packet capture.<br><br><I>Resource Usage:</I> Continuous monitoring and extensive logging, especially PCAP logging, can consume significant CPU, memory, and disk space.<br><br><I>Configuration Complexity:</I> While basic usage is straightforward, advanced features, custom data sources, and intricate filtering require detailed configuration, often through the Kismet configuration files.


title: MONITOR MODE REQUIREMENT
content:
Kismet functions by putting your wireless network interface into <I>monitor mode</I> (also known as RFMON or promiscuous mode). In this mode, the adapter listens to all wireless traffic on a channel, not just traffic intended for it. This is fundamental to Kismet's passive sniffing capabilities.


title: CLIENT-SERVER ARCHITECTURE
content:
Modern Kismet operates with a server component (<I>kismet_server</I>) which handles the actual packet capture, processing, and data storage. Users typically interact with Kismet through its <I>web interface</I> (accessible via a browser), which communicates with the server via an API. This separation allows for remote monitoring and more flexible deployments.


title: EXTENSIBILITY VIA PLUGINS
content:
Kismet is highly extensible through a plugin architecture. Plugins can add support for new hardware, decode additional protocols, provide custom analysis, or integrate with external systems, significantly expanding Kismet's utility.


title: HISTORY
content:
Kismet was first released around <I>2001</I> as a dedicated 802.11 wireless network detector and intrusion detection system. Its initial versions featured a <I>ncurses</I> text-based user interface for real-time monitoring and analysis. Over the years, Kismet underwent significant development, culminating in the "Kismet NewCore" architecture, which moved away from the traditional console UI to a <I>modern web-based interface</I>.<br><br>This architectural shift also brought about a modular design, enabling support for a vastly wider array of wireless protocols beyond Wi-Fi, such as <I>Bluetooth</I>, <I>Zigbee</I>, and various <I>RF signals</I>, leveraging Software Defined Radios (SDRs) and specialized capture sources. Kismet's development has consistently focused on improving its passive detection capabilities, logging flexibility, and integrating with modern hardware, maintaining its status as a premier tool for wireless security and analysis.


title: SYNOPSIS
content:
<i>Kite</i> was not a standard command-line utility in the vein of `ls` or `grep`. Instead, it was an application managed through a command-line interface, typically invoked as:<br><br><b>kite &lt;action&gt; [options]</b><br><br>Where <b>&lt;action&gt;</b> represented a specific operation to manage the <i>Kite</i> service or application, such as starting, stopping, installing, or querying its status.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the <i>Kite</i> CLI or a specific action.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed version of the <i>Kite</i> application.<br><br><b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to install or set up the <i>Kite</i> application and its components.<br><br><b>start</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to initiate the <i>Kite</i> background service.<br><br><b>stop</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to terminate the <i>Kite</i> background service.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to check the current operational status of the <i>Kite</i> service.<br><br><b>log</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to display or manage <i>Kite</i>'s application logs.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An action to view or modify <i>Kite</i>'s configuration settings.<br><br>


title: DESCRIPTION
content:
<i>Kite</i> was an AI-powered coding assistant designed to enhance developer productivity by providing real-time code completions, intelligent snippets, and instant documentation lookup directly within popular code editors. It aimed to integrate seamlessly with various Integrated Development Environments (IDEs) and text editors across Linux, macOS, and Windows platforms. While lauded for its potential to speed up coding, its background processes and resource consumption were sometimes points of discussion among users. The development and support for the <i>Kite</i> desktop application largely ceased in early 2023.


title: CAVEATS
content:
The command '<i>kite</i>' is <b>not a standard Linux command-line utility</b> found in typical distributions. It primarily refers to the <i>Kite AI Code Completion Tool</i>, a third-party application.<br><br>As of early 2023, the development and active support for the <i>Kite</i> desktop application (kite.com) have largely ceased, meaning its functionality and availability are now severely limited or non-existent.


title: INTEGRATION
content:
<i>Kite</i> primarily operated as a background service that communicated with editor plugins. The '<i>kite</i>' command-line interface was generally used for managing this service (installation, starting/stopping, status checks) rather than direct text manipulation or system interaction.


title: HISTORY
content:
<i>Kite</i> was developed by a company named <i>Kite, Inc.</i>, with its public launch around 2014-2015. It gained significant attention for its advanced AI capabilities in code completion, particularly for Python and JavaScript, integrating with popular editors like VS Code, Sublime Text, Vim, Atom, and others. The company transitioned its focus and ultimately ceased development of the desktop product in early 2023, advising users to switch to alternative AI coding tools like GitHub Copilot or similar editor-native solutions.


title: PARAMETERS
content:
<b><b>-p</b>, <b>--processes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Monitor and map process parent-child relationships and inter-process communication (IPC).</i><br><br><b><b>-n</b>, <b>--network</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Visualize network connections, including open ports, active sockets, and remote endpoints.</i><br><br><b><b>-f</b>, <b>--files</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Track file access patterns and dependencies, identifying which processes use which files.</i><br><br><b><b>-d</b> <i>LEVEL</i>, <b>--depth</b>=<i>LEVEL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Set the recursive depth for dependency analysis (e.g., 1 for direct, 0 for unlimited).</i><br><br><b><b>-t</b> <i>INTERVAL</i>, <b>--interval</b>=<i>INTERVAL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the refresh interval in seconds for real-time monitoring.</i><br><br><b><b>-o</b> <i>FILE</i>, <b>--output</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Direct output to a specified file instead of standard output. Supports various formats (e.g., JSON, Graphviz DOT).</i><br><br><b><b>-a</b> <i>TYPE</i>, <b>--analyze</b>=<i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Analyze historical data from specified logs or snapshots. `TYPE` can be `boot`, `session`, `custom`.</i><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enable verbose output, showing more detailed information during execution.</i><br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Display a help message and exit.</i><br><br>


title: DESCRIPTION
content:
<b>kiterunner</b> is a powerful diagnostic tool designed to map and visualize the intricate dependencies within a Linux system. It offers a unique perspective by treating processes, network sockets, and file operations as "kites" connected by "strings" of communication and resource utilization.<br><br>This command helps system administrators and developers understand complex system behavior, identify performance bottlenecks, detect anomalous activities, and troubleshoot elusive issues. It can operate in real-time monitoring mode or analyze historical logs, providing insights into how different components interact and rely on each other.<br><br>Its primary goal is to make the invisible connections visible, thereby simplifying the analysis of distributed systems and microservices architectures. By presenting data in an intuitive, interconnected manner, <b>kiterunner</b> aims to reduce the time spent on diagnostics and improve overall system health.


title: CAVEATS
content:
<b>kiterunner</b> can be resource-intensive, especially when monitoring large systems or with a high depth level. <br>It often requires <i>root privileges</i> to access certain system metrics and network information. <br>The accuracy of dependency mapping depends on the underlying kernel tracing capabilities and available system calls. <br>Graphical visualization requires external tools (e.g., Graphviz) if the output format is DOT.


title: OUTPUT FORMATS
content:
<b>kiterunner</b> supports multiple output formats including plain text for console viewing, <br><i>JSON</i> for machine parsing, and <i>Graphviz DOT</i> for generating visual graphs. <br>Specify the desired format using the <b>--output</b> option with a filename suffix, e.g., <b>-o connections.dot</b>.


title: TARGETING SPECIFIC PROCESSES/NETWORKS
content:
You can specify particular Process IDs (<i>PIDs</i>) or network interfaces/IP addresses as targets to focus the analysis. <br>For example, <b>kiterunner -p 12345</b> will only map dependencies originating from or related to PID 12345. <br>Similarly, <b>kiterunner -n eth0</b> focuses on traffic through the 'eth0' interface.


title: HISTORY
content:
<b>kiterunner</b> originated in the late 2010s as an open-source project aiming to bridge the gap between low-level system tracing tools and high-level system observability platforms. <br>It was inspired by the complexity of microservices architectures and the need for a simplified, holistic view of inter-component communication. <br>Its development has been community-driven, with contributions focusing on improved visualization algorithms and support for diverse system metrics and operating environments.


title: PARAMETERS
content:
<b><b>-w, --wordlist</b> &lt;PATH&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to one or more wordlists for brute-forcing paths. Multiple wordlists can be specified by repeating the flag or providing a comma-separated list.<br><br><b><b>-x, --extensions</b> &lt;EXTS&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of extensions to append to discovered paths (e.g., <i>.php,.html,.js</i>).<br><br><b><b>-H, --header</b> &lt;HEADER&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a custom HTTP header to all requests (e.g., <i>'Authorization: Bearer token'</i>). Can be specified multiple times.<br><br><b><b>-d, --data</b> &lt;DATA&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP POST data to send with requests. Typically used in conjunction with <i>-X POST</i>.<br><br><b><b>-X, --method</b> &lt;METHOD&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP method to use for requests (e.g., <i>GET, POST, PUT</i>). Defaults to <i>GET</i>.<br><br><b><b>-c, --concurrency</b> &lt;NUM&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of concurrent requests to send (default: <i>100</i>).<br><br><b><b>-t, --timeout</b> &lt;SECONDS&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Request timeout in seconds (default: <i>10</i>).<br><br><b><b>-s, --status-codes</b> &lt;CODES&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of HTTP status codes to consider valid discoveries (e.g., <i>200,301,403</i>).<br><br><b><b>-S, --skip-status-codes</b> &lt;CODES&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of HTTP status codes to ignore (e.g., <i>404,500</i>).<br><br><b><b>-L, --follow-redirects</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow HTTP redirects for discovered paths.<br><br><b><b>--proxy</b> &lt;URL&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP/SOCKS5 proxy to use for requests (e.g., <i>http://127.0.0.1:8080</i>).<br><br><b><b>-o, --output</b> &lt;FILE&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write results to the specified file.<br><br><b><b>-v, --verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details during the scan.<br><br><b><b>--crawl</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable recursive crawling of discovered directories, adding their content to the scan scope.<br><br><b><b>--config</b> &lt;FILE&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a <i>YAML</i> configuration file to load scan settings.<br><br><b><b>--delay</b> &lt;MILLISECONDS&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delay between requests in milliseconds to avoid overwhelming the target.<br><br><b><b>--filter-response-size</b> &lt;FILTER&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter responses by size (e.g., <i>'+100,-200'</i> to include sizes over 100 bytes and exclude sizes over 200 bytes).<br><br><b><b>--ignore-wildcard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to ignore wildcard responses where the server returns a consistent response for non-existent paths, reducing false positives.<br><br>


title: DESCRIPTION
content:
<i>Kiterunner's</i> <b>brute</b> subcommand performs web content discovery by systematically brute-forcing paths against a target URL or host. It iterates through permutations from provided wordlists and appends extensions to uncover hidden or unlinked directories and files.<br><br>The tool intelligently identifies valid paths by analyzing response sizes, HTTP status codes, and other filtering criteria. It's an essential utility for security professionals conducting reconnaissance, aiming to expand the known attack surface and discover potentially sensitive endpoints or misconfigurations on web applications. It can be tailored with numerous options for highly specific and effective scans.


title: CAVEATS
content:
Usage of <b>kiterunner-brute</b> can generate significant network traffic, potentially triggering intrusion detection/prevention systems (<i>IDS/IPS</i>) or web application firewalls (<i>WAFs</i>).<br><br>The effectiveness of the brute-force attack is highly dependent on the quality and relevance of the provided wordlists.<br><br>Always ensure you have explicit authorization before performing scans against any target, as unauthorized use may be illegal.


title: WORDLIST STRATEGY
content:
The choice of wordlists is paramount for the effectiveness of <b>kiterunner-brute</b>. For optimal results, consider using technology-specific wordlists (e.g., for <i>Node.js, PHP, ASP.NET</i>) or those derived from public datasets like <i>CommonSpeak</i> or <i>SecLists</i>.<br><br>Combining multiple wordlists using the <i>-w</i> flag can significantly increase coverage of potential paths.


title: WILDCARD HANDLING
content:
<b>Kiterunner-brute</b> includes robust wildcard detection logic, which helps in automatically identifying and ignoring responses that are consistent for both valid and invalid paths. This feature, enabled by <i>--ignore-wildcard</i>, is crucial for reducing noise and false positives in the scan results, making the output more actionable.


title: HISTORY
content:
<b>Kiterunner</b>, including its <b>brute</b> subcommand, was developed by <i>Assetnote</i>, a company specializing in attack surface management. It emerged as an open-source tool to enhance web content discovery, particularly in the context of identifying hidden assets and vulnerabilities within modern web applications. Its development focuses on performance, flexibility, and intelligent filtering to minimize false positives, continuously incorporating community feedback and new techniques for effective reconnaissance.


title: SYNOPSIS
content:
<b>Building a custom KB:</b><br><pre><code>kiterunner build-kb -w &lt;wordlist_path&gt; [-w &lt;another_wordlist&gt;...] [-r &lt;rules_path&gt;] -o &lt;output_kb_path&gt; [-f]</code></pre><br><b>Updating the official KB:</b><br><pre><code>kiterunner update-kb [-o &lt;output_kb_path&gt;] [-f]</code></pre>


title: PARAMETERS
content:
<b><code>-w &lt;wordlist_path&gt;</code>, <code>--wordlist &lt;wordlist_path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For <code>build-kb</code>)</i> Specifies the path to one or more wordlists to be included in the Knowledge Base. This option can be used multiple times to combine several wordlists.<br><br><b><code>-r &lt;rules_path&gt;</code>, <code>--rules &lt;rules_path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For <code>build-kb</code>)</i> Specifies the path to one or more rule files that define how the words from the wordlists should be transformed or combined. This allows for complex pattern generation.<br><br><b><code>-o &lt;output_kb_path&gt;</code>, <code>--output &lt;output_kb_path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output path and filename for the generated or updated Knowledge Base (e.g., <code>./kiterunner.kb</code>). For <code>update-kb</code>, the default output is <code>kiterunner.kb</code> in the current directory.<br><br><b><code>-f</code>, <code>--force</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the operation to overwrite an existing Knowledge Base file at the specified output path without prompting for confirmation.<br><br><b><code>-h</code>, <code>--help</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options for the respective subcommand and exits.<br><br>


title: DESCRIPTION
content:
<p>The term <i>kiterunner-kb</i> refers to the functionalities within the <a href="https://github.com/assetnote/kiterunner">Kiterunner</a> tool that are dedicated to managing its 'Knowledge Base' (KB) files. Unlike a standalone command, <i>kiterunner-kb</i> conceptually encompasses operations performed via Kiterunner's subcommands such as <b><code>kiterunner build-kb</code></b> and <b><code>kiterunner update-kb</code></b>.<br><br>A Kiterunner Knowledge Base is a highly optimized binary file (with a <i>.kb</i> extension) that stores a vast collection of known web endpoints, directories, and associated rules. This structure allows Kiterunner to perform extremely fast and efficient enumeration of web attack surfaces by minimizing redundant requests and intelligently guessing paths based on observed server responses and pre-defined patterns.<br><br>The <b><code>kiterunner build-kb</code></b> subcommand is used to create a custom Knowledge Base from local wordlists and rules files, giving users flexibility to tailor their enumeration efforts. Conversely, the <b><code>kiterunner update-kb</code></b> subcommand is designed to download and update the official, pre-built Knowledge Base provided by Assetnote, ensuring users have access to the latest and most comprehensive set of enumeration data. These KB files are crucial for Kiterunner's performance and effectiveness in discovering hidden or obscure web resources.</p>


title: CAVEATS
content:
The term <i>kiterunner-kb</i> is a conceptual reference rather than a direct executable command. All Knowledge Base management operations are performed via the main <b><code>kiterunner</code></b> command and its specific subcommands (e.g., <b><code>kiterunner build-kb</code></b>, <b><code>kiterunner update-kb</code></b>). Users must have the Kiterunner tool installed and available in their system's PATH. Building large custom Knowledge Bases with <b><code>kiterunner build-kb</code></b> can be a memory and CPU-intensive process, potentially requiring significant time depending on the size and number of input wordlists and rules.


title: KNOWLEDGE BASE TYPES
content:
Kiterunner utilizes two primary types of Knowledge Bases:<br><ul><li><b>Official Knowledge Base:</b> Provided and maintained by Assetnote, updated regularly via <b><code>kiterunner update-kb</code></b>. This is the recommended default for most users.</li><li><b>Custom Knowledge Base:</b> Built by users from their own wordlists and rules using <b><code>kiterunner build-kb</code></b>. This offers maximum flexibility for specialized enumeration tasks.</li></ul>


title: KB FILE USAGE
content:
Once a Knowledge Base (either official or custom) is available, it can be utilized by the main <b><code>kiterunner scan</code></b> command using the <b><code>-kb</code></b> or <b><code>--kb</code></b> flag. For example: <br><pre><code>kiterunner scan -u https://example.com -kb ./my_custom.kb</code></pre>This tells Kiterunner which pre-compiled set of paths and rules to use for its web enumeration process.


title: HISTORY
content:
Kiterunner is a web path enumeration tool developed by Assetnote, a company specializing in attack surface management. It was created to address the limitations of traditional wordlist-based enumeration tools by leveraging a highly efficient binary 'Knowledge Base' (KB) format. The development of the KB management features (like building and updating) was crucial to enable both customizability and the ability to distribute regularly updated enumeration data, significantly enhancing the tool's performance and accuracy in discovering hidden web resources.


title: SYNOPSIS
content:
<b>kiterunner-scan</b> <I>options</I> <I>arguments</I><br><br><i>Note:</i> While `kiterunner-scan` is used here per prompt, the typical invocation for Kiterunner's scan functionality is `<b>kiterunner scan</b> <I>options</I> <I>arguments</I>.


title: PARAMETERS
content:
<b>-u, --url</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target URL for the scan (e.g., `http://example.com/api`).<br><br><b>-w, --wordlist</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the Kiterunner database (DB) file or a custom text wordlist for path enumeration.<br><br><b>-x, --extension</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of file extensions to append to discovered paths (e.g., `.php,.bak`).<br><br><b>-o, --output</b><br>&nbsp;&nbsp;&nbsp;&nbsp;File path to write the scan results to.<br><br><b>--open-api</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to an OpenAPI/Swagger definition file (JSON/YAML) for schema-based endpoint discovery.<br><br><b>--graphql</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a GraphQL introspection schema file for intelligent endpoint scanning.<br><br><b>--threads</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of concurrent requests to send during the scan, impacting speed.<br><br><b>--header</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a custom HTTP header to all requests (e.g., `Authorization: Bearer token`). Can be used multiple times.<br><br><b>--data</b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP request body to send with requests (e.g., `name=value`). Useful for POST requests.<br><br><b>--proxy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an HTTP or SOCKS proxy for all requests (e.g., `http://127.0.0.1:8080`).<br><br><b>--insecure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip SSL certificate verification for HTTPS connections.<br><br><b>--timeout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a request timeout in seconds for each HTTP request.<br><br>


title: DESCRIPTION
content:
Kiterunner is a powerful web reconnaissance tool primarily used for scanning API endpoints. The `kiterunner-scan` command (often invoked as `kiterunner scan`) is its core functionality, designed to uncover hidden paths, files, and potential vulnerabilities in web applications. It leverages a unique approach by processing OpenAPI/Swagger definitions and GraphQL schemas to identify endpoints that might not be immediately visible through traditional enumeration. Beyond schema-based discovery, it also supports brute-forcing paths using custom wordlists, similar to tools like Gobuster, allowing for comprehensive coverage. This makes it an invaluable asset for security professionals and penetration testers aiming to thoroughly map out a web application's attack surface, especially those relying heavily on APIs. It can discover endpoints, identify HTTP methods, and even reveal sensitive paths or files.


title: CAVEATS
content:
<ul><li><I>Performance:</I> Large wordlists or extensive schema files combined with high thread counts can consume significant network resources and potentially trigger rate limiting or Web Application Firewalls (WAFs).</li><li><I>Database Requirement:</I> For efficient wordlist-based scanning, Kiterunner often relies on its optimized proprietary database (DB file) which needs to be generated using `kiterunner build` or downloaded separately. Using a standard text wordlist might be less efficient.</li><li><I>False Positives/Negatives:</I> Like any scanner, it might produce false positives (reporting non-existent endpoints) or false negatives (missing real ones) depending on server responses and configuration.</li><li><I>Legal & Ethical Use:</I> Always ensure you have explicit permission before scanning any target system. Unauthorized scanning is illegal and unethical.</li></ul>


title: KITERUNNER DATABASE (DB FILE)
content:
Kiterunner's primary strength for wordlist-based scanning comes from its optimized database (DB) files. These contain pre-processed and compressed wordlists specifically designed for fast and effective endpoint discovery, often outperforming raw text wordlists. These files need to be generated using the `kiterunner build` command or downloaded from official sources to leverage Kiterunner's full potential for efficient brute-forcing.


title: SCHEMA-BASED SCANNING
content:
One of Kiterunner's distinguishing features is its ability to parse OpenAPI/Swagger definitions and GraphQL schemas. By providing these files via the `--open-api` or `--graphql` options, the tool can intelligently identify and test endpoints, parameters, and HTTP methods defined within the API specification. This significantly reduces the guesswork in API reconnaissance by targeting known API structures directly.


title: HISTORY
content:
Kiterunner was developed and open-sourced by Assetnote, a company specializing in external attack surface management. Its creation aimed to provide security professionals with a powerful and efficient tool for API endpoint discovery, specifically addressing the challenges posed by modern web applications relying heavily on OpenAPI/Swagger and GraphQL specifications. It quickly gained traction in the penetration testing community for its speed, unique methodology, and dual capability of both schema-aware scanning and traditional brute-forcing, filling a crucial gap in existing reconnaissance tools.


title: PARAMETERS
content:
<b>-o, --output <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the output file where the generated wordlist will be saved. If not specified, the wordlist is printed to standard output (stdout).<br><br><b>--include <i>CATEGORY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes paths from a specified category (e.g., 'common', 'cms', 'frameworks'). This option can be used multiple times to include paths from various categories.<br><br><b>--exclude <i>CATEGORY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes paths from a specified category. This is useful for reducing the wordlist size or avoiding irrelevant entries for a specific target. Can be used multiple times.<br><br><b>-x, --extensions <i>CSV</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends a comma-separated list of common file extensions (e.g., 'php,asp,html') to the paths. This creates variations like <i>admin.php</i>, <i>admin.asp</i>, etc.<br><br><b>--path-list <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a path to a file containing additional custom paths to be included in the wordlist. This option can be specified multiple times.<br><br><b>--no-default</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the inclusion of Kiterunner's default common paths in the generated wordlist, allowing for a strictly custom or category-based list.<br><br><b>--force-overwrite</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the tool to overwrite the output file if it already exists, without prompting for confirmation.<br><br><b>--path-prefix <i>STRING</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified string as a prefix to every generated path (e.g., <i>/api/v1/</i>).<br><br><b>--path-suffix <i>STRING</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified string as a suffix to every generated path (e.g., <i>.bak</i>).<br><br><b>--max-length <i>INTEGER</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum allowed length for paths to be included in the wordlist. Paths exceeding this length are discarded.<br><br><b>--min-length <i>INTEGER</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum required length for paths to be included in the wordlist. Paths shorter than this length are discarded.<br><br><b>--no-recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the generation of recursive paths (e.g., if <i>/admin</i> is a path, it won't generate <i>/admin/dashboard</i> if recursion logic applies).<br><br><b>--no-index-files</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the inclusion of common index files (e.g., <i>index.php</i>, <i>default.aspx</i>, <i>home.html</i>) in the wordlist.<br><br><b>--deduplicate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures that all paths in the final wordlist are unique by removing any duplicate entries. This is often an implicit behavior but can be explicitly specified.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message outlining command usage and options.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the Kiterunner tool.<br><br>


title: DESCRIPTION
content:
<i>kiterunner-wordlist</i> is a powerful utility bundled with the <i>Kiterunner</i> web enumeration tool. Its primary function is to generate highly customizable wordlists specifically designed for discovering hidden directories, files, and endpoints on web applications. Unlike generic wordlists, <i>kiterunner-wordlist</i> leverages an extensive knowledge base, including common paths, technology-specific paths (e.g., for CMS, frameworks), and common file extensions, to produce wordlists optimized for targeted reconnaissance. Users can include or exclude specific categories, append custom path lists, add prefixes and suffixes, and filter by path length, enabling the creation of extremely focused and effective enumeration lists. This tailored approach significantly enhances the efficiency and accuracy of web security assessments by reducing noise and focusing on relevant attack surface areas.


title: CAVEATS
content:
Generating comprehensive wordlists, especially with many inclusions and extensions, can result in very large files that consume significant disk space and memory.<br>The time required for wordlist generation can vary greatly depending on the selected categories, custom paths, and the complexity of extensions/prefixes/suffixes.<br><i>kiterunner-wordlist</i> is part of the <i>Kiterunner</i> suite and requires its proper installation to function.<br>The effectiveness of the generated wordlist is highly dependent on the target application's technology stack and its specific configuration.


title: COMMON USAGE PATTERNS
content:
Users often combine categories like <i>--include common --include cms</i> with specific extensions like <i>--extensions php,html</i> to create a general but robust wordlist for PHP-based CMS applications. For more targeted scans, <i>--no-default</i> combined with <i>--path-list</i> and <i>--path-prefix</i> is used to focus on known application structures.


title: INTEGRATION WITH KITERUNNER
content:
The wordlists generated by <i>kiterunner-wordlist</i> are designed to be directly fed into the main <i>kiterunner</i> command using its wordlist options (e.g., <i>-w</i> or <i>--wordlists</i>). This seamless integration allows for rapid deployment of custom reconnaissance strategies.


title: HISTORY
content:
<i>kiterunner-wordlist</i> is an integral component of the <i>Kiterunner</i> project, developed by Assetnote, a company known for its external attack surface management solutions. Kiterunner was designed to enhance traditional web enumeration techniques by leveraging a vast dataset of known web paths and configurations. The <i>kiterunner-wordlist</i> utility was introduced to provide users with the flexibility to craft highly specialized wordlists, moving beyond generic lists to provide more targeted and efficient reconnaissance, thereby improving the overall effectiveness of web security assessments in an evolving threat landscape.


title: SYNOPSIS
content:
<b>kitex</b> [<I>global-options</I>] <I>command</I> [<I>command-options</I>] [<I>arguments</I>]<br>Example: <b>kitex</b> new <I>my_service</I><br>Example: <b>kitex</b> update <I>path/to/idl.thrift</I>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <b>kitex</b> command or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current version of the <b>kitex</b> CLI tool.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information during execution.<br><br>


title: DESCRIPTION
content:
kitex is a command-line interface (CLI) tool for the Kitex RPC framework, primarily developed by ByteDance for building high-performance Go-based microservices. It streamlines the development workflow by providing functionalities for code generation, project initialization, and updating existing services. The kitex command helps developers quickly set up new Kitex projects from IDL (Interface Definition Language) files like Thrift or Protobuf, generate boilerplate code, manage dependencies, and facilitate updates as service definitions evolve. It is an essential tool for developers working with the Kitex framework to ensure consistency and accelerate service development, focusing on efficiency and scalability in Go-based distributed systems.


title: CAVEATS
content:
Not a standard Linux utility; it must be installed separately, typically via `go install`.<br>Requires a Go development environment to be set up.<br>Specifically designed for the ByteDance Kitex RPC framework; not applicable to other RPC technologies or general-purpose development.


title: SUBCOMMANDS
content:
The <b>kitex</b> command operates primarily through a series of subcommands, each responsible for a specific task.<br>Common subcommands include:<br><i><b>new</b></i>: Generates a new Kitex service project from an IDL.<br><i><b>update</b></i>: Updates an existing Kitex service, typically regenerating code after IDL changes.<br><i><b>model</b></i>: Generates Go struct models from IDL files.<br><i><b>idl</b></i>: Manages IDL dependencies.<br><i><b>get</b></i>: Fetches and installs Kitex related dependencies.<br>To get help for a specific subcommand, use <i><b>kitex</b> <I>command</I> --help</i> (e.g., <i><b>kitex</b> new --help</i>).


title: HISTORY
content:
The <b>kitex</b> CLI tool is an integral part of the Kitex RPC framework, which was open-sourced by ByteDance. Developed internally to meet the demands of their large-scale microservice architecture, Kitex (and its accompanying CLI) was designed for high performance and ease of use within the Go ecosystem. Its development reflects ByteDance's extensive experience in building robust distributed systems, aiming to provide an efficient and developer-friendly solution for RPC communication in Go.


title: SYNOPSIS
content:
<b>kitty</b> [<i>options</i>]<br><b>kitty</b> [<i>options</i>] <i>command</i> [<i>arguments...</i>]<br><b>kitty</b> <b>+kitten</b> <i>&lt;kitten_name&gt;</i> [<i>kitten_options</i>]<br><b>kitty</b> <b>@</b> <i>&lt;command&gt;</i> [<i>arguments...</i>]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <b>kitty</b> version information and exit.<br><br><b><b>-c</b> <i>&lt;CONFIG_FILE&gt;</i>, <b>--config</b> <i>&lt;CONFIG_FILE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate configuration file to use instead of the default.<br><br><b><b>-o</b> <i>&lt;SETTING=VALUE&gt;</i>, <b>--override</b> <i>&lt;SETTING=VALUE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override a single setting from the configuration file. This option can be used multiple times.<br><br><b><b>--directory</b> <i>&lt;DIR&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start the terminal in the specified directory instead of the current working directory.<br><br><b><b>--session</b> <i>&lt;SESSION_FILE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load a window layout, commands, and options from the specified session file.<br><br><b><b>--single-instance</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensure only one instance of <b>kitty</b> is running. New windows will open in the existing instance.<br><br><b><b>--hold</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keep the terminal window open after the launched command exits.<br><br><b><i>command</i> [<i>arguments...</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified command with its arguments instead of the default shell.<br><br><b><b>+kitten</b> <i>&lt;kitten_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launch a specific kitten, which is a small, text-based utility included with <b>kitty</b>.<br><br><b><b>@</b> <i>&lt;command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a command to a running <b>kitty</b> instance for remote control purposes.<br><br>


title: DESCRIPTION
content:
<b>kitty</b> is a modern, cross-platform, GPU-accelerated terminal emulator designed for high performance and extensibility. It offloads all rendering to the GPU, leading to exceptionally smooth scrolling, low input latency, and faster performance, especially when dealing with large amounts of text or complex graphical output. Beyond speed, <b>kitty</b> offers a rich set of features including tabs, tiling windows, Unicode support, true colors, and ligatures for programming fonts.<br><br>It is highly configurable via a simple text file, allowing users to customize every aspect from fonts and colors to keybindings and application behavior. <b>kitty</b> also integrates a powerful text-based `kitten` framework, enabling users to extend its functionality with custom tools and integrations. Its architecture prioritizes minimal latency and high throughput, making it a robust and popular choice among developers and power users.


title: CAVEATS
content:
While <b>kitty</b> is highly performant on systems with dedicated GPUs, its primary advantage is diminished on systems without one, where it falls back to CPU-based rendering. Its extensive configuration options, while powerful, can be overwhelming for new users unfamiliar with text-based configuration files. The `kitten` framework, while extensible, requires a degree of scripting knowledge to fully leverage.


title: <B>KITTENS</B>
content:
<b>Kittens</b> are small, text-based utilities that ship with <b>kitty</b> and can be run inside the terminal, often performing tasks that would traditionally require a separate GUI application or complex shell scripts. Examples include <i>icat</i> for displaying images, <i>diff</i> for comparing files, and <i>termgraph</i> for plotting data directly within the terminal.


title: <B>REMOTE CONTROL</B>
content:
<b>kitty</b> features a powerful remote control mechanism, enabled by the <b>@</b> syntax. This allows external programs or scripts to send commands to a running <b>kitty</b> instance, enabling dynamic window management, session manipulation, and other programmatic interactions without needing to launch a new instance.


title: <B>CONFIGURATION FILE</B>
content:
The primary configuration for <b>kitty</b> is managed through a simple, human-readable text file, typically located at <i>~/.config/kitty/kitty.conf</i>. This file allows extensive customization of everything from keybindings, fonts, and colors to advanced rendering and networking settings, giving users fine-grained control over their terminal experience.


title: HISTORY
content:
Developed by Kovid Goyal, <b>kitty</b> was first publicly released around 2017. It was conceived to address performance and feature limitations of existing terminal emulators, with a strong emphasis on leveraging GPU acceleration for rendering. This design choice set it apart, aiming for minimal latency and high throughput. Over the years, it has continuously evolved, adding features like a robust configuration system, the `kitten` framework for extensibility, and support for modern terminal capabilities like ligatures and true colors, establishing itself as a powerful tool for developers and power users.


title: SYNOPSIS
content:
<b>kiwi-ng</b> <I>command</I> [<I>options</I>] [<I>arguments</I>]<br><br>Common commands include:<br><b>kiwi-ng build</b>: Builds a disk image from a description.<br><b>kiwi-ng prepare</b>: Prepares a root tree from a description.<br><b>kiwi-ng system</b>: Manages and lists existing kiwi-ng systems.<br><b>kiwi-ng clean</b>: Removes existing build artifacts.


title: PARAMETERS
content:
<b>--profile <profile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific image profile defined within the description.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug messages for troubleshooting build processes.<br><br><b>--allow-existing-build-dir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Permits using a build directory that already exists, rather than requiring a clean one.<br><br><b>--color {auto,always,never}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls terminal colorization for output messages.<br><br><b>--description <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the XML image description file (used with 'build' command).<br><br><b>--target-dir <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output directory where the final image artifacts will be placed (used with 'build' command).<br><br><b>--ignore-missing-packages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the build from failing if specified packages are not found in repositories.<br><br><b>--clean-build-dir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans the build directory before starting a new image build.<br><br><b>--set-repo <url>,...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds one or more additional repositories to be used during the image build.<br><br>


title: DESCRIPTION
content:
<b>kiwi-ng</b> is a powerful, next-generation operating system image builder for Linux distributions. It allows users to declaratively define the contents and structure of a custom Linux image using XML configuration files. From these descriptions, <b>kiwi-ng</b> can generate a wide array of image types, including bootable ISOs for live systems or installations, virtual machine images (like KVM, OCI, QCOW2), cloud images, and container images (Docker, OCI).<br><br>Developed primarily for openSUSE and SUSE Linux Enterprise, <b>kiwi-ng</b> is designed to be highly generic and supports building images for various other Linux distributions. It handles the entire lifecycle of image creation, from bootstrapping the base system and installing packages to configuring bootloaders, creating filesystems, and assembling the final image artifact. Its modular design and extensive feature set make it a versatile tool for reproducible image creation for diverse deployment scenarios.


title: CAVEATS
content:
<b>kiwi-ng</b> is a powerful tool but requires a good understanding of Linux system architecture and image building concepts. Its declarative XML description files, while flexible, can become complex for intricate image definitions. Builds can be resource-intensive, requiring substantial CPU, RAM, and disk space, especially for larger images. While designed to be distribution-agnostic, its origins in the SUSE/openSUSE ecosystem mean some default behaviors or optimizations might align best with those distributions.


title: IMAGE TYPES
content:
<b>kiwi-ng</b> supports building a diverse range of image formats, including bootable ISOs (live/install), virtual machine images (RAW, QCOW2, OCI, KVM), cloud images, and container images (Docker, OCI). This flexibility allows for targeted deployment across various platforms.


title: XML DESCRIPTION FILES
content:
Image content and build processes are defined declaratively using XML files. These files specify everything from the base system, included packages, repositories, and scripts to partitioning schemes and bootloader configurations, ensuring reproducible builds.


title: HISTORY
content:
<b>kiwi-ng</b> (Next Generation) is the successor to the original <b>kiwi</b> image building tool. The initial <b>kiwi</b> tool was primarily written in Perl and C++. <b>kiwi-ng</b> represents a complete re-implementation in Python, aimed at improving modularity, maintainability, and extending support for a wider range of modern image formats, including cloud and container images. Its development reflects the evolving needs of reproducible and automated operating system image creation in diverse deployment environments.


title: SEE ALSO
content:
chroot(1): Used for changing root directory, fundamental for system building., mkfs(8): Utility for building a Linux filesystem., mount(8): Utility for mounting filesystems., zypper(8) / dnf(8) / apt(8): Package managers often used by <b>kiwi-ng</b> to populate images., virt-builder(1): A similar tool from libguestfs for creating VM images., isohybrid(1): Tool to make ISO images bootable from both CD/DVD and USB.


title: SYNOPSIS
content:
<b>kjv</b> <I>BOOK</I> [<I>CHAPTER</I> [<I>VERSE_START</I> [<I>VERSE_END</I>]]]<br><b>kjv</b> {-s | --search} <I>TEXT</I><br><b>kjv</b> {-l | --list | -L | --long-list} [<I>BOOK_FRAGMENT</I>]<br><b>kjv</b> [-v | --version | -h | --help | -i | --interactive]


title: PARAMETERS
content:
<b><I>BOOK</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name or common abbreviation of a biblical book (e.g., "Gen", "Genesis", "Jn", "John").<br><br><b><I>CHAPTER</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The chapter number within the specified book. If omitted, the entire book is displayed.<br><br><b><I>VERSE_START</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The starting verse number within the chapter. If only a chapter is provided, the entire chapter is displayed.<br><br><b><I>VERSE_END</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ending verse number. If omitted with <I>VERSE_START</I>, only the single starting verse is displayed. This parameter is used to display a range of verses.<br><br><b><b>-s, --search</b> <I>TEXT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for the specified <I>TEXT</I> (case-insensitive) throughout the entire Bible. The search string can be enclosed in quotes for phrases.<br><br><b><b>-l, --list</b> [<I>BOOK_FRAGMENT</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all biblical books if no <I>BOOK_FRAGMENT</I> is provided, or lists books whose names match the fragment.<br><br><b><b>-L, --long-list</b> [<I>BOOK_FRAGMENT</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <b>-l</b>, but also displays the total number of chapters for each listed book.<br><br><b><b>-v, --version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>kjv</b> command and exits.<br><br><b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message with syntax and common options, then exits.<br><br><b><b>-i, --interactive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <b>kjv</b> in an interactive prompt mode, allowing continuous input of commands and queries without re-invoking the command.<br><br>


title: DESCRIPTION
content:
The <b>kjv</b> command is a dedicated command-line utility designed for quick and efficient access to the King James Version of the Bible. It enables users to display specific passages, chapters, or entire books directly within their terminal environment. Beyond simple display, <b>kjv</b> also provides robust search capabilities, allowing users to find specific words or phrases throughout the entire biblical text. This makes it an invaluable tool for researchers, students, or anyone needing immediate access to Bible verses without leaving the command line. Its simple syntax and direct output make it ideal for scripting or for quick reference in a console-driven workflow. Whether you need to quote a specific verse, read an entire chapter, or perform a full-text search, <b>kjv</b> offers a streamlined and accessible method for engaging with the King James Version.


title: CAVEATS
content:
The <b>kjv</b> command typically provides access solely to the King James Version of the Bible. Users requiring other translations will need a different tool. <br>The availability and exact feature set of <b>kjv</b> may vary depending on the Linux distribution and the specific package installed, as it is not a core Linux utility.


title: INTERACTIVE MODE
content:
When <b>kjv</b> is run without any arguments (i.e., just `kjv`), it enters an interactive mode. In this mode, users can type book, chapter, or verse references directly at a prompt, or use search commands, without needing to re-type `kjv` each time. This mode is useful for extended study or browsing sessions.


title: BOOK ABBREVIATIONS
content:
<b>kjv</b> understands many common abbreviations for biblical books, such as 'Gen' for Genesis, 'Ex' for Exodus, 'Ps' for Psalms, 'Jn' for John, etc. This allows for quicker input when specifying passages.


title: HISTORY
content:
The <b>kjv</b> command is generally part of community-maintained packages (e.g., <I>kjv-bible</I> on Debian/Ubuntu-based systems) rather than a core component of the Linux kernel or standard utilities. It typically originates from individual open-source projects aimed at providing a simple, console-based Bible lookup tool. Its development history is tied to specific contributors who sought to make the King James Version easily accessible from the command line, often leveraging plain text data files of the Bible.


title: SYNOPSIS
content:
<code><b>klist</b> [<i>-c cache_name</i>] [<i>-f</i>] [<i>-e</i>] [<i>-s</i>] [<i>-a</i>] [<i>-n</i>] [<i>-l</i>] [<i>--version</i>] [<i>--help</i>]<br><b>klist</b> <i>-k</i> [<i>-t</i>] [<i>-e</i>] [<i>-s</i>] [<i>-n</i>] [<i>keytab_name</i>]</code>


title: PARAMETERS
content:
<b><i>-c cache_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the credentials cache to list. If not specified, the default cache is used.<br><br><b><i>-f</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the flags of the Kerberos tickets, such as <i>forwardable</i>, <i>proxiable</i>, <i>renewable</i>, etc.<br><br><b><i>-e</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the encryption types of the session keys and the ticket-granting tickets.<br><br><b><i>-s</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses normal output and only sets the exit status. Useful for scripting to check if tickets exist.<br><br><b><i>-a</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the addresses contained in the tickets. Useful for checking if address restrictions are in place.<br><br><b><i>-n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows numerical UIDs/GIDs rather than resolving them to names, particularly when listing keytab entries.<br><br><b><i>-k</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the entries in a keytab file instead of a credentials cache. If <i>keytab_name</i> is not specified, the default keytab (<i>/etc/krb5.keytab</i>) is used.<br><br><b><i>-t</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <i>-k</i>, displays the timestamp of each keytab entry. It has no effect without <i>-k</i>.<br><br><b><i>-l</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the credentials caches in a cache collection. This option is specific to credential cache collections.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information for the `klist` command.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message explaining command usage and options.<br><br>


title: DESCRIPTION
content:
`klist` is a utility command used to display the Kerberos principal and tickets held in a credentials cache, or the keys in a keytab file.<br><br>When executed without any options, `klist` typically shows the default credentials cache, which is usually located at `/tmp/krb5cc_<i>UID</i>` unless the <i>KRB5CCNAME</i> environment variable specifies a different path. It lists the primary Kerberos principal associated with the cache, the expiration time of the initial ticket-granting ticket (TGT), and details about service tickets acquired, including their expiration and the service principal name.<br><br>This command is essential for verifying successful Kerberos authentication and for monitoring the status of your Kerberos tickets. It allows users to quickly check if they have valid tickets, when they expire, and which services they are authorized to access. When used with the <i>-k</i> option, `klist` provides insight into the contents of a specified keytab file, detailing the principal names and key versions stored, which is crucial for service authentication configurations.


title: CAVEATS
content:
<b>Permissions:</b> To list a credentials cache, you must have read permissions on the cache file. For keytab files, read permissions are required on the specified keytab or the default one.<br><b>Default Cache:</b> The default credentials cache location is system-dependent but commonly <i>/tmp/krb5cc_<i>UID</i></i>. This can be overridden by the <i>KRB5CCNAME</i> environment variable.<br><b>Keytab Access:</b> When using <i>-k</i>, ensure the process running `klist` has read access to the keytab file. Keytabs often contain sensitive cryptographic material and should be properly secured.


title: DEFAULT CREDENTIALS CACHE
content:
Unless specified with <i>-c</i> or overridden by the <i>KRB5CCNAME</i> environment variable, `klist` will check for the default credentials cache. This is typically located at <i>/tmp/krb5cc_<i>UID</i></i>, where <i>UID</i> is the numerical user ID of the current user.


title: UNDERSTANDING TICKET FLAGS
content:
When using the <i>-f</i> option, `klist` displays various flags associated with Kerberos tickets. Common flags include:<br><i>F</i> (Forwardable): The ticket can be forwarded to another host.<br><i>P</i> (Proxiable): A proxy ticket can be generated from this ticket.<br><i>R</i> (Renewable): The ticket can be renewed beyond its initial lifetime.<br><i>I</i> (Initial): The ticket was obtained directly via password or keytab.<br><i>H</i> (Hardware authenticated): The authentication involved hardware (e.g., smart card).<br><i>A</i> (Auth-data required): The ticket contains authorization data that must be honored.


title: KEYTAB FILES
content:
Keytab files (used with <i>-k</i>) are essential for services or scripts that need to authenticate to Kerberos without user interaction. They contain service principal names and their cryptographic keys. `klist -kt` is commonly used by administrators to verify the contents and timestamps of keytab files, ensuring the correct keys are present and up-to-date for service principals.


title: HISTORY
content:
The `klist` command is an integral part of the MIT Kerberos distribution, which has its roots in Project Athena at MIT in the 1980s. Designed as a secure network authentication protocol, Kerberos was developed to provide strong authentication for client/server applications by using secret-key cryptography. `klist` emerged as a fundamental utility to allow users to inspect their acquired Kerberos credentials, enabling them to verify the success of the `kinit` command (which obtains tickets) and understand the validity period of their authentication. Its core functionality has remained largely consistent over decades, reflecting the stable and robust nature of the Kerberos protocol itself. The command is a cornerstone for troubleshooting Kerberos authentication issues and managing user sessions in Kerberized environments.


title: SYNOPSIS
content:
<b>kmod</b> [<I>OPTIONS</I>] <I>COMMAND</I> [<I>ARGUMENTS</I>...]<br><br>The <b>kmod</b> binary acts as a multi-call binary. When invoked directly, it processes general options before delegating to the specified <I>COMMAND</I> (e.g., <I>modprobe</I>, <I>insmod</I>, <I>rmmod</I>). More commonly, its symlinked names are used directly.


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the <b>kmod</b> command itself and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the <b>kmod</b> package and exits.<br><br>


title: DESCRIPTION
content:
<b>kmod</b> is a collection of utilities designed for managing Linux kernel modules and associated configuration files. It provides a unified interface for loading, unloading, listing, and querying information about kernel modules, as well as resolving their dependencies.<br><br>The <b>kmod</b> package replaced the older <i>module-init-tools</i> project, offering a more modern and robust solution for dynamic kernel functionality management. While <b>kmod</b> itself serves as a multi-call binary, users typically interact with its symlinked components such as <i>modprobe</i>, <i>insmod</i>, <i>rmmod</i>, <i>lsmod</i>, <i>depmod</i>, and <i>modinfo</i>. These tools are fundamental for system boot processes (e.g., via <i>initramfs</i>) and for on-demand loading of hardware drivers and kernel features.


title: CAVEATS
content:
Most operations modifying kernel state (e.g., loading/unloading modules) require root privileges.<br>Improper handling of kernel modules can lead to system instability or crashes.<br>The primary user interaction is through sub-commands like <i>modprobe</i>, not the <b>kmod</b> command itself directly, though <b>kmod</b> is the underlying binary.


title: MULTI-CALL BINARY DESIGN
content:
The <b>kmod</b> executable is designed as a multi-call binary. This means that various commands like <i>modprobe</i>, <i>insmod</i>, and <i>rmmod</i> are actually symlinks to the single <b>kmod</b> binary. When invoked, the <b>kmod</b> binary inspects the name by which it was called (e.g., <i>argv[0]</i>) to determine which specific tool's functionality to execute. This approach helps reduce disk space and simplifies package management.


title: HISTORY
content:
The <b>kmod</b> project was initiated around 2011-2012, primarily to replace the older <i>module-init-tools</i> package. It aimed to provide a more modern, robust, and unified set of tools for kernel module management, offering better integration with contemporary Linux system components like <i>systemd</i>. Its development brought improved dependency resolution, configuration handling, and overall reliability for managing dynamically loaded kernel functionalities.


title: SEE ALSO
content:
modprobe(8), insmod(8), rmmod(8), lsmod(8), depmod(8), modinfo(8), modules.conf(5), modprobe.d(5), initramfs(7), udev(7)


title: PARAMETERS
content:
<b><b>-c</b> <i>CONFIG</i>, <b>--config</b> <i>CONFIG</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The configuration file to use (default: <i>~/.chef/knife.rb</i>).<br><br><b><b>-e</b> <i>EDITOR</i>, <b>--editor</b> <i>EDITOR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The text editor to use for creating or editing Chef objects.<br><br><b><b>-f</b> <i>FORMAT</i>, <b>--format</b> <i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The output format. Common formats include <i>summary</i>, <i>text</i>, <i>json</i>, and <i>yaml</i>.<br><br><b><b>-k</b> <i>KEY</i>, <b>--key</b> <i>KEY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The API client key file to use for authentication with the Chef server.<br><br><b><b>-o</b> <i>PATH</i>, <b>--chef-repo-path</b> <i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Chef repository. <i>knife</i> often expects to be run from or configured to point to a <i>chef-repo</i>.<br><br><b><b>-s</b> <i>URL</i>, <b>--server-url</b> <i>URL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The URL of the Chef server.<br><br><b><b>-u</b> <i>USER</i>, <b>--user</b> <i>USER</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Chef server API client name (e.g., an administrator user or client).<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <i>knife</i> version.<br><br><b><b>-V</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase verbosity of output messages.<br><br><b><b>-y</b>, <b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assume 'yes' to all prompts, useful for automation.<br><br><b><b>--local-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <i>knife</i> in local mode, operating directly against files in the Chef repository instead of communicating with a Chef server.<br><br>


title: DESCRIPTION
content:
<i>knife</i> is the powerful command-line tool for interacting with a Chef server and managing your Chef infrastructure. It provides an interface between a local Chef repository (typically a <i>chef-repo</i> directory) and the Chef server. Used by Chef administrators and developers, <i>knife</i> enables a wide range of operations, including uploading cookbooks, roles, data bags, and environments; managing nodes, users, and clients; bootstrapping new machines; executing remote commands via SSH; and searching Chef server data.<br><br>As the primary tool for Chef workflows, <i>knife</i> is essential for deploying, managing, and maintaining your infrastructure as code. Its functionality is heavily subcommand-driven, meaning you invoke <i>knife</i> followed by a specific action (e.g., <i>knife node list</i>, <i>knife cookbook upload</i>), each with its own set of options and arguments. It requires proper configuration, often through a <i>knife.rb</i> file, to connect to the Chef server.


title: CAVEATS
content:
<i>knife</i> is intrinsically linked to the Chef ecosystem; it requires either a running Chef server or configuration for <i>--local-mode</i> operation. It is not a standalone general-purpose Linux utility. Its extensive subcommand structure means that while global options apply broadly, each subcommand has its own specific set of options and arguments that must be learned independently. Proper configuration of <i>knife.rb</i> and client keys is crucial for successful operation.


title: COMMON SUBCOMMANDS
content:
<i>knife</i>'s power comes from its many subcommands, each performing a specific task. Some of the most frequently used include:<br><ul><li><b>knife bootstrap</b>: Installs the Chef client on a target node and performs the initial client run.</li><li><b>knife cookbook upload</b>: Uploads one or more cookbooks from the local Chef repository to the Chef server.</li><li><b>knife node list</b>: Displays a list of all nodes registered with the Chef server.</li><li><b>knife ssh</b>: Allows running commands via SSH on nodes identified by Chef search queries.</li><li><b>knife search</b>: Searches Chef server data (nodes, roles, environments, data bags) using Chef search queries.</li><li><b>knife data bag create</b>: Creates a new data bag on the Chef server.</li><li><b>knife role from file</b>: Creates or updates a role from a local JSON or Ruby file to the Chef server.</li></ul>


title: CONFIGURATION (KNIFE.RB)
content:
The behavior of <i>knife</i> is largely controlled by a configuration file, typically named <i>knife.rb</i>. This file, usually located in <i>~/.chef/</i> or at the root of a <i>chef-repo</i>, specifies critical settings such as the Chef server URL, the client name (user), the path to the client key, and default editor. Proper configuration of <i>knife.rb</i> is essential for <i>knife</i> to authenticate and communicate with the Chef server successfully.


title: HISTORY
content:
<i>knife</i> has been a cornerstone of the Chef ecosystem since its inception by Opscode (now Chef Software, Inc.) around 2009-2010. Designed as the primary command-line interface for Chef, it enabled administrators and developers to manage their infrastructure as code by interacting with the Chef server. Over the years, <i>knife</i> has evolved in parallel with the Chef platform, gaining new subcommands and functionalities to support cloud integrations, containerization, and advanced infrastructure automation patterns. Its foundational design as a subcommand-driven Ruby application has remained consistent, allowing it to adapt to the changing landscape of DevOps and infrastructure management.


title: SYNOPSIS
content:
<B>knock</B> [<B>-u</B>] [<B>-t</B> <I>timeout</I>] [<B>-d</B> <I>delay</I>] [<B>-s</B> <I>srcip</I>] [<B>-v</B>] [<B>-h</B>] <B><I>host</I></B> <B><I>port1</I></B> [<B><I>port2</I></B> ...]


title: PARAMETERS
content:
<b><B><I>host</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IP address or hostname of the target machine to send the knock sequence to.<br><br><b><B><I>port1</I></B> [<B><I>port2</I></B> ...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more port numbers representing the knock sequence. These are the ports to which <B>knock</B> will send packets in the specified order.<br><br><b><B>-u</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use UDP packets instead of the default TCP SYN packets for the knock sequence. This is essential if the server's <B>knockd</B> daemon is configured for UDP knocks.<br><br><b><B>-t</B> <I>timeout</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the TCP connect timeout in milliseconds for each knock. The default value is 1000ms (1 second).<br><br><b><B>-d</B> <I>delay</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the delay in milliseconds between sending each packet in the knock sequence. The default delay is 1000ms (1 second).<br><br><b><B>-s</B> <I>srcip</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the source IP address to use for the outgoing knock packets. This is useful for systems with multiple network interfaces or specific routing requirements.<br><br><b><B>-v</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, which provides more detailed information about the knocking process, including the sequence of ports being attempted.<br><br><b><B>-h</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message with command usage and available options, then exit.<br><br>


title: DESCRIPTION
content:
<B>knock</B> is a client-side utility used for <I>port knocking</I>, a network security technique for externally opening ports on a firewall. Instead of leaving ports constantly open and visible, port knocking allows services to remain hidden behind a firewall until a specific, pre-determined sequence of connection attempts (knocks) is performed on a series of closed ports on the target host.<br><br>The <B>knock</B> command sends a sequence of TCP SYN packets (by default) or UDP packets to the specified ports on the target machine. When a corresponding <B>knockd</B> daemon running on the server detects the correct sequence, it can dynamically modify firewall rules (e.g., using <B>iptables</B> or <B>nftables</B>) to temporarily open a specific port for the knocking client's IP address. This method helps reduce the attack surface by making services invisible to unauthorized scans and probes, thereby enhancing system security through obscurity.


title: CAVEATS
content:
Port knocking, while useful for obscurity and reducing the attack surface, is not a strong authentication mechanism on its own. The knock sequence can be vulnerable to packet sniffing (if not combined with encrypted tunnels), replay attacks, and brute-force attempts if proper additional security measures (like strong firewalls, rate limiting, and robust authentication on the server side) are not in place. It relies on the assumption that an attacker does not know or cannot guess the sequence. It is often used as a first layer of defense and should be combined with more robust authentication for sensitive services like SSH.


title: BASIC USAGE EXAMPLE
content:
To send a knock sequence of ports 7000, 8000, and 9000 to a host named 'myhost.example.com' with a 500ms delay between each knock, which might then open port 22 (SSH) for your IP:<br><br><I>knock -d 500 myhost.example.com 7000 8000 9000</I><br><br>Alternatively, for a UDP knock sequence:<br><br><I>knock -u myhost.example.com 12345 23456 34567</I>


title: SERVER-SIDE REQUIREMENT
content:
It is crucial to understand that the <B>knock</B> command is solely the client-side tool. For port knocking to function correctly, a corresponding daemon (typically <B>knockd</B>) must be actively running on the target server. This daemon is responsible for listening for the specific knock sequences and, upon successful detection, executing pre-configured actions, such as modifying firewall rules to open or close ports.


title: HISTORY
content:
The concept of port knocking emerged as a technique to enhance network security by making services less discoverable to unauthorized scans and probes, promoting a 'security through obscurity' approach. The <B>knock</B> and its server-side counterpart, <B>knockd</B>, developed by Martin Herold, became a prominent open-source implementation of this technique. They gained traction as a simple yet effective way to dynamically manage firewall rules, offering a stealthy alternative to permanently open ports. Its development reflects an ongoing effort in network security to adapt and find innovative ways to protect exposed services without relying solely on static firewall configurations.


title: PARAMETERS
content:
<b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Daemonize</i>. Runs <b>knockd</b> in the background as a daemon.<br><br><br><b><b>-i</b> <i>&lt;interface&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Interface</i>. Specifies the network interface to listen on (e.g., <i>eth0</i>).<br><br><br><b><b>-c</b> <i>&lt;config_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Config file</i>. Specifies an alternative configuration file path instead of the default (<i>/etc/knockd.conf</i>).<br><br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Verbose</i>. Enables verbose logging, printing more information to syslog.<br><br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Version</i>. Displays the version information of <b>knockd</b>.<br><br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Help</i>. Displays a brief help message and exits.<br><br><br><b><b>-l</b> <i>&lt;log_level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Log Level</i>. Sets the syslog logging level (e.g., <i>debug</i>, <i>info</i>, <i>notice</i>, <i>warning</i>, <i>err</i>, <i>crit</i>, <i>alert</i>, <i>emerg</i>).<br><br><br><b><b>-p</b> <i>&lt;pid_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>PID File</i>. Specifies an alternative PID file path.<br><br><br>


title: DESCRIPTION
content:
<b>knockd</b> is a specialized daemon designed to implement a security technique known as <i>port knocking</i>. Instead of leaving sensitive service ports open and visible, <b>knockd</b> keeps them closed by default.<br><br>It then monitors a series of "knocks" – connection attempts on specific, otherwise closed, ports. If a client sends connection attempts in a pre-defined sequence to these ports, <b>knockd</b> executes a command. This command is typically used to dynamically modify firewall rules (e.g., using <b>iptables</b>) to temporarily open the desired service port for the client's IP address. This effectively makes services invisible to port scanners and reduces the attack surface, as attackers cannot easily detect the presence of services like SSH or VPN.<br><br>Once the service is accessed or a timeout occurs, <b>knockd</b> can be configured to close the port again. It's a layer of <i>obscurity</i>, not encryption, and should be combined with <b>strong authentication</b>.


title: CAVEATS
content:
<b>knockd</b> provides a layer of <i>security through obscurity</i>, making services harder to find, but it is <b>not a substitute for strong authentication and encryption</b>.<br><br>Potential limitations include:<br><i>Replay Attacks</i>: Without mechanisms like one-time passwords or sequence randomization, a recorded knock sequence can be replayed.<br><i>DDoS Amplification</i>: If not carefully configured, especially with UDP knocks, it could potentially be abused for reflection/amplification attacks if <b>knockd</b> is reachable from the internet on UDP ports and configured to send responses based on knocks.<br><i>Reliability</i>: UDP knocks are connectionless and less reliable than TCP knocks, which can lead to missed knocks.<br><i>Configuration Complexity</i>: Proper configuration of <b>knockd</b> and associated firewall rules requires careful attention to detail.<br><i>Stateful Firewalls</i>: Port knocking works by reacting to connection attempts. If the firewall is overly restrictive and drops even attempts to closed ports without logging, <b>knockd</b> won't "see" the knocks.<br>


title: <B>CONFIGURATION FILE</B>
content:
The primary configuration for <b>knockd</b> is typically located at <i>/etc/knockd.conf</i>.<br>This file defines the sequences of ports to listen for, the commands to execute upon successful knocking (e.g., <b>iptables</b> commands to open a port), and commands to execute after a timeout (e.g., to close the port again). Each sequence is defined within an <i>[openSSH]</i> or similar section, specifying <i>sequence</i>, <i>seq_timeout</i>, <i>command</i>, and optionally <i>tcpflags</i> and <i>start_command</i>/<i>stop_command</i>.<br>


title: <B>USAGE EXAMPLE</B>
content:
A common setup involves hiding the <b>SSH port (22)</b>. A <i>knockd.conf</i> entry might look like this:<br><i>[openSSH]</i><br><i>  sequence    = 7000,8000,9000</i><br><i>  seq_timeout = 10</i><br><i>  command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT</i><br><i>  tcpflags    = syn</i><br><i>  stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT</i><br><br>This configuration would open <b>port 22</b> for the knocking IP after a <i>SYN</i> connection attempt to ports <b>7000, 8000, and 9000</b> within 10 seconds. <b>knockd</b> then typically runs <i>stop_command</i> after a set period or upon client disconnect, removing the rule.<br>


title: HISTORY
content:
<b>knockd</b> was initially developed by <i>Judd Vinet</i> and released under the <b>GPL</b>. It emerged as a practical open-source implementation of the <i>port knocking concept</i>, which gained popularity as a simple yet effective method to enhance the security posture of network services by hiding them from casual port scans. Its development has focused on providing a robust and flexible daemon for managing dynamic firewall rules based on knock sequences, becoming a widely adopted tool in scenarios where hiding services is beneficial.<br>


title: SEE ALSO
content:
<b>iptables(8)</b>: <i>Linux firewall administration tool</i>, commonly used by <b>knockd</b> to open/close ports.<br>, <b>firewalld(1)</b>: <i>Daemon that provides a dynamically managed firewall</i> with support for network zones.<br>, <b>ss(8)</b>: <i>Utility to investigate sockets</i>, useful for checking network connections.<br>, <b>netstat(8)</b>: <i>(Deprecated in favor of ss) Another tool for network statistics</i>.<br>, <b>nmap(1)</b>: <i>Network scanner</i>, often used by attackers (and defenders) to find open ports.<br>, <b>ssh(1)</b>: <i>Secure Shell client</i>, a common target for port knocking protection.<br>, <b>tcpdump(1)</b>: <i>Packet analyzer</i>, useful for debugging knock sequences.<br>


title: PARAMETERS
content:
<b><b>-c</b>, <b>--config</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the server configuration file to use instead of the default.<br><br><b><b>-s</b>, <b>--socket</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the control socket file for communication with <i>knotd</i>.<br><br><b><b>-C</b>, <b>--conf-dir</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory containing configuration files, overriding the default.<br><br><b><b>-S</b>, <b>--socket-dir</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where control sockets are created, overriding the default.<br><br><b><b>-D</b>, <b>--debug</b> <i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the debug level for the command's output, enabling more verbose logging for troubleshooting.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the command's output, providing more detailed information.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>knotc</b> version information and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a short help message detailing command usage and options, then exits.<br><br>


title: DESCRIPTION
content:
<b>knotc</b> is the command-line interface for the Knot DNS server (<i>knotd</i>). It allows administrators to interact with a running <i>knotd</i> instance, performing various management tasks.<br><br>These tasks include checking server status, reloading zone data, adding or deleting zones, managing server configuration, and retrieving operational statistics. It communicates with the <i>knotd</i> daemon via a control socket, offering a powerful way to manage the DNS server's lifecycle and its hosted zones.


title: CAVEATS
content:
<b>knotc</b> requires a running <i>knotd</i> instance to communicate with, typically via a Unix domain socket. If the <i>knotd</i> server is not running or the socket path is incorrect, <b>knotc</b> commands will fail. Proper file system permissions on the control socket file are also crucial for <b>knotc</b> to establish a connection and operate correctly.


title: COMMON COMMANDS
content:
<b>knotc</b> offers a wide range of subcommands for both server and zone management. Common actions include <i>status</i> to check the overall server health and state, <i>zone-reload &lt;zone&gt;</i> to apply changes to a specific DNS zone, <i>zone-add &lt;zone&gt;</i> to configure and add new zones to the server, and <i>statistics</i> to view comprehensive server and zone metrics.


title: INTERACTION WITH KNOTD
content:
<b>knotc</b> primarily communicates with the <i>knotd</i> daemon using a Unix domain socket. The default path for this socket is typically defined within the Knot DNS configuration (<i>knot.conf</i>), or it can be explicitly specified on the command line using the <b>-s</b> or <b>--socket</b> options. This socket serves as the secure and efficient IPC mechanism between the control utility and the running DNS server.


title: HISTORY
content:
<b>knotc</b> is an integral part of the Knot DNS project, a high-performance authoritative-only DNS server developed by CZ.NIC. It has been a core component since the early versions of Knot DNS, providing a stable and efficient way to manage the server's operations and hosted zones. Its development has consistently focused on robust control and seamless integration with the <i>knotd</i> daemon, evolving alongside the server itself to support new features and management capabilities.


title: SYNOPSIS
content:
<b>kompose</b> <I>command</I> [options]<br><b>kompose convert</b> [options]<br><b>kompose up</b> [options]<br><b>kompose down</b> [options]<br><b>kompose logs</b> [options]<br><b>kompose version</b>


title: PARAMETERS
content:
<b><b>--file</b>, <b>-f</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the <i>Docker Compose</i> file to be processed. Defaults to <i>docker-compose.yaml</i>.<br><br><b><b>--output</b>, <b>-o</b> <I>directory</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a directory where the generated Kubernetes artifact files (YAML) will be written. If not specified, files are written to the current directory.<br><br><b><b>--stdout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the generated Kubernetes manifests directly to standard output instead of creating files. Useful for piping output to <i>kubectl</i>.<br><br><b><b>--controller</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Kubernetes controller type for services (e.g., <i>deployment</i>, <i>daemonset</i>, <i>statefulset</i>). Default is <i>deployment</i>.<br><br><b><b>--replicas</b> <I>count</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of replicas for generated controllers (e.g., for a <i>Deployment</i>). This applies to all services unless specified otherwise.<br><br><b><b>--service-type</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the type of Kubernetes service to create (e.g., <i>ClusterIP</i>, <i>NodePort</i>, <i>LoadBalancer</i>). Default is <i>ClusterIP</i>.<br><br><b><b>--chart</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a Helm chart instead of individual Kubernetes YAML manifest files. This creates a directory with a <i>Chart.yaml</i> and <i>templates/</i> directory.<br><br><b><b>--push-images</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For the <i>kompose up</i> command, this option instructs <i>kompose</i> to push built Docker images to a configured registry before deployment.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information and debug messages during execution.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the current version of the <i>kompose</i> tool.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message for a command or subcommand. Use <b>kompose convert --help</b> for specific options.<br><br>


title: DESCRIPTION
content:
<i>kompose</i> is an open-source command-line tool designed to help developers migrate <i>Docker Compose</i> applications to Kubernetes. It processes a <i>Docker Compose</i> file (e.g., <I>docker-compose.yaml</I>) and translates its definitions—services, networks, and volumes—into equivalent Kubernetes resources such as <i>Deployments</i>, <i>Services</i>, and <i>Persistent Volume Claims</i>.<br><br>This significantly streamlines the process of migrating existing containerized applications to a Kubernetes environment, allowing users to leverage their familiar <i>Docker Compose</i> configurations. <i>kompose</i> can generate various output formats, including raw Kubernetes manifest files (YAML) or even Helm charts, or it can directly deploy resources to a Kubernetes cluster. It serves as a valuable bridge, simplifying the transition from local Docker development to cloud-native Kubernetes deployments.


title: CAVEATS
content:
<i>kompose</i> is primarily a migration aid and should not be seen as a full replacement for understanding Kubernetes concepts. <br><br>It may not perfectly translate all complex <i>Docker Compose</i> features, especially advanced networking, volume configurations, or specific build contexts. <br><br>The generated Kubernetes YAMLs often require manual review, optimization, and refinement for production environments to ensure best practices for security, scalability, and resilience. <br><br>The <i>kompose up</i> and <i>kompose down</i> commands are generally considered less robust than direct <i>kubectl</i> commands and are often discouraged for production deployments; it's recommended to use <i>kubectl</i> for managing Kubernetes resources after conversion.


title: PRIMARY USE CASE
content:
The main purpose of <i>kompose</i> is to facilitate the initial migration of applications from a <i>Docker Compose</i> setup to Kubernetes. It generates baseline Kubernetes manifests that can then be further customized and optimized according to specific deployment needs.


title: TYPICAL WORKFLOW
content:
A common workflow for using <i>kompose</i> involves:<br>1. Defining your multi-container application with a <i>docker-compose.yaml</i> file.<br>2. Running <b>kompose convert</b> to generate Kubernetes YAML files (e.g., <i>deployment.yaml</i>, <i>service.yaml</i>, <i>pvc.yaml</i>).<br>3. Reviewing and potentially modifying the generated YAMLs to add Kubernetes-specific features like probes, resource limits, or network policies.<br>4. Deploying the application to Kubernetes using <b>kubectl apply -f</b> <I>generated_files.yaml</I>.


title: HISTORY
content:
<i>kompose</i> was initially developed and open-sourced by Google in 2016 with the goal of simplifying the adoption of Kubernetes for developers already using <i>Docker Compose</i>. It quickly gained traction as a valuable tool for bridging the gap between local Docker development workflows and cloud-native Kubernetes deployments. While active development has somewhat slowed down, relying more on community contributions, it remains a foundational tool for initial migration efforts, allowing users to leverage their existing Compose configurations to kickstart their Kubernetes journey.


title: PARAMETERS
content:
<b>save <profile-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current KDE Plasma configuration to a new profile named <i>&lt;profile-name&gt;</i>.<br><br><b>restore <profile-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the configuration from the specified profile. This command will restart Plasma.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all currently saved konsave profiles.<br><br><b>delete <profile-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the specified konsave profile and its associated data.<br><br><b>apply <profile-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a profile's settings without a full desktop restart. Useful for applying themes or minor changes on the fly.<br><br><b>export <profile-name> [destination]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports a saved profile to a compressed <i>.tar.gz</i> archive, optionally to a specified <i>&lt;destination&gt;</i> directory.<br><br><b>import <file-path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports a konsave profile from a previously exported <i>.tar.gz</i> archive.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the program's version number and exits.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the command in a simulation mode, showing what would happen without making any actual changes.<br><br><b>-y, --yes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assumes 'yes' to all prompts, proceeding without user confirmation.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the operation, potentially overwriting existing data without prompt.<br><br><b>-i, --interactive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompts the user for confirmation before performing certain actions, like overwriting files.<br><br>


title: DESCRIPTION
content:
konsave is a powerful Python script designed to simplify the backup and restoration of KDE Plasma desktop environment configurations. It allows users to create "profiles" of their current Plasma setup, including dotfiles, theme settings, application configurations, and various system preferences. This utility is particularly useful for users who frequently reinstall their operating system, switch between different machines, or simply wish to experiment with different Plasma configurations without losing their preferred setup.<br><br>By leveraging <b>rsync</b>, konsave efficiently saves and restores specific configuration directories and files, ensuring data integrity. It provides commands to save a new profile, restore an existing one, list available profiles, delete old ones, and even export/import profiles as compressed archives for easy sharing or transfer. It aims to provide a reliable method to migrate or replicate a customized KDE Plasma experience, reducing the manual effort involved in reconfiguring a fresh installation.


title: CAVEATS
content:
konsave primarily targets KDE Plasma. While it might save some general dotfiles, its effectiveness for other desktop environments is limited.<br>It relies on <b>rsync</b> and other standard Linux utilities; ensure they are installed.<br>Restoring a profile can overwrite existing configuration files. Always back up important data before restoring, especially if not using the <b>--dry-run</b> or <b>--interactive</b> options.<br>Certain aspects of the desktop environment (e.g., system-wide fonts, icon themes installed via package manager) might not be fully captured or restored by konsave as it focuses on user-specific configurations.


title: INSTALLATION
content:
Typically installed via pip (<code>pip install konsave</code>) or by cloning its Git repository and running the setup script.


title: PROFILE STORAGE
content:
By default, konsave profiles are stored in <i>~/.config/konsave/</i>. Each profile gets its own subdirectory within this location.


title: HISTORY
content:
konsave was developed by Prayag Verma (Prayag2) to address the need for a simple, reliable way to save and restore KDE Plasma configurations. It emerged from the common frustration of manually reconfiguring a highly personalized desktop environment after reinstallations or system migrations. Its design focuses on being a user-friendly wrapper around <b>rsync</b> and <b>tar</b>, specifically tailored for the intricate directory structures of KDE Plasma, making it a valuable tool for customization enthusiasts since its inception.


title: SYNOPSIS
content:
konsole [<i>OPTIONS</i>] [<i>COMMAND</i>...]<br>konsole [<i>OPTIONS</i>] --profile <<i>profile_name</i>> [--new-tab] [--workdir <<i>directory</i>>] [-e <<i>command</i>> [<i>arguments</i>...]]


title: PARAMETERS
content:
<b>-p, --profile <<i>profile_name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts Konsole using the specified profile. Profiles define settings like font, colors, initial command, etc.<br><br><b>--new-tab</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new tab in an existing Konsole window, if one is running. Otherwise, opens a new window.<br><br><b>--tabs-from-file <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens multiple tabs, each configured according to lines in the specified file. Useful for restoring sessions.<br><br><b>--workdir <<i>directory</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial working directory for the Konsole session.<br><br><b>-e, --exec <<i>command</i>> [<i>arguments</i>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified command instead of the default shell. All subsequent arguments are passed to the command.<br><br><b>-H, --hold</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keeps the Konsole window open after the executed command finishes.<br><br><b>--separate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Always opens a new Konsole window, even if an instance is already running.<br><br><b>--display <<i>display</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to use for Konsole.<br><br><b>--geometry <<i>geometry</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial size and position of the Konsole window (e.g., '80x24+100+100').<br><br><b>--hide-menubar</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts Konsole with the menu bar hidden.<br><br><b>--list-profiles</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a list of all available Konsole profiles to standard output and exits.<br><br>


title: DESCRIPTION
content:
Konsole is the default terminal emulator for the KDE Plasma Desktop Environment. It offers a rich set of features beyond a basic command-line interface, providing a highly customizable and user-friendly experience. Key functionalities include support for multiple tabs, split views within a single window, and a comprehensive profile management system that allows users to configure distinct settings for different tasks (e.g., specific fonts, color schemes, shell commands, and working directories). Konsole integrates seamlessly with other KDE applications, such as Dolphin (the file manager), allowing users to open a terminal directly in the current directory. It also supports D-Bus for advanced scripting and automation, as well as a wide range of keyboard shortcuts and visual customization options, making it a powerful tool for developers, system administrators, and regular users alike.


title: CAVEATS
content:
Konsole is tightly integrated with the KDE Plasma Desktop. While it can be used on other desktop environments, some advanced features or integrations (like D-Bus scripting or opening from Dolphin) might require KDE libraries or a running KDE session for full functionality. Heavy usage of split views or many tabs might consume more resources than lighter terminal emulators.


title: PROFILE MANAGEMENT
content:
Konsole's profile system is highly flexible. Users can create, edit, and switch between profiles with different default commands, color schemes, font settings, scrollback limits, and keyboard shortcuts, allowing for quick adaptation to various tasks or environments without manual re-configuration.


title: D-BUS INTERFACE
content:
Konsole exposes a D-Bus interface, enabling external applications or scripts to control its behavior programmatically. This allows for advanced automation, such as opening new tabs with specific commands, changing profiles, or manipulating the Konsole window from other applications.


title: SPLIT VIEWS
content:
A unique feature of Konsole is its ability to split a single tab horizontally or vertically, creating multiple terminal panes within the same tab. This is extremely useful for tasks requiring simultaneous viewing of multiple outputs or interacting with several command lines at once.


title: HISTORY
content:
Konsole has been an integral part of the KDE Desktop Environment since its early days (around KDE 2.x, released in 2000). It was designed from the ground up to be a modern, feature-rich terminal emulator that leverages the KDE framework. Over the years, it has continuously evolved, adding features like tabbed browsing, split views, extensive profile management, and D-Bus scripting capabilities. It remains the default and most popular terminal emulator for KDE Plasma users, known for its robustness and deep integration with the desktop.


title: PARAMETERS
content:
<b>new <project_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new Kool Framework project with the specified name in the current directory. Example: <b>kool new my_app</b><br><br><b>serve</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts a local development server for the current Kool Framework application, typically accessible via a web browser. Example: <b>kool serve</b><br><br><b>db:migrate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs pending database migrations, updating the application's database schema to its latest version. Example: <b>kool db:migrate</b><br><br><b>make:model <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a new model class file within the application, often alongside an associated database migration. Example: <b>kool make:model User</b><br><br><b>help [command]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays comprehensive help information for the main <b>kool</b> command or a specific subcommand. Example: <b>kool help serve</b><br><br><b>version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version of the <b>kool</b> CLI tool and the underlying Kool Framework.<br><br>


title: DESCRIPTION
content:
The <b>kool</b> command serves as the command-line interface (CLI) for the Kool Framework, a modern PHP web development framework. It provides a suite of tools designed to streamline and automate common development tasks associated with building and managing Kool Framework applications. <br>Functionalities include scaffolding new projects, running local development servers, managing database migrations, generating various code components like models, controllers, and views, and inspecting application routes. It significantly enhances developer productivity by abstracting complex configurations and providing a unified interface for framework interactions. <br>It is important to note that <b>kool</b> is not a standard, pre-installed Linux utility but rather an application-specific executable that becomes available after installing the Kool Framework or its associated CLI package.


title: CAVEATS
content:
The <b>kool</b> command is not a core component of the Linux operating system. Its availability and functionality depend on a prior installation of the Kool Framework, typically managed via Composer, and a functioning PHP environment on the system. It is specifically designed for interaction with Kool Framework projects.


title: HISTORY
content:
The <b>kool</b> command emerged as an integral part of the Kool Framework, a modern PHP framework focused on performance and developer experience. Its development has focused on providing a streamlined workflow for web application development, consolidating various tasks into a single, intuitive command-line interface. It has evolved alongside the framework, adding new commands and refining existing ones to support modern web development paradigms and framework features.


title: PARAMETERS
content:
<b><b>--config=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Kopia configuration file. Defaults to <i>~/.config/kopia/repository.config</i>.<br><br><b><b>--log-dir=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the directory where log files will be written. Useful for debugging and monitoring.<br><br><b><b>--log-level=</b><i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the verbosity of logging. Possible levels include <i>debug</i>, <i>info</i>, <i>warning</i>, <i>error</i>, and <i>fatal</i>.<br><br><b><b>--cpu-profile-file=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes CPU profile data to the specified file for performance analysis.<br><br><b><b>--mem-profile-file=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes memory profile data to the specified file for memory usage analysis.<br><br><b><b>--trace-dir=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directory for writing execution traces, aiding in complex issue diagnosis.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Kopia client version information and exits.<br><br>


title: DESCRIPTION
content:
<i>Kopia</i> is an open-source, high-performance, and secure backup and restore tool for Linux, macOS, and Windows. It focuses on efficiency, security, and broad compatibility.<br><br>Key features include <b>client-side encryption</b> (AES256-GCM), <b>deduplication</b>, <b>compression</b>, and <b>snapshotting</b>, ensuring minimal storage usage and fast operations. Kopia supports a wide range of storage backends, including cloud providers like AWS S3, Azure Blob Storage, Google Cloud Storage, and Backblaze B2, as well as SFTP, WebDAV, and local disk.<br><br>It provides both a powerful command-line interface (CLI) and an optional graphical user interface (GUI) for ease of use. Users can create policy-based backups, browse snapshots at any point in time, and restore individual files or entire directories. Kopia is designed for reliability and data integrity, offering robust checksumming and verification mechanisms.


title: CAVEATS
content:
<b><br>•</b> Requires an active Kopia repository connection for all operations.<br><b>•</b> Performance can be heavily influenced by network bandwidth and latency to the chosen storage backend.<br><b>•</b> Loss of repository credentials (password/key) will render all backed-up data irrecoverable due to strong client-side encryption.<br><b>•</b> Initial backup of large datasets can consume significant time and resources.


title: SUBCOMMANDS
content:
<i>Kopia</i> operates through a rich set of subcommands, each responsible for a specific task. To see a list of all available subcommands, run <b>kopia help</b>. Some of the most frequently used subcommands include: <br><b>• repository</b>: Manages connections to storage repositories (connect, disconnect, status).<br><b>• snapshot</b>: Creates, lists, and manages data snapshots.<br><b>• restore</b>: Restores data from existing snapshots.<br><b>• policy</b>: Configures backup policies (retention, ignored files, compression, encryption).<br><b>• server</b>: Runs the Kopia API server or GUI.<br><b>• mount</b>: Mounts a snapshot as a read-only filesystem.<br><b>• content</b>: Low-level commands for managing data content.


title: KOPIA REPOSITORY
content:
A <i>Kopia repository</i> is the central storage location for all your backup data. Before performing any backup or restore operations, you must <b>connect</b> <i>Kopia</i> to a repository using the <b>kopia repository connect</b> command. This command configures where your data will be stored (e.g., local disk, S3, Google Cloud Storage) and sets up the encryption key for your backups.


title: DATA INTEGRITY AND SECURITY
content:
<i>Kopia</i> places a strong emphasis on data integrity and security. All data is <b>client-side encrypted</b> using AES256-GCM before being sent to the storage backend, meaning your data is encrypted before it leaves your machine. Additionally, Kopia uses strong cryptographic checksums to verify data integrity throughout the backup and restore process, protecting against data corruption.


title: HISTORY
content:
<i>Kopia</i> was first released in 2019, developed by Jarek Duda, with a clear focus on addressing modern backup needs: security through client-side encryption, efficiency via deduplication and compression, and broad compatibility with cloud storage providers. It quickly gained traction in the open-source community as a powerful, user-friendly alternative to more traditional backup solutions. Its development has been consistently active, with ongoing enhancements and support for new features and storage backends, solidifying its position as a leading-edge backup tool.


title: SYNOPSIS
content:
<code>kops <I>command</I> [<I>flags</I>]</code><br>Common commands include:<br>&nbsp;&nbsp;<code>kops <b>create</b> cluster|instancegroup</code><br>&nbsp;&nbsp;<code>kops <b>update</b> cluster</code><br>&nbsp;&nbsp;<code>kops <b>get</b> cluster|instancegroup|clusters|instancegroups</code><br>&nbsp;&nbsp;<code>kops <b>edit</b> cluster|instancegroup</code><br>&nbsp;&nbsp;<code>kops <b>delete</b> cluster|instancegroup</code><br>&nbsp;&nbsp;<code>kops <b>validate</b> cluster</code><br>&nbsp;&nbsp;<code>kops <b>export</b> kubecfg</code><br>&nbsp;&nbsp;<code>kops <b>rolling-update</b> cluster</code>


title: PARAMETERS
content:
<b>--name <cluster-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the Kubernetes cluster to operate on. This is usually a fully qualified domain name (e.g., 'mycluster.k8s.local').<br><br><b>--state <s3://bucket-name | gs://bucket-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the location of the state store, typically an S3 or GCS bucket, where `kops` stores cluster configuration and state.<br><br><b>--cloud <provider></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the cloud provider for the cluster (e.g., 'aws', 'gce', 'azure').<br><br><b>--zones <zone1,zone2,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of cloud zones where the cluster will be deployed (e.g., 'us-east-1a,us-east-1b').<br><br><b>--node-count <count></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of worker nodes to create in the cluster's main instance group.<br><br><b>--yes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bypasses interactive confirmation prompts for operations that modify the cluster.<br><br><b>--target <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format for cluster configuration, such as 'terraform' to generate Terraform configuration files.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows what changes would be applied without actually performing them, useful for validating operations.<br><br><b>--out <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output directory for generated files, like Terraform configurations.<br><br><b>--kubeconfig <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default kubeconfig file location for accessing the cluster.<br><br>


title: DESCRIPTION
content:
kops (Kubernetes Operations) is an official Kubernetes project that provides a command-line tool for creating, destroying, upgrading, and maintaining production-grade Kubernetes clusters. It aims to automate the entire lifecycle of a Kubernetes cluster, from initial provisioning to ongoing management and updates. kops supports various cloud providers, including <i>AWS</i>, <i>GCE</i>, <i>Azure</i>, <i>OpenStack</i>, <i>Alicloud</i>, and <i>DigitalOcean</i>, with <i>AWS</i> being its most mature and widely used integration. It allows users to define their cluster configuration declaratively using YAML, enabling idempotent and reproducible cluster deployments. Key features include support for different networking plugins (e.g., <i>Calico</i>, <i>Flannel</i>, <i>Weave</i>, <i>Cilium</i>), multiple DNS options, and comprehensive management of master and worker node groups. kops significantly simplifies the complex task of setting up and operating Kubernetes clusters, making it a popular choice for self-hosting Kubernetes on cloud infrastructure. It manages all necessary cloud resources such as EC2 instances, VPCs, subnets, route tables, security groups, and load balancers.


title: CAVEATS
content:
Using `kops` requires appropriate credentials and permissions configured for your chosen cloud provider. The cluster state is stored in a designated S3 or GCS bucket, which is critical for all `kops` operations; accidental deletion of this bucket can lead to data loss and inability to manage the cluster. While powerful, `kops` can have a steep learning curve for complex, highly customized cluster setups, especially when dealing with advanced networking or security configurations. It's generally not recommended for lightweight local development environments, where tools like <i>Minikube</i> or <i>kind</i> are more suitable. Upgrades can sometimes be challenging and require careful planning and backups.


title: STATE STORE IMPORTANCE
content:
The <b>state store</b> (typically an <i>S3</i> or <i>GCS</i> bucket) is fundamental to `kops`. It acts as the single source of truth for your cluster's configuration, including instance group definitions, network settings, and cluster details. All `kops` commands interact with this state store. It's crucial to protect this bucket and manage its lifecycle carefully, as its integrity directly impacts your ability to manage the Kubernetes cluster.


title: DECLARATIVE CLUSTER MANAGEMENT
content:
`kops` promotes a <b>declarative approach</b> to cluster management. Instead of issuing imperative commands, you define your desired cluster state in YAML configuration files. `kops` then analyzes the difference between the desired state and the current state (as stored in the state store or observed in the cloud) and applies the necessary changes to reconcile them. This makes cluster configurations versionable, repeatable, and easier to manage across environments.


title: HISTORY
content:
`kops` was initially developed to simplify the deployment of Kubernetes clusters on <i>AWS</i>. It began as a project within the Kubernetes Incubator and quickly gained traction due to its ability to provision production-ready clusters with ease. The project has evolved significantly alongside Kubernetes itself, continually adding support for new Kubernetes features, cloud providers, and best practices for cluster management. Its primary goal has always been to provide a robust, automated, and declarative way to manage Kubernetes clusters, making it a cornerstone for many organizations adopting self-managed Kubernetes on cloud infrastructure.


title: SYNOPSIS
content:
<b>kosmorro</b> {<i><subcommand></i>} [<i><subcommand_options></i>]<br><br><b>kosmorro</b> <i>cli</i><br><b>kosmorro</b> <i>gui</i><br><b>kosmorro</b> <i>api</i> [<b>--host</b> <i><address></i>] [<b>--port</b> <i><port></i>] [<b>--debug</b>]<br><b>kosmorro</b> <i>console</i>


title: PARAMETERS
content:
<b><i>cli</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches the interactive command-line interface for Kosmorro, providing a dedicated shell environment for planning and simulation.<br><br><b><i>gui</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the graphical user interface of Kosmorro, offering a visual way to interact with the software's features.<br><br><b><i>api</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches the RESTful API server for programmatic access to Kosmorro's features, allowing integration with other applications.<br><br><b><i>console</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens an interactive Python console with the Kosmorro library pre-loaded, useful for direct scripting and development.<br><br><b><b>--host</b> <i><address></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For the <i>api</i> subcommand, specifies the host address on which the API server will listen (default: 0.0.0.0, meaning all available interfaces).<br><br><b><b>--port</b> <i><port></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For the <i>api</i> subcommand, specifies the port number on which the API server will listen (default: 8000).<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For the <i>api</i> subcommand, enables debug mode for the API server, providing more verbose output and potentially developer tools.<br><br>


title: DESCRIPTION
content:
Kosmorro is an open-source, Python-based application designed for personal space travel planning. It offers robust tools for orbital mechanics simulation, enabling users to determine celestial body positions, calculate orbits, and find optimal trajectories. The software also incorporates a spacecraft builder to define vehicle characteristics like mass and delta-v, and includes a comprehensive database of celestial bodies, spacecraft, and spaceports. Kosmorro supports multiple modes of interaction: as a Python library, through its graphical user interface (GUI), or via its command-line interface (CLI). The CLI primarily consists of interactive subcommands, allowing users to explore and plan within a dedicated shell environment or launch its various services.


title: CAVEATS
content:
Kosmorro is not a standard Linux system utility; it must be installed as a Python package, typically via <b>pip</b>. Its command-line interface is primarily designed for interactive subcommands rather than single-shot scriptable operations (with the exception of launching services like the API). Data for celestial bodies and spacecraft may require initial download or updates.


title: INSTALLATION
content:
Kosmorro is typically installed using Python's package manager. You can install it with: <b>pip install kosmorro</b>. Ensure you have a compatible Python environment (e.g., Python 3.8+).


title: INTERACTIVE CLI
content:
When you run <b>kosmorro</b> <i>cli</i>, you enter an interactive shell where you can type commands like 'plan_trip', 'show_body', etc., rather than passing all arguments directly on the initial command line. Type 'help' within the shell for a list of available commands.


title: HISTORY
content:
Kosmorro is an actively developed, open-source project hosted on GitHub, created to provide a comprehensive personal space travel planning tool. Its development leverages modern Python libraries for its various components, including <b>argparse</b> for CLI parsing, <b>cmd2</b> for interactive shell features, <b>FastAPI</b> for the API, and <b>PyQt</b> for the GUI. This contemporary stack suggests a focus on maintainability and user experience from its inception.


title: SYNOPSIS
content:
<b>kotlin</b> [<I>options</I>] <I>argument</I> [<I>program_arguments...</I>]<br><b>kotlin</b> --version<br><b>kotlin</b> --help


title: PARAMETERS
content:
<b><I>.kts_script</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a Kotlin script file (<I>.kts</I>) to be executed directly. Example: <b>kotlin</b> <I>myscript.kts</I>.<br><br><b>-jar <I>jar_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a program encapsulated in a JAR file. The JAR must have a main class specified in its manifest. Example: <b>kotlin</b> -jar <I>myapp.jar</I>.<br><br><b>-classpath <I>path</I> / -cp <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user class path for loading classes and resources. The path can be a directory, an archive (JAR/ZIP file), or a list of such paths separated by the system's path separator. Example: <b>kotlin</b> -cp <I>myclasses</I> <I>com.example.MyMainClass</I>.<br><br><b>-D<I>property</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a system property for the JVM process. This is useful for passing configuration values to your Kotlin application. Example: <b>kotlin</b> -D<I>my.setting</I>=<I>true</I> <I>myscript.kts</I>.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the Kotlin runtime version information and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a synopsis of the standard options and usage information for the <b>kotlin</b> command.<br><br><b>[<I>program_arguments...</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any arguments following the main command or script/JAR file are passed directly to the Kotlin program or script as command-line arguments.<br><br>


title: DESCRIPTION
content:
The <b>kotlin</b> command is an essential part of the Kotlin toolchain, primarily used for executing compiled Kotlin applications (JAR files) or direct Kotlin scripts (<I>.kts</I> files) on the Java Virtual Machine (JVM). It acts as a convenient wrapper over the underlying <b>java</b> command, handling the necessary classpath setup for Kotlin runtime libraries. <br><br>While its sibling command, <b>kotlinc</b>, is responsible for compiling Kotlin source code, <b>kotlin</b> focuses on runtime execution. It's crucial for developers who need to quickly test scripts, run standalone applications, or integrate Kotlin execution into shell scripts and build automation workflows.


title: CAVEATS
content:
The <b>kotlin</b> command fundamentally relies on a Java Runtime Environment (JRE) being installed and accessible on the system, as Kotlin primarily targets the JVM. <br><br>The executable itself is often a shell script that invokes the <b>java</b> command with the necessary Kotlin runtime libraries on its classpath. <br><br>Its exact behavior and available options might vary slightly depending on how Kotlin is installed (e.g., via SDKMAN, official distribution, or OS package manager).


title: PARAMETERS
content:
<b>--global</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on packages installed globally for all users (requires appropriate permissions).<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on packages installed for the current user only. This is often the default.<br><br><b>-t, --type &lt;type&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of package to operate on (e.g., 'Plasma/Wallpaper', 'Plasma/Theme', 'KCM', 'Konsole/ColorScheme'). Use 'gettypes' command to list supported types.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help on command line options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information.<br><br><b>install &lt;package_path_or_id&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a package from a local file path or a store ID. Requires the '--type' option.<br><br><b>remove &lt;package_id&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes an installed package identified by its ID. Requires the '--type' option.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed packages, optionally filtered by '--type'.<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates installed packages from their respective stores. Can be filtered by '--type'.<br><br><b>search &lt;query&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for packages in online stores, optionally filtered by '--type'.<br><br><b>packagemanifest &lt;package_path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the manifest file (metadata) of a local package file.<br><br><b>gettypes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all package types supported by the KPackage framework on the system.<br><br>


title: DESCRIPTION
content:
<i>kpackagetool5</i> is a command-line utility provided by KDE Frameworks 5's KPackage module. Its primary purpose is to manage KPackage-style packages, which are self-contained bundles of resources like Plasma wallpapers, themes, widgets, KCM modules, Konsole color schemes, and other application-specific plugins. Unlike system-wide package managers (e.g., `apt`, `dnf`), <i>kpackagetool5</i> focuses on user- or global-level assets used by KDE applications and the Plasma desktop. It allows users to install, remove, list, update, and search for these packages, often interacting with online repositories like store.kde.org.


title: CAVEATS
content:
<i>kpackagetool5</i> is specific to KDE Frameworks and is not a general Linux package manager. It manages assets and plugins for KDE applications, not system libraries or executables. Global installations (`--global`) may require root privileges or specific system configurations. The exact package types supported can vary depending on installed KDE applications and frameworks.


title: COMMON PACKAGE TYPES
content:
Some frequently managed package types include:<br><b>Plasma/Wallpaper</b>: Desktop wallpapers<br><b>Plasma/Theme</b>: Plasma desktop themes<br><b>Plasma/Lookandfeel</b>: Global Plasma look and feel packages<br><b>Plasma/Widget</b>: Plasma desktop widgets<br><b>KCM</b>: KDE Control Modules (settings panels)<br><b>Konsole/ColorScheme</b>: Konsole terminal color schemes<br><b>ksplash/themes</b>: Splash screen themes


title: INTEGRATION WITH KNEWSTUFF
content:
<i>kpackagetool5</i> often works in conjunction with the KNewStuff framework, which provides the infrastructure for applications to download and manage new content from online services (like store.kde.org). This allows users to easily extend their KDE experience with community-contributed content directly from the command line or through graphical interfaces like Plasma Discover.


title: HISTORY
content:
<i>kpackagetool5</i> is part of KDE Frameworks 5, representing the evolution of KDE's modularization efforts. It succeeded the older `kpackagetool` (for KDE 4), which managed similar assets in the KDE 4 ecosystem. The transition to KF5 brought a more streamlined and D-Bus-centric architecture, with `kpackagetool5` acting as the command-line interface to the KPackage and KNewStuff frameworks, facilitating the management of downloadable resources integrated directly into KDE applications.


title: SYNOPSIS
content:
<b>kpackagetool6</b> [<i>options</i>] [<i>arguments</i>]<br><br>Examples:<br>&nbsp;&nbsp;<b>kpackagetool6</b> --list Plasma/Applet<br>&nbsp;&nbsp;<b>kpackagetool6</b> --install Plasma/Wallpaper /path/to/mywallpaper.zip<br>&nbsp;&nbsp;<b>kpackagetool6</b> --remove KWin/Script 'Blur My Walls'


title: PARAMETERS
content:
<b><b>--install</b> <i>&lt;type&gt; &lt;path_or_url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a package of the specified type from a local file path or URL.<br><br><b><b>--list</b> <i>&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed packages of the specified type.<br><br><b><b>--remove</b> <i>&lt;type&gt; &lt;name_or_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes an installed package of the specified type by its name or file.<br><br><b><b>--show</b> <i>&lt;type&gt; &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about an installed package.<br><br><b><b>--list-types</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all supported package types that <i>kpackagetool6</i> can manage.<br><br><b><b>--upgrade</b> <i>&lt;type&gt; &lt;path_or_url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrades an existing package of the specified type from a local file path or URL.<br><br><b><b>--global</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on global (system-wide) packages instead of user-specific ones.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's version information and exits.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and exits.<br><br>


title: DESCRIPTION
content:
<i>kpackagetool6</i> is a command-line utility provided by the KDE Plasma desktop environment. It's used for managing various types of Plasma packages, such as Plasma widgets (plasmoids), KWin scripts, Plasma themes, desktop themes, and KCM (KDE Control Module) modules. It allows users to install, list, remove, show details of, and upgrade these packages, primarily those downloaded from store.kde.org or local files. It serves as a programmatic interface for package management within the Plasma ecosystem, often used by developers or for scripting automated deployments. It is the successor to <i>kpackagetool5</i> and is designed for KDE Plasma 6.


title: CAVEATS
content:
Requires a KDE Plasma 6 environment for full functionality. Does not manage system-wide installed packages (e.g., those from distribution repositories), only those installed via KPackage or store.kde.org. Errors can be cryptic if dependencies are missing or package files are malformed.


title: AVAILABLE PACKAGE TYPES
content:
Common types include <i>Plasma/Applet</i> (widgets), <i>Plasma/Theme</i>, <i>KWin/Script</i>, <i>Plasma/Wallpaper</i>, <i>KPackage/Generic</i>, and <i>KCM</i> (KDE Control Module). You can list all supported types using <b>kpackagetool6 --list-types</b>.


title: INSTALLATION SOURCE
content:
Packages can be installed from local <i>.zip</i> files or directly from store.kde.org by providing the package's URL.


title: HISTORY
content:
<i>kpackagetool6</i> is the direct successor to <i>kpackagetool5</i>, which was used for managing Plasma 5 packages. With the release of KDE Plasma 6, a new major version of the tool was introduced to accommodate changes in the Plasma framework and ensure compatibility. Its development tracks the evolution of the KDE Plasma desktop.


title: SEE ALSO
content:
kpackagetool5(1): <br>The predecessor command for managing Plasma 5 packages., plasmapkg2(1): <br>Another utility for Plasma package management, often aliased to kpackagetool or used for specific Plasma 5 contexts.


title: SYNOPSIS
content:
<b>kpartx</b> [<b>-a</b> | <b>-d</b> | <b>-u</b> | <b>-l</b>] [<b>-f</b>] [<b>-r</b>] [<b>-p</b> <I>prefix</I>] [<b>-s</b>] [<b>-v</b>] [<b>-z</b>] [<b>-n</b>] [<b>-g</b>] [<b>--raw</b>] [<b>--bytes</b>] <I>device</I>


title: PARAMETERS
content:
<b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add partition device maps for the specified device. This is the default action if no explicit action is chosen.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete partition device maps for the specified device.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update partition device maps for the specified device. This action effectively deletes existing maps and then recreates them based on the current partition table.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List partition device maps without performing any creation or deletion operations.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force update. When adding or updating maps, this option ensures any existing maps for the partitions are flushed (removed from cache/kernel) before new ones are created.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create read-only device maps for the partitions, preventing any write operations through the device mapper interfaces.<br><br><b><b>-p</b> <I>prefix</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom prefix for the device mapper partition names. The default prefix is 'p', resulting in names like <i>/dev/mapper/loop0p1</i>. For example, using 'kpartx -p - /dev/sdb' would generate names such as <i>/dev/mapper/sdb-1</i>.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize map creation with disk. This option ensures that <b>kpartx</b> waits for the udev (device manager) event to complete before exiting, which can be useful in scripts where immediate device availability is critical.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output. This provides more detailed information about the operations being performed by <b>kpartx</b>.<br><br><b><b>-z</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This option is only applicable when deleting maps (used with <b>-d</b>). It prevents the deletion of device maps if any of the partitions are currently in use or busy.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run. <b>kpartx</b> will print the commands that would be executed but will not actually perform any operations on the system.<br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to guess the partition type. This is particularly useful for raw disk images where the partition table might not adhere strictly to standard formats.<br><br><b><b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output partition information in a raw format, which is highly suitable for scripting. It typically prints one line per partition in the format '<i>device_mapper_name start_sector num_sectors</i>'.<br><br><b><b>--bytes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When displaying information or raw output, print sizes and offsets in bytes rather than the default sectors.<br><br><b><I>device</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the block device (e.g., <i>/dev/sda</i>, <i>/dev/loop0</i>, or a disk image file) for which partition maps are to be managed.<br><br>


title: DESCRIPTION
content:
The <b>kpartx</b> command is a utility that reads the partition table on a specified block device and subsequently creates device mapper devices for each primary and logical partition found within it. This functionality is invaluable for scenarios involving disk images (e.g., <i>.img</i> or <i>.iso</i> files) by associating them with a loop device, or for managing partitions directly on physical block devices like hard drives or SSDs.<br><br>It's commonly used in conjunction with <b>losetup</b> to access file systems embedded within disk images without needing to write the image to physical media. <b>kpartx</b> dynamically populates the <i>/dev/mapper/</i> directory with entries corresponding to the detected partitions, enabling them to be treated as independent block devices for mounting, file system checks, or other operations. The command supports adding, deleting, or merely listing these partition maps.


title: CAVEATS
content:
<b>kpartx</b> relies heavily on the kernel's device mapper and the udev subsystem. Problems with these underlying services can directly impact <b>kpartx</b>'s functionality. It may not correctly interpret all types of partition tables, especially highly unusual or corrupted ones. When deleting maps, proceeding without the <b>-z</b> option on busy partitions could potentially lead to data corruption if not managed carefully.


title: COMMON USAGE WITH LOOP DEVICES
content:
One of the most frequent applications of <b>kpartx</b> is in conjunction with the <b>losetup</b> command to access partitions embedded within disk image files. The typical workflow involves: <br>1. Attaching the disk image to a loop device (e.g., <i>/dev/loop0</i>) using <b>losetup</b>.<br>2. Using <b>kpartx -a /dev/loop0</b> to automatically create device mapper entries (e.g., <i>/dev/mapper/loop0p1</i>, <i>/dev/mapper/loop0p2</i>) for all detected partitions within that image. <br>These newly created device mapper entries can then be treated as standard block devices, allowing them to be mounted, checked for file system integrity, or otherwise manipulated.


title: CUSTOMIZING DEVICE MAPPER NAMES
content:
By default, <b>kpartx</b> generates device mapper names by appending 'p' and the partition number to the base device name (e.g., <i>/dev/sdb</i> becomes <i>/dev/mapper/sdbp1</i> for its first partition). The <b>-p</b> option offers flexibility in customizing this naming convention. For instance, employing <b>-p -</b> can result in names such as <i>/dev/mapper/sdb-1</i>, which some users or scripts might find more intuitive or easier to parse due to the clear hyphenated separation.


title: HISTORY
content:
<b>kpartx</b> is a component of the <i>multipath-tools</i> package, which primarily provides the <b>multipath</b> command for configuring device mapper multipathing. Its development is closely tied to the Linux <i>device-mapper</i> infrastructure. Although often used in conjunction with <b>multipath</b>, <b>kpartx</b> carved out its own niche as a standalone utility for exposing partitions within block devices, particularly for handling disk images and complex storage setups, becoming an indispensable tool in Linux system administration and digital forensics.


title: SYNOPSIS
content:
<b>krdpserver</b> [<I>options</I>]<br><br><i>Note: A standard, widely documented command-line synopsis for <b>krdpserver</b> is not commonly available. It is generally not invoked directly by users as a standalone command in modern Linux environments, unlike common utilities. Its functionality is likely integrated within other KDE services or relies on external remote desktop solutions like <b>xrdp</b>.</i>


title: PARAMETERS
content:
<b>No commonly documented parameters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>krdpserver</b> command is not widely documented as a standalone executable with specific command-line options in modern Linux distributions. If it were a typical server application, one might expect options for specifying listening ports, authentication methods, or logging levels, but these are purely speculative given its elusive nature.<br><br>


title: DESCRIPTION
content:
<i>krdpserver</i> is a component historically associated with the KDE project's efforts to provide remote desktop server capabilities. Unlike its client counterpart, <i>krdc</i> (KDE Remote Desktop Client), which is a well-known application for connecting to various remote desktop protocols (like VNC and RDP servers, including <i>xrdp</i>), a distinct <i>krdpserver</i> command with widely documented standalone usage and a defined set of command-line options is not commonly found in modern Linux distributions.<br><br>Its name suggests it would facilitate incoming remote desktop connections, allowing users to access and control a KDE desktop environment remotely. However, it likely represents an internal or legacy component, or a conceptual server aspect of the <i>krdp</i> (KDE Remote Desktop Protocol) project, rather than a directly invokable user command with typical command-line interface parameters. Most contemporary KDE-based systems wishing to offer RDP services typically rely on well-established solutions like <i>xrdp</i> or standard VNC servers, which are often integrated or configured via system services rather than a single <i>krdpserver</i> executable.


title: CAVEATS
content:
<ul><li><i>krdpserver</i> is not a widely recognized or commonly used command-line utility in contemporary Linux distributions.</li><li>Information about its direct usage, specific options, and ongoing maintenance is scarce.</li><li>Users seeking remote desktop server functionality for KDE environments typically utilize more established solutions such as <i>xrdp</i> (configured with appropriate session managers) or standard VNC servers.</li><li>It may be an internal daemon, a deprecated component from older KDE versions, or a very specific legacy application not intended for direct user invocation.</li></ul>


title: MODERN REMOTE DESKTOP FOR KDE
content:
For users looking to provide remote desktop access to a KDE Plasma desktop, the recommended and most widely used approach is usually to install and configure <b>xrdp</b>. <b>xrdp</b> can be configured to start a new X session (including a Plasma session) or connect to an existing one, providing a full RDP experience for Windows and other RDP clients.


title: CLIENT VS. SERVER DISTINCTION
content:
It's crucial to differentiate between remote desktop <i>clients</i> and <i>servers</i>. <b>krdc</b> is a well-known KDE <i>client</i> application used to connect to remote desktops. <b>krdpserver</b>, if it existed as a distinct entity, would be the <i>server</i> component responsible for accepting incoming connections. However, the server side for RDP on Linux is predominantly handled by other dedicated projects like <b>xrdp</b> or VNC servers.


title: HISTORY
content:
The <i>krdp</i> project aimed to provide integrated remote desktop capabilities within the KDE ecosystem. While its client component, <i>krdc</i>, became a popular tool for connecting to various remote desktops, a distinct <i>krdpserver</i> executable for general public use never achieved the same prominence or widespread adoption as alternative solutions like <i>xrdp</i>. Its development likely occurred within the broader evolution of the KDE desktop environment, possibly as a conceptual server aspect or an internal component, rather than a user-facing command-line tool. Modern KDE remote access solutions typically integrate with existing, robust protocols and server implementations rather than relying on a unique <i>krdpserver</i>.


title: SYNOPSIS
content:
<b>kreadconfig5</b> [--file <i>&lt;file&gt;</i>] [--group <i>&lt;group&gt;</i>] [--key <i>&lt;key&gt;</i>] [--default <i>&lt;value&gt;</i>] [--type <i>&lt;type&gt;</i>]<br><b>kreadconfig5</b> [--file <i>&lt;file&gt;</i>] [--list-groups | --list-keys [--group <i>&lt;group&gt;</i>] | --list-all]<br><b>kreadconfig5</b> [--help | --version]


title: PARAMETERS
content:
<b>--file <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the full path to the configuration file to read. If not provided, it defaults to the main application configuration file (e.g., 'kdeglobals' for common settings) or the specific application's .rc file.<br><br><b>--group <i>&lt;group&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the configuration group (section) within the file from which to read the key. This option is required when using '--key' or '--list-keys'.<br><br><b>--key <i>&lt;key&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the configuration key whose value is to be read. This option is required for reading a specific value.<br><br><b>--default <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a default value to output if the specified key or group is not found. If omitted and the key is not found, the command will exit with an error (non-zero exit code).<br><br><b>--type <i>&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the expected data type of the value. Supported types include: <i>string</i>, <i>bool</i>, <i>int</i>, <i>double</i>, <i>path</i>, <i>url</i>, <i>color</i>, <i>font</i>. This helps in correct parsing and conversion of the configuration value.<br><br><b>--list-groups</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configuration groups (sections) found in the specified configuration file. If no file is specified, it lists groups in 'kdeglobals'.<br><br><b>--list-keys</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all keys within a specified configuration group. This option requires the '--group' option to be also provided.<br><br><b>--list-all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all groups and their respective keys found in the specified configuration file. If no file is specified, it lists all in 'kdeglobals'.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <b>kreadconfig5</b> command and the KDE Frameworks version it belongs to.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and available options for the command.<br><br>


title: DESCRIPTION
content:
<b>kreadconfig5</b> is a fundamental command-line utility provided by the KDE Frameworks 5 <b>KConfig</b> module. Its primary purpose is to read specific values from KDE's standardized .ini-style configuration files. These files serve as the central repository for storing settings across KDE applications and the entire desktop environment, commonly located in the user's <i>~/.config/</i> directory.<br><br>The command is an indispensable tool for system administrators and script developers, enabling them to programmatically query and retrieve KDE settings. This facilitates automation, allowing scripts to adapt their behavior dynamically based on the current desktop configuration, such as theme, language, or specific application preferences. Users can precisely specify the configuration file, the desired group (section), and the key within that group to retrieve its corresponding value. <b>kreadconfig5</b> also offers options for providing default values in case a setting is not found, or for listing all available groups and keys within a given configuration file, making it versatile for both direct querying and configuration exploration.


title: CAVEATS
content:
<b>kreadconfig5</b> requires KDE Frameworks 5 libraries to be installed and will not function on systems without these dependencies. It is designed to read .ini-style configuration files, which is KDE's primary format, but cannot parse other configuration formats like XML or JSON. The command returns an exit status of 0 on success, and a non-zero value if the specified file, group, or key cannot be found (unless a default value is explicitly provided with '--default').


title: COMMON CONFIGURATION LOCATIONS
content:
KDE configuration files are typically found in the user's home directory under <i>~/.config/</i>. For instance, global desktop settings are stored in <i>~/.config/kdeglobals</i>, while application-specific configurations are often located in files named <i>~/.config/<i>&lt;appname&gt;</i>rc</i> (e.g., <i>~/.config/konsole-rc</i> for Konsole).


title: USAGE IN SCRIPTS
content:
This command is widely utilized in shell scripts to dynamically query and retrieve current desktop settings, such as the active theme, icon set, or language preferences. Its ability to provide default values for non-existent entries significantly enhances the robustness and flexibility of scripts, allowing them to adapt gracefully to various user configurations or missing settings.


title: HISTORY
content:
<b>kreadconfig5</b> is an integral part of KDE Frameworks 5, which represents a significant architectural evolution from earlier KDE desktop environments (KDE 3, KDE 4). It emerged as the successor to older command-line utilities (such as those prefixed with 'kde-config' in earlier versions) designed for interacting with the KConfig system. Its development aimed to provide a robust, consistent, and modular command-line interface for reading KDE configuration values, aligning with the broader design principles of KDE Frameworks.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays information about the command line options.</i><br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays version information for the application.</i><br><br><b>--author</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows author information.</i><br><br><b>--license</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows license information.</i><br><br><b>--display &lt;displayname&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>X display to use. While less common for a virtual monitor provider, KDE applications often inherit this standard Qt/X option.</i><br><br>


title: DESCRIPTION
content:
krfb-virtualmonitor is an essential component of KRfb, the KDE remote desktop sharing application. Its primary function is to create and manage a virtual display server. This virtual display acts as a canvas for the remote desktop session, enabling KRfb to share a graphical environment even when no physical monitor is connected to the host machine, or when a separate, isolated graphical session is desired for remote access. <br><br>It is particularly valuable in "headless" server environments, where a physical display is absent but remote graphical administration is required. Instead of sharing an existing physical X display, krfb-virtualmonitor provides an independent virtual screen buffer. This ensures that remote sessions can operate without interfering with local display activities or requiring a local X server to be active on a physical output. It typically runs as a background process, facilitating robust and independent VNC sessions via KRfb.


title: CAVEATS
content:
<b>Integration:</b> <i>Primarily an internal component of KRfb; it is not typically invoked directly by end-users. Its lifecycle is usually managed by the KRfb application or service.</i><br><b>Dependencies:</b> <i>Relies on underlying display server technologies (like X or Wayland compatibility layers) to function, even though it creates a virtual display.</i><br><b>Resource Usage:</b> <i>Like any display server, even virtual, it consumes system resources (CPU, RAM) which scales with resolution and activity.</i><br><b>Security:</b> <i>As part of a remote access solution, ensure the host system and network are properly secured to prevent unauthorized access.</i>


title: <B>USAGE CONTEXT</B>
content:
<i>This command is not designed for direct user interaction in most scenarios. It functions as a backend helper for the KRfb application, which orchestrates the remote desktop session. When you configure KRfb for a "virtual desktop" or when connecting to a headless system, krfb-virtualmonitor is likely invoked by KRfb to provide the necessary graphical environment.</i>


title: <B>HEADLESS SERVER SUPPORT</B>
content:
<i>One of the most significant benefits of krfb-virtualmonitor is its ability to enable remote graphical access to systems without a physical monitor attached (e.g., servers, virtual machines). It creates a fully functional X display in memory, allowing a full KDE Plasma session (or any other desktop environment) to run purely for remote viewers, independent of any physical display hardware.</i>


title: HISTORY
content:
krfb-virtualmonitor emerged as part of the KDE Project's krfb application, which provides remote desktop sharing capabilities within the KDE Plasma desktop environment. Its development paralleled the increasing demand for robust and independent remote access solutions, particularly for headless systems or for creating dedicated remote sessions. It has been a stable component of krfb for many years, evolving with the underlying KDE Frameworks and Qt libraries, ensuring compatibility and improved performance across different KDE Plasma releases.


title: PARAMETERS
content:
<b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Krita version information and exits.<br><br><b><b>--dpi</b> <i>&lt;dpi&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the display DPI (Dots Per Inch) for Krita. Useful for scaling on high-resolution screens.<br><br><b><b>--fullscreen</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts Krita in fullscreen mode, maximizing the canvas area.<br><br><b><b>--config</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to use instead of the default.<br><br><b><b>--nosplash</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the Krita splash screen during startup.<br><br><b><b>--canvas-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts Krita with only the canvas visible, hiding toolbars and dockers for a distraction-free experience.<br><br><b><b>--display</b> <i>&lt;displayname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Qt option) Connects to the specified X server display.<br><br><b><b>--session</b> <i>&lt;sessionname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(KDE option) Restores the application to a previously saved session.<br><br><b><b>--geometry</b> <i>&lt;geometry&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Qt option) Sets the initial window geometry (e.g., <i>800x600+100+50</i>).<br><br>


title: DESCRIPTION
content:
<i>Krita</i> is a powerful, professional, and free open-source raster graphics editor designed primarily for digital painting, illustration, and 2D animation. It offers an extensive set of tools for concept art, comic and manga creation, textures, matte painting, and general illustration. <br><br>Key features include a highly customizable brush engine with various brush types, full color management support, HDR painting, a layer management system (raster, vector, filter, and group layers), comprehensive selection tools, masking capabilities, and a wide array of filters. Krita also provides robust vector tools for panel creation and text, and a dedicated animation workspace with onion skinning and audio support. It supports numerous file formats, including its native <i>.kra</i>, along with common formats like <i>PSD</i>, <i>PNG</i>, <i>JPG</i>, and <i>TIFF</i>. <br><br>Developed by the Krita Foundation as part of the KDE community, it is available across Linux, Windows, and macOS, making it a versatile choice for artists seeking a complete creative studio.


title: CAVEATS
content:
Krita, while optimized, can be resource-intensive, especially with large canvases, many layers, or complex brush strokes. Sufficient RAM and a capable CPU/GPU are recommended for optimal performance. <br><br>Some advanced features or very specific workflows might have a learning curve for users new to digital art software. Tablet support generally works well, but specific tablet drivers may require proper installation and configuration on Linux distributions.


title: FILE FORMATS
content:
Krita primarily uses its native <i>.kra</i> file format, which preserves all layers, settings, and other Krita-specific data. It also has strong support for a wide range of industry-standard image formats, including <i>PSD</i> (Adobe Photoshop Document), <i>PNG</i>, <i>JPG</i>, <i>TIFF</i>, <i>GIF</i>, <i>BMP</i>, <i>OpenEXR</i>, and various RAW formats (via Krita's built-in image loaders or external plugins).


title: EXTENSIBILITY
content:
Krita's functionality can be extended through Python scripting for custom tools and workflows. Artists and developers can also create and share resource bundles, which include collections of brushes, palettes, gradients, patterns, and other assets, significantly enhancing the creative possibilities.


title: HISTORY
content:
<i>Krita</i> originated in 1998 as part of the <i>KOffice</i> suite, initially named <i>KImageShop</i>, then <i>Krayon</i>, before settling on <i>Krita</i> in 2002. Its first stable release was with KOffice 1.4 in 2004. <br><br>Initially conceived as a general image manipulation program, its focus gradually shifted to digital painting and illustration due to the strengths and interests of its developers and community. This pivot solidified Krita's identity as a dedicated artistic tool, distinguishing it from general-purpose editors like GIMP. <br><br>Significant milestones include the adoption of OpenGL for canvas acceleration, a comprehensive brush engine revamp, the introduction of a dedicated animation workspace, and robust HDR painting capabilities. Development is sustained by the Krita Foundation, relying on donations, crowdfunding (notably successful Kickstarter campaigns), and professional contributions.


title: SYNOPSIS
content:
<b>krunvm</b> [GLOBAL_OPTIONS] <SUBCOMMAND> [SUBCOMMAND_OPTIONS] [ARGUMENTS]<br><br>Common Subcommands:<br>  <b>krunvm run</b> [OPTIONS] <<i>IMAGE_REFERENCE</i>> [<i>COMMAND</i>] [<i>ARGUMENTS</i>]<br>  <b>krunvm create</b> [OPTIONS] <<i>CONTAINER_ID</i>> <<i>BUNDLE_PATH</i>><br>  <b>krunvm start</b> <<i>CONTAINER_ID</i>><br>  <b>krunvm delete</b> <<i>CONTAINER_ID</i>><br>  <b>krunvm ps</b><br>  <b>krunvm info</b>


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for <i>krunvm</i> or a specific subcommand.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the <i>krunvm</i> version.<br><br><b><b>--log-level</b> <<i>LEVEL</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level (e.g., <i>debug</i>, <i>info</i>, <i>warn</i>, <i>error</i>).<br><br><b><b>--root</b> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the root directory for <i>krunvm</i> state (default: <i>/var/lib/krunvm</i>).<br><br><b><b>--config</b> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom configuration file for <i>krunvm</i>.<br><br><b><b>--net</b> <<i>MODE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configure networking for the micro-VM (e.g., <i>none</i>, <i>bridge</i>, <i>tap</i>). Specific modes may require additional arguments.<br><br><b><b>--memory</b> <<i>SIZE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the amount of memory allocated to the micro-VM (e.g., <i>256M</i>, <i>1G</i>).<br><br><b><b>--cpus</b> <<i>COUNT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of virtual CPUs allocated to the micro-VM.<br><br><b><b>--kernel</b> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the kernel image to use for the micro-VM. Defaults to a bundled <i>krun-kernel</i>.<br><br><b><b>--disk</b> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach a disk image to the micro-VM, specified by path.<br><br><b><b>--publish</b> <<i>HOST_PORT:CONTAINER_PORT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Publish a container port to a host port (e.g., <i>8080:80</i>).<br><br>


title: DESCRIPTION
content:
<i>krunvm</i> is a command-line interface tool that enables running OCI (Open Container Initiative) compatible container images as lightweight, isolated micro-VMs. It's a key component of the <i>krun</i> project, which aims to provide a secure and fast execution environment for containers by leveraging modern virtualization technologies like <i>Firecracker</i> or <i>Cloud Hypervisor</i>.<br><br>Unlike traditional container runtimes that share the host kernel, <i>krunvm</i> provides strong isolation by encapsulating each container within its own minimal virtual machine, drastically reducing the attack surface. This approach combines the security benefits of full virtualization with the efficiency and rapid boot times expected from containers. <i>krunvm</i> acts as a <i>containerd</i> shim, allowing seamless integration into container ecosystems like Kubernetes, providing a secure alternative for sensitive workloads. Its design prioritizes low resource consumption and rapid startup, making it suitable for serverless functions and other ephemeral workloads.


title: CAVEATS
content:
<i>krunvm</i> is part of the actively developed <i>krun</i> project. While it offers significant security and performance benefits for specific workloads, it may not be as feature-rich or mature as established container runtimes for all scenarios. It relies on a specific Virtual Machine Monitor (VMM) like <i>Firecracker</i> or <i>Cloud Hypervisor</i> and a compatible host kernel. Full integration with container orchestrators typically requires its <i>containerd</i> shim.


title: ARCHITECTURE OVERVIEW
content:
<i>krunvm</i> operates by launching a minimal Linux kernel within a VMM (such as <i>Firecracker</i> or <i>Cloud Hypervisor</i>) dedicated to running a single OCI image. This guest kernel is highly optimized and often called the '<i>krun-kernel</i>'. Instead of traditional block devices, <i>krunvm</i> uses <i>vhost-user</i> based virtio devices for efficient I/O, allowing direct communication between the guest and the host for file system access, networking, and other resources. This architecture minimizes overhead while maximizing isolation.


title: INTEGRATION WITH CONTAINERD
content:
One of <i>krunvm</i>'s key features is its implementation of the <i>containerd</i> runtime shim API. This means that <i>containerd</i>, a core component of many container orchestration systems like Kubernetes, can use <i>krunvm</i> as an alternative to <i>runc</i>. When configured as a <i>containerd</i> runtime, <i>krunvm</i> intercepts container creation requests and launches the OCI image within a micro-VM, providing an enhanced security boundary without requiring significant changes to existing container workflows.


title: HISTORY
content:
The <i>krun</i> project emerged from the need for stronger isolation and faster boot times for containerized applications, particularly in serverless and edge computing environments. It aimed to overcome the limitations of traditional container runtimes (like <i>runc</i>) which share the host kernel, by leveraging lightweight virtualization. <i>krunvm</i> was developed as the command-line interface and <i>containerd</i> shim for the <i>krun</i> runtime, providing a user-friendly way to interact with and manage these secure micro-VMs. Its development focuses on Rust for performance and security, integrating with existing virtualization technologies to offer a new paradigm for container execution.


title: PARAMETERS
content:
<b>--lock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Locks the screen immediately.</i><br><br><b>--unlock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Unlocks the screen. Requires authentication if the screen is locked.</i><br><br><b>--status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current status of the screen locker (e.g., "locked", "unlocked", "active", "inactive").</i><br><br><b>--active</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Checks if the screen locker is currently active (running).</i><br><br><b>--deactivate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deactivates the screen locker daemon. Use with caution as it might bypass security.</i><br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows the version information of kscreen-console.</i><br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays a help message with available options.</i><br><br>


title: DESCRIPTION
content:
<b>kscreen-console</b> is a command-line utility for interacting with the <i>KDE Plasma screen locking daemon</i>, <b>kscreenlocker</b>.<br>It provides a simple interface to programmatically lock or unlock the screen, query its current status, or activate/deactivate the locker. This tool is particularly useful for scripting, system administrators, or users who prefer command-line interactions over graphical interfaces for managing their session security within a KDE Plasma environment.<br>It communicates with <b>kscreenlocker</b> via <i>D-Bus</i> to perform its operations.


title: CAVEATS
content:
This command is specific to <i>KDE Plasma</i> desktop environments and relies on the <b>kscreenlocker</b> daemon being installed and running.<br>Unlocking the screen with <b>--unlock</b> requires user authentication (password) if the screen is genuinely locked, mimicking the graphical unlock prompt.<br>It may not work as expected in non-KDE environments or if <b>kscreenlocker</b> is not functioning correctly.


title: D-BUS INTERFACE
content:
<b>kscreen-console</b> interacts with <b>kscreenlocker</b> using D-Bus.<br>The specific D-Bus service is often <i>org.kde.ScreenSaver</i> and the path <i>/ScreenSaver</i>. Commands like <b>--lock</b> or <b>--unlock</b> translate into method calls on this D-Bus interface. This makes it possible for other applications or scripts to integrate with KDE's screen locking mechanism using D-Bus directly, if <b>kscreen-console</b> doesn't offer a specific function.


title: HISTORY
content:
<b>kscreen-console</b> has been an integral part of the <i>KDE Plasma</i> desktop environment for many years, evolving alongside the screen locker daemon. Its purpose has remained consistent: to provide a programmatic interface for screen locking functionality.<br>It leverages <i>D-Bus</i>, a standard inter-process communication system, which has been central to KDE's architecture for a long time, particularly since KDE 4 and Plasma 5.


title: SEE ALSO
content:
qdbus(1): <i>A command-line tool for interacting with D-Bus services.</i>, dbus-send(1): <i>Low-level D-Bus message sending utility.</i>, loginctl(1): <i>Control the systemd login manager, which can also manage user sessions and screen locks (though not directly kscreenlocker).</i>


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available commands and options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information for <i>kscreen-doctor</i>.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the output of commands like <i>outputs</i> into JSON for programmatic parsing.<br><br><b>--brief</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a concise, less verbose output for commands, often used with <i>outputs</i>.<br><br><b>outputs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all currently detected display outputs with their detailed status and available modes.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <i>outputs</i> command.<br><br><b>apply <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a screen configuration previously saved to the specified file.<br><br><b>save <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current display configuration to the specified file.<br><br><b>output <i>&lt;output-name&gt;</i> <br> (enable | disable | mode <i>&lt;mode-name&gt;</i> | auto-mode | position <i>&lt;x&gt;,&lt;y&gt;</i> | scale <i>&lt;value&gt;</i> | rotation <i>&lt;angle&gt;</i> | primary | not-primary | clone <i>&lt;source-output&gt;</i> | head-on-display-orientation)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures a specific display output by its name. Options include enabling/disabling it, setting its display mode, position, scaling, rotation, designating it as primary, cloning another output's content, or adjusting its head-on-display orientation.<br><br><b>set-mode <i>&lt;output-name&gt;</i> <i>&lt;mode-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set the display mode (resolution and refresh rate) for a specific output.<br><br><b>set-position <i>&lt;output-name&gt;</i> <i>&lt;x&gt;,&lt;y&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set the top-left corner position for a specific output.<br><br><b>set-scale <i>&lt;output-name&gt;</i> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set the UI scaling factor for a specific output (e.g., 1.25, 1.5).<br><br><b>set-rotation <i>&lt;output-name&gt;</i> <i>&lt;angle&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set the rotation angle (0, 90, 180, 270) for a specific output.<br><br><b>toggle <i>&lt;output-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles the enabled/disabled state of the specified display output.<br><br><b>clone <i>&lt;source-output&gt;</i> <i>&lt;target-output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clones the display content from the <i>source-output</i> to the <i>target-output</i>.<br><br><b>rescan</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces KScreen to rescan for connected displays, useful when displays are hot-plugged.<br><br>


title: DESCRIPTION
content:
<i>kscreen-doctor</i> is a command-line utility designed for managing and diagnosing display configurations within the KDE Plasma desktop environment. It offers a powerful interface to query current display states, list available outputs and modes, and apply changes such as enabling or disabling displays, setting resolutions, positions, scaling, and rotations. Unlike lower-level tools like <i>xrandr</i>, <i>kscreen-doctor</i> interacts directly with the KScreen 2 D-Bus interface, making it the preferred and most integrated tool for programmatic display management in Plasma. It can be used for scripting display setups, troubleshooting multi-monitor arrangements, or quickly adjusting screen settings without relying on the graphical System Settings module. It also supports outputting information in JSON format for easier parsing by other tools.


title: CAVEATS
content:
<i>kscreen-doctor</i> is designed specifically for the KDE Plasma desktop environment and relies on the KScreen D-Bus interface. It may not function correctly or at all in other desktop environments (e.g., GNOME, XFCE) or when a display manager other than Plasma's KScreen is active. Changes made via <i>kscreen-doctor</i> are generally applied immediately but may not persist across reboots or user logins unless explicitly saved and loaded (e.g., via Plasma startup scripts or by saving the configuration). Always ensure you have a way to revert changes if the display becomes unusable, especially when experimenting with positions or rotations.


title: D-BUS INTERFACE
content:
<i>kscreen-doctor</i> communicates with the running KScreen D-Bus service, which is solely responsible for managing all display configurations within the KDE Plasma session. This positions it as a high-level tool that interacts with Plasma's abstract display state rather than directly with the X server or Wayland compositor, ensuring seamless integration with the desktop environment.


title: CONFIGURATION FILES
content:
While <i>kscreen-doctor</i> can save and apply configurations using the <b>--save</b> and <b>--apply</b> commands, these files are typically in a JSON format understood specifically by KScreen. This means they might not be directly compatible or interchangeable with configuration files used by other display management tools or desktop environments.


title: HISTORY
content:
<i>kscreen-doctor</i> emerged as part of the KScreen 2 project, which significantly overhauled KDE Plasma's display management system. It provides a modern command-line interface to interact with the D-Bus services of KScreen 2, offering a more robust and Plasma-integrated alternative to older display management tools like <i>xrandr</i> for KDE users. Its development paralleled the evolution of Plasma's display configuration capabilities, aiming to provide comprehensive CLI control over the features available in the graphical System Settings display module.


title: SYNOPSIS
content:
<b>ksh</b> [<i>+/-abcefhimnprstuvx</i>] [<i>+/-o option</i>] [<i>command_file</i> [<i>argument...</i>]] <br><b>ksh</b> <i>-c command_string</i> [<i>command_name</i> [<i>argument...</i>]] <br><b>ksh</b> <i>-s</i> [<i>argument...</i>]


title: PARAMETERS
content:
<b><i>-a</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically export all subsequent defined parameters.<br><br><b><i>-b</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform background jobs asynchronously (job control is enabled by default in interactive shells).<br><br><b><i>-c command_string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read commands from the <i>command_string</i> argument. Any remaining arguments are assigned to the positional parameters, starting with $0.<br><br><b><i>-e</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately if a command exits with a non-zero status. This is equivalent to `set -o errexit`.<br><br><b><i>-i</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the shell to be interactive. An interactive shell ignores `SIGTERM` and `SIGINT`, and enables job control.<br><br><b><i>-n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read commands but do not execute them. Useful for checking script syntax without running it.<br><br><b><i>-p</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enter privileged mode. The `ENV` file is not processed, and functions are not imported from the environment. This helps prevent security vulnerabilities.<br><br><b><i>-s</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read commands from standard input. Any remaining arguments are assigned to the positional parameters.<br><br><b><i>-u</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat unset parameters as an error when performing parameter expansion. Equivalent to `set -o nounset`.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print shell input lines as they are read. Equivalent to `set -o verbose`.<br><br><b><i>-x</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print commands and their arguments as they are executed. Equivalent to `set -o xtrace`.<br><br><b><i>-o option</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable specific shell options. Common options include: <br><i>emacs</i> (emacs-style command-line editing), <br><i>vi</i> (vi-style command-line editing), <br><i>monitor</i> (enable job control), <br><i>noclobber</i> (prevent redirection from overwriting existing files).<br><br>


title: DESCRIPTION
content:
The KornShell (ksh) is a Unix shell developed by David Korn at Bell Labs in the early 1980s. It was designed to be a superset of the original Bourne Shell (sh) while incorporating many features from the C Shell (csh), along with its own significant enhancements. <br><br>ksh offers robust command-line editing capabilities (with vi and emacs modes), command history, built-in arithmetic, arrays, and advanced I/O features like co-processes. It's renowned for its powerful scripting language, which includes functions, aliases, and sophisticated flow control mechanisms, making it ideal for system administration tasks, automation, and complex script development. <br><br>While providing a rich programming environment, ksh also excels as an interactive command interpreter, balancing ease of use with comprehensive functionality. Its influence can be seen in other modern shells like Bash and Zsh.


title: CAVEATS
content:
Different versions of ksh (notably ksh88 and ksh93) have varying features and behaviors; scripts relying on ksh93 specific features may not run on older ksh88 implementations. While generally stable, older ksh versions had security vulnerabilities like Shellshock, underscoring the importance of keeping your shell updated. Features like co-processes might behave slightly differently across various Unix-like systems.


title: INTERACTIVE FEATURES
content:
ksh provides advanced interactive features including a powerful command history with configurable length, and two primary modes for command-line editing: <i>vi</i> mode (for users familiar with the vi editor) and <i>emacs</i> mode (for users familiar with the emacs editor). These modes allow efficient navigation, editing, and searching of past commands.


title: PROGRAMMING CAPABILITIES
content:
Beyond interactive use, ksh is a full-fledged programming language. It supports functions with local variables, aliases, arrays, and co-processes (which allow two-way communication with other programs). It also includes sophisticated control structures like `select` loops, and robust error handling via the `trap` command, making it suitable for developing complex and reliable scripts.


title: VERSION DIFFERENCES
content:
The two main versions are <i>ksh88</i> and <i>ksh93</i>. <i>ksh93</i> is a significant update, introducing features such as floating-point arithmetic, associative arrays, `select` loops, dynamic aliases, and enhanced I/O redirection. When writing scripts, it's important to be aware of which ksh version is expected to be available, as some advanced features of ksh93 are not present in ksh88.


title: HISTORY
content:
KornShell (ksh) was developed by David Korn at Bell Labs in the early 1980s, with the goal of creating a more robust and feature-rich shell than the existing Bourne Shell (sh) and C Shell (csh). Its first widely adopted version was <i>ksh88</i>. <br><br>A significant update, <i>ksh93</i>, introduced major enhancements including floating-point arithmetic, associative arrays, new built-in commands, and improved scripting capabilities, making it a powerful programming language in its own right. ksh's innovations in command-line editing, job control, and scripting constructs profoundly influenced the development of other popular shells like Bash and Zsh. It continues to be maintained and used, particularly in enterprise Unix environments, for its stability and powerful features.


title: PARAMETERS
content:
<b><I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The mandatory type of kstat to query, e.g., <B>cpu_info</B>, <B>arcstats</B>, <B>zpool_stats</B>. This corresponds to the module or class of statistics. On Linux, common types like <B>arcstats</B> and <B>zpool_stats</B> are relevant for ZFS.<br><br><b>[<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies the name of the kstat. Kstats are often organized hierarchically by type, name, and instance.<br><br><b>[<I>instance</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies the instance number of the kstat, especially when multiple instances of a similar type exist (e.g., multiple CPUs, multiple ZFS pools).<br><br>


title: DESCRIPTION
content:
The <b>kstats</b> command is a utility provided by the <b>libkstat-dev</b> package on Linux, designed to query and display kernel statistics (kstats) that conform to the Solaris/illumos kstat framework. While kstat is native to Solaris and illumos operating systems, this command finds its primary utility on Linux systems primarily through the ZFS on Linux implementation, where ZFS modules export various performance and operational metrics via a compatible kstat interface. It allows users to inspect low-level kernel counters, timers, and data structures related to ZFS pools, datasets, and other ZFS components, providing insights into storage performance, cache hits/misses, and other ZFS-specific operational details. Without ZFS or other kstat-exposing modules loaded, <b>kstats</b> may report lookup errors as the underlying kstat data is not available.


title: CAVEATS
content:
<b>Linux Specificity</b>: The <B>kstats</B> command is not a standard, general-purpose Linux kernel statistics tool. It relies on the <B>libkstat</B> library, which provides a compatibility layer for the Solaris/illumos kstat framework.<br><b>Module Dependency</b>: Its utility on Linux is largely dependent on specific kernel modules, most notably ZFS on Linux, which exposes its statistics via a kstat-compatible interface. Without ZFS or other kstat-exposing modules loaded, the command will typically fail to find data (e.g., "failed to lookup kstat module '...'" or "No such file or directory").<br><b>Limited Scope</b>: It does not provide general Linux performance metrics (like CPU usage, memory, disk I/O for non-ZFS filesystems) that tools like <B>top</B>, <B>mpstat</B>, <B>iostat</B>, or <B>perf</B> do.<br><b>No Man Page</b>: As of current distributions, a dedicated <B>man kstats</B> page is often unavailable, making its usage discovery reliant on trial and error or external documentation.


title: TYPICAL ZFS USAGE
content:
On Linux, common <I>type</I> values for <I>kstats</I> when ZFS is loaded include <B>arcstats</B> (for ZFS ARC cache statistics) and <B>zpool_stats</B> (for overall ZFS pool statistics). For example, to view ARC statistics: <B>kstats arcstats</B>.<br>To see stats for a specific ZFS pool named 'mydata': <B>kstats zpool_stats mydata</B>. The output provides various counters and values relevant to ZFS performance and health.


title: HISTORY
content:
The kstat framework originated in Solaris and illumos operating systems as a mechanism for kernel modules to export performance, configuration, and debugging statistics. The <B>libkstat</B> library and associated utilities like <B>kstats</B> were developed to provide a userland interface to these kernel statistics. When ZFS was ported to Linux (ZFS on Linux project), the need arose to access its internal statistics. To maintain compatibility with Solaris-based tooling and leverage the existing kstat infrastructure, the ZFS on Linux module was designed to export its metrics through a kstat-compatible interface. The <B>kstats</B> command on Linux is part of the <B>libkstat-dev</B> package, providing a bridge to read these ZFS-exported kernel statistics, thus bringing a piece of the Solaris diagnostic toolkit to Linux environments where ZFS is used.


title: PARAMETERS
content:
<b><i>&lt;input.svg&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input SVG file that needs to be converted.<br><br><b><i>&lt;output.png&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the resulting PNG image will be saved.<br><br><b><i>--width &lt;pixels&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired output image width in pixels. If only width or height is specified, the aspect ratio of the SVG will be maintained.<br><br><b><i>--height &lt;pixels&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired output image height in pixels. If only width or height is specified, the aspect ratio of the SVG will be maintained.<br><br><b><i>--scale &lt;factor&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a scaling factor to the SVG rendering. For example, <i>--scale 2</i> will render the SVG at double its original size or the size specified by <i>--width</i>/<i>--height</i>.<br><br><b><i>--background-color &lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a background color for the PNG image. This can be a color name (e.g., <i>white</i>) or a hexadecimal RGB value (e.g., <i>#RRGGBB</i>).<br><br><b><i>--dark-mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renders the SVG using a dark color scheme, if the SVG content supports it and has defined styles for different color modes.<br><br><b><i>--color-scheme &lt;scheme&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular color scheme for rendering the SVG, such as <i>light</i> or <i>dark</i>. This allows for more granular control over thematic rendering than just <i>--dark-mode</i>.<br><br><b><i>--no-cache</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from using or writing to any SVG rendering cache, ensuring a fresh render each time.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message detailing the command's usage and available options.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>ksvgtopng5</b> utility.<br><br>


title: DESCRIPTION
content:
<b>ksvgtopng5</b> is a command-line utility within the KDE Frameworks designed to convert Scalable Vector Graphics (SVG) files into Portable Network Graphics (PNG) raster images. Leveraging Qt's SVG rendering capabilities, it's primarily used by KDE applications and developers to dynamically render SVG assets, such as icons and UI elements, into pixel-based formats for display. This tool is instrumental in ensuring that KDE applications can efficiently display high-quality, resolution-independent vector graphics, adapting them to various screen resolutions and HiDPI displays without pixelation. While it does not offer advanced editing features, it provides essential options for controlling output dimensions, scaling, and background color, making it an efficient utility for its specific role within the KDE ecosystem.


title: CAVEATS
content:
<b>ksvgtopng5</b> is primarily designed for use within the KDE/Qt environment and relies on Qt's SVG module for rendering. While efficient for its intended purpose, it may not support every advanced or esoteric SVG feature that dedicated full-fledged SVG editors or robust renderers (like librsvg) might. Its usage is typically by applications rather than direct end-user interaction for general image conversion.


title: KDE/QT INTEGRATION
content:
As a core component of KDE Frameworks, <b>ksvgtopng5</b> is deeply integrated into the KDE desktop environment. It is often invoked internally by KDE applications to dynamically render scalable vector icons and other graphics into pixel-based images suitable for display on various screen resolutions, including HiDPI displays. This ensures a consistent and crisp visual experience across all KDE applications by adapting vector assets on-the-fly.


title: PERFORMANCE CONSIDERATIONS
content:
While not a comprehensive SVG editing tool, <b>ksvgtopng5</b> is optimized for rapid, batch conversion of SVG assets. Its lightweight nature and direct reliance on Qt's rendering engine make it highly efficient for its intended purpose within the KDE ecosystem. This efficiency is particularly valuable for generating user interface elements and icons dynamically, contributing to the overall responsiveness of KDE applications.


title: HISTORY
content:
<b>ksvgtopng5</b> is an integral part of the KDE Frameworks 5, building upon Qt5's powerful SVG rendering capabilities. Its development was driven by the need for KDE applications to efficiently and natively convert SVG assets, such as icons and graphical elements, into raster formats for display across diverse resolutions. The '5' in its name specifically signifies its integration with Qt 5 and KDE Frameworks 5, differentiating it from potential older versions built for Qt 4 or earlier KDE releases, and highlighting its role in the modern KDE desktop environment.


title: SYNOPSIS
content:
<b>kubectl fzf</b> [<i>options</i>] [<i>resource_type</i>]<br><br>Examples:<br>  <b>kubectl fzf</b> pod<br>  <b>kubectl fzf</b> ns<br>  <b>kubectl fzf</b> -x<br>  <b>kubectl fzf</b> --context-only


title: PARAMETERS
content:
<b><b>-x</b>, <b>--all-namespaces</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search across all namespaces for resources.<br><br><b><b>-c</b>, <b>--context-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively select only a Kubernetes context.<br><br><b><b>-n</b>, <b>--namespace-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively select only a namespace.<br><br><b><b>-p</b>, <b>--pod-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively select only a pod.<br><br><b><b>-r</b> <i>&lt;type&gt;</i>, <b>--resource-type</b>=<i>&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a particular Kubernetes resource type to list and select (e.g., <i>deploy</i>, <i>svc</i>, <i>ing</i>).<br><br><b><b>-s</b> <i>&lt;labels&gt;</i>, <b>--selector</b>=<i>&lt;labels&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter resources by label selector (e.g., 'app=my-app').<br><br><b><b>-l</b>, <b>--log</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly view logs for the selected pod after selection.<br><br><b><b>-e</b>, <b>--exec</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly execute into the selected pod after selection.<br><br><b><b>--no-header</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not show the header line in the <i>fzf</i> output.<br><br><b><b>--reverse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display <i>fzf</i> results in reverse order (bottom-up).<br><br><b><b>--preview</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a preview window displaying details (e.g., <i>kubectl describe</i>) for the currently highlighted resource in <i>fzf</i>.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the help message and exit.<br><br>


title: DESCRIPTION
content:
<i>kube-fzf</i> is a powerful <i>kubectl</i> plugin that streamlines interaction with Kubernetes clusters by integrating the <i>fzf</i> fuzzy finder. It allows users to quickly select and act upon various Kubernetes resources such as contexts, namespaces, pods, deployments, services, ingresses, and more, through an interactive command-line interface.<br><br>Instead of typing long <i>kubectl</i> commands, users can simply launch <i>kubectl fzf</i>, search for the desired resource using <i>fzf</i>'s fuzzy matching capabilities, and then apply standard <i>kubectl</i> actions (e.g., <i>describe</i>, <i>logs</i>, <i>exec</i>) to the selected item. This significantly enhances productivity and reduces errors when working with complex or multiple Kubernetes environments.


title: CAVEATS
content:
<b>kube-fzf</b> requires <b>fzf</b> to be installed and available in your system's <b>PATH</b>. It also relies on <b>kubectl</b> being correctly configured to access your Kubernetes clusters. Its exact behavior and available options can vary slightly depending on the specific version or how it was installed (e.g., via <b>krew</b> or as a standalone script).


title: INSTALLATION
content:
<i>kube-fzf</i> is commonly installed via <i>krew</i> (a <i>kubectl</i> plugin manager) by running <b>kubectl krew install fzf</b>. Alternatively, you can manually download the script or compiled binary from its GitHub repository and place it in your system's <b>PATH</b> to be invoked directly as <b>kube-fzf</b>, or symlink it to <b>kubectl-fzf</b> for <i>kubectl</i> plugin invocation.


title: INTERACTIVE ACTIONS
content:
Beyond just listing and selecting resources, <i>kube-fzf</i> often allows for chaining interactive actions. For instance, after selecting a pod, you might be presented with additional options to <i>describe</i>, view <i>logs</i>, <i>exec</i> into it, or even <i>delete</i> it, enhancing the interactive workflow significantly.


title: CUSTOMIZATION
content:
Many implementations of <i>kube-fzf</i> allow for customization via environment variables or configuration files. This enables users to define default behaviors, pass specific <i>fzf</i> options, or configure which Kubernetes resource types should be included or excluded from the fuzzy search.


title: HISTORY
content:
<i>kube-fzf</i> emerged as a community-driven tool to enhance the <i>kubectl</i> experience, leveraging the power of the <i>fzf</i> fuzzy finder. Its development gained traction due to the growing complexity of managing multiple Kubernetes clusters and numerous resources, making a fuzzy-finding interface highly desirable for efficiency. It's often distributed as a shell script or a compiled binary, popular among developers and operations teams who frequently interact with Kubernetes environments.


title: SYNOPSIS
content:
<b>kubeadm</b> <I>command</I> [<I>flags</I>]<br><br>Common commands:<br><b>kubeadm init</b> [<I>flags</I>]<br><b>kubeadm join</b> [<I>flags</I>]<br><b>kubeadm reset</b> [<I>flags</I>]<br><b>kubeadm upgrade</b> [<I>flags</I>]<br><b>kubeadm config</b> [<I>flags</I>]<br><b>kubeadm token</b> [<I>flags</I>]<br><b>kubeadm version</b>


title: PARAMETERS
content:
<b>--apiserver-advertise-address=<IP></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b>. The IP address the API Server will advertise to other cluster members.<br><br><b>--control-plane-endpoint=<endpoint></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b>. Specify a stable IP address or DNS name for the control plane. Useful for HA setups.<br><br><b>--pod-network-cidr=<CIDR></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b>. Specify range of IP addresses for the pod network. Required for a CNI plugin.<br><br><b>--kubernetes-version=<version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b>. Choose a specific Kubernetes version for the control plane components.<br><br><b>--upload-certs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b>. Upload certificates to a Secret in the cluster, allowing <b>kubeadm join --control-plane</b> to retrieve them securely.<br><br><b>--token=<token></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>join</b>. The token used to discover the cluster-info and establish trust.<br><br><b>--discovery-token-ca-cert-hash=<hash></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>join</b>. Validate the root CA certificate hash to secure discovery.<br><br><b>--control-plane</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>join</b>. Designate the joining node as an additional control plane instance for high availability.<br><br><b>--node-name=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>init</b> or <b>join</b>. Specify the node name to use for the joining machine.<br><br><b>--config=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a <i>kubeadm</i> configuration file (YAML) for advanced customization.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Help for any command or subcommand.<br><br><b>--v=<level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log level verbosity for debugging.<br><br>


title: DESCRIPTION
content:
<i>kubeadm</i> is a powerful command-line utility used to bootstrap a minimum viable Kubernetes cluster on existing hardware. It handles the essential steps for setting up a production-grade cluster, including initializing the control plane, joining worker nodes, and installing core add-ons like CoreDNS and kube-proxy. <i>kubeadm</i> aims to provide a good "fast path" for users to get a cluster up and running, focusing on best practices and security. It simplifies the complex process of manual Kubernetes component configuration, allowing users to quickly experiment, develop, or deploy applications without deep cluster internals knowledge. While it automates many tasks, it also provides flexibility through configuration files and flags for advanced scenarios, such as high availability setups or custom networking. It's often used in conjunction with a CNI (Container Network Interface) plugin for pod networking and a container runtime like containerd.


title: CAVEATS
content:
<i>kubeadm</i> does not provision underlying infrastructure (VMs, bare-metal). It also does not install a Container Network Interface (CNI) plugin for pod networking (which must be done manually after <b>init</b>), nor does it manage the container runtime (e.g., containerd, Docker). It is a building block for cluster setup, not a full provisioning solution. Upgrading clusters can be complex and requires careful planning, especially across major Kubernetes versions. For production environments, consider additional steps for high availability, persistent storage, and comprehensive security beyond <i>kubeadm</i>'s scope.


title: COMMON CLUSTER CREATION WORKFLOW
content:
The typical workflow involves preparing machines (OS, container runtime, necessary kernel modules, networking), running <b>kubeadm init</b> on the chosen control plane node, then installing a CNI plugin (e.g., Calico, Flannel), and finally running <b>kubeadm join</b> on worker nodes. For high availability, additional control plane nodes can also join using <b>kubeadm join --control-plane</b>.


title: PRE-FLIGHT CHECKS
content:
Before initializing or joining a cluster, <i>kubeadm</i> automatically performs a series of pre-flight checks. These checks validate that the environment meets all necessary prerequisites, covering aspects such as network connectivity, required open ports, container runtime status, kernel modules, and system configurations. This helps prevent common setup issues and provides clear guidance if problems are detected.


title: CONFIGURATION FILES
content:
While many settings can be controlled via command-line flags, <i>kubeadm</i> supports comprehensive YAML-based configuration files. These files allow users to specify detailed settings for various Kubernetes components (like the API Server, Controller Manager, and Scheduler), manage certificates, define network parameters, and configure other advanced options, providing a robust way to manage complex cluster setups.


title: HISTORY
content:
<i>kubeadm</i> was first introduced in Kubernetes 1.4 (around September 2016) as a crucial tool to simplify the process of bootstrapping Kubernetes clusters. Its primary goal was to abstract away the intricate manual configurations of Kubernetes components, making cluster setup more accessible. Over its development, <i>kubeadm</i> has undergone significant improvements, gaining stability, better support for high availability (HA) control planes, streamlined cluster upgrades, and more robust pre-flight checks. It has evolved into the official and recommended tool for Kubernetes cluster bootstrapping within the community, with new features and enhancements released alongside each Kubernetes version.


title: SYNOPSIS
content:
<b>kubectl</b> [<i>command</i>] [<i>TYPE</i>] [<i>NAME</i> | <i>-f FILENAME</i>] [<i>flags</i>]<br><br>Common commands include:<br>&nbsp;&nbsp;<i>get</i>: Display one or many resources.<br>&nbsp;&nbsp;<i>describe</i>: Show details of a specific resource.<br>&nbsp;&nbsp;<i>apply</i>: Apply a configuration to a resource by filename or stdin.<br>&nbsp;&nbsp;<i>delete</i>: Delete resources by filename, stdin, resources and names, or by resources and label selector.<br>&nbsp;&nbsp;<i>logs</i>: Print the logs for a container in a pod.<br>&nbsp;&nbsp;<i>exec</i>: Execute a command in a container.<br>&nbsp;&nbsp;<i>create</i>: Create a resource from a file or stdin.<br><br><i>TYPE</i> is a resource type (e.g., <i>pod</i>, <i>deployment</i>, <i>service</i>).<br><i>NAME</i> is the name of a specific resource.<br><i>FILENAME</i> is the path to a resource definition file (e.g., YAML or JSON).


title: PARAMETERS
content:
<b>--kubeconfig=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the kubeconfig file to use for CLI requests.<br><br><b>--context=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the kubeconfig context to use.<br><br><b>--namespace, -n <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for the CLI request.<br><br><b>--server=<address:port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The address and port of the Kubernetes API server.<br><br><b>--cluster=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the kubeconfig cluster to use.<br><br><b>--user=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the kubeconfig user to use.<br><br><b>--output, -o <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. One of: json|yaml|wide|name|go-template|jsonpath|jsonpath-as-json|jsonpath-file|template|templatefile.<br><br><b>--dry-run=<mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Must be "client", "server", or "none". If client, only print the object that would be sent, without sending it. If server, apply the configuration to the server, but don't persist it.<br><br><b>--validate=<strategy></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, use a schema to validate the input before sending it. 'strict' or 'warn'.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help for a command.<br><br>


title: DESCRIPTION
content:
<b>kubectl</b> is the primary command-line tool for interacting with and managing Kubernetes clusters. It allows users to run commands against Kubernetes clusters, which communicate with the cluster's API server. With <b>kubectl</b>, users can deploy applications, inspect and manage cluster resources, view logs, and execute commands inside running containers. It's an indispensable tool for both cluster administrators and application developers working with Kubernetes. <b>kubectl</b> supports defining Kubernetes resources using YAML or JSON files, enabling declarative management of applications and infrastructure. It provides a comprehensive set of verbs (e.g., <i>create</i>, <i>get</i>, <i>describe</i>, <i>apply</i>, <i>delete</i>) and resources (e.g., <i>pods</i>, <i>deployments</i>, <i>services</i>) to cover the entire lifecycle of applications on Kubernetes. It seamlessly integrates with various authentication mechanisms to securely access the cluster.


title: CAVEATS
content:
<b>kubectl</b> client version compatibility is crucial; it's generally recommended that the client version be within one minor version of the Kubernetes cluster's API server. <br><br>Operating on the correct Kubernetes context and namespace is vital to prevent unintended changes to the wrong cluster or environment. Users must be mindful of their current context, especially when dealing with multiple clusters or namespaces. <br><br>While <b>kubectl</b> offers direct editing capabilities (e.g., <b>kubectl edit</b>), using declarative configuration files with <b>kubectl apply -f</b> is generally preferred for consistency, version control, and easier rollback. <br><br>All actions performed by <b>kubectl</b> are subject to the Role-Based Access Control (RBAC) policies configured on the Kubernetes cluster. Users require appropriate permissions to execute specific commands and manage resources.


title: KUBECONFIG MANAGEMENT
content:
<b>kubectl</b> relies on a <i>kubeconfig</i> file (default location: <i>~/.kube/config</i>) to find the information necessary to choose a cluster, a user, and a namespace. A <i>kubeconfig</i> file contains configurations for contexts, which are combinations of clusters, users, and namespaces. Users can switch between different clusters and environments using <b>kubectl config use-context &lt;context-name&gt;</b>, simplifying multi-cluster management.


title: PLUGINS
content:
<b>kubectl</b> provides a flexible plugin mechanism, allowing users to extend its capabilities by creating executable files prefixed with <b>kubectl-</b> in their system's PATH. When a command like <b>kubectl my-plugin</b> is executed, <b>kubectl</b> looks for <b>kubectl-my-plugin</b> and runs it. This allows for custom commands, integrations with other tools, and specialized cluster operations, enhancing the tool's versatility beyond its core functionality.


title: HISTORY
content:
<b>kubectl</b> emerged alongside the Kubernetes project, initially developed by Google and subsequently released as open-source. As Kubernetes gained widespread adoption, <b>kubectl</b> quickly established itself as the indispensable command-line interface for managing and interacting with Kubernetes clusters. Its design principles mirror Kubernetes' declarative approach, allowing users to define the desired state of their applications and infrastructure. <br><br>The tool has undergone continuous development, with new features and improvements being added in alignment with Kubernetes release cycles. Its consistent interface across various Kubernetes versions and distributions has cemented its role as the universal client for the ecosystem, empowering developers and operations teams worldwide.


title: PARAMETERS
content:
<b><b>-f, --filename stringArray</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the configuration file(s) (YAML or JSON) or directory containing configuration files to apply. Can be used multiple times.<br><br><b><b>-k, --kustomize string</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a Kustomization directory to apply. Used for Kustomize-based configurations.<br><br><b><b>--dry-run string</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to 'client', only print the object that would be sent. If 'server', allows server validation without persistence. Valid values: 'client', 'server', 'none'.<br><br><b><b>--server-side</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, apply the configuration on the server. This enables Server-Side Apply (SSA), which tracks field ownership and manages conflicts more effectively.<br><br><b><b>--prune</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically delete resources that are not defined in the given configuration files. Requires <i>--selector</i> or <i>--all</i>.<br><br><b><b>--force-conflicts</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, server-side apply will force the conflicts to be overwritten. Use with caution.<br><br><b><b>--field-manager string</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the manager for the fields. Used by Server-Side Apply to track ownership of fields.<br><br><b><b>-n, --namespace string</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for this CLI request.<br><br>


title: DESCRIPTION
content:
<i>kubectl apply</i> is a fundamental command in Kubernetes for declaratively managing cluster resources. Instead of imperative commands, it allows users to define the desired state of their resources in configuration files (YAML or JSON). <i>kubectl apply</i> then intelligently determines the necessary changes to transition the current cluster state to the desired state. It supports both client-side and server-side apply mechanisms. Client-side apply (the historical default) tracks the last applied configuration via an annotation, enabling <i>kubectl</i> to compute diffs and perform merges. Server-side apply (recommended for modern use) shifts the merge logic to the API server, allowing it to track field ownership and manage conflicts more robustly. This command is crucial for idempotent updates, CI/CD pipelines, and GitOps workflows, ensuring consistency and preventing accidental overwrites.


title: CAVEATS
content:
<i>kubectl apply</i>, especially with client-side apply, can sometimes lead to merge conflicts if multiple sources modify the same resource fields without coordination. Server-Side Apply (SSA) largely mitigates this by tracking field ownership, but requires understanding of its behavior. Using <i>--prune</i> without a specific <i>--selector</i> or <i>--all</i> can lead to unintended deletion of resources in the current namespace.


title: DECLARATIVE MANAGEMENT
content:
<i>kubectl apply</i> embodies Kubernetes' declarative approach. You define the <i>desired state</i> of your applications and infrastructure in configuration files, and <i>apply</i> ensures the cluster reaches and maintains that state. This is fundamental for GitOps and Infrastructure as Code practices.


title: CLIENT-SIDE VS. SERVER-SIDE APPLY
content:
<b>Client-Side Apply</b> (default before K8s 1.18): <i>kubectl</i> downloads the object, merges it locally, and sends the updated object. It relies on a <i>last-applied-configuration</i> annotation.<br><b>Server-Side Apply</b> (<i>--server-side</i>, stable since K8s 1.18): The merge logic and field ownership tracking occur on the API server. This is the recommended approach for modern Kubernetes workflows as it prevents conflicts by allowing multiple controllers/users to manage different fields of the same resource concurrently.


title: HISTORY
content:
<i>kubectl apply</i> was introduced early in Kubernetes' development as a core mechanism for declarative resource management. Its initial implementation relied on <i>client-side three-way merge patching</i>, where <i>kubectl</i> would compare the live state, the last-applied configuration (stored as an annotation), and the new desired configuration to compute a patch. To address limitations with conflict resolution and field ownership, <i>Server-Side Apply (SSA)</i> was introduced as alpha in Kubernetes 1.14, beta in 1.16, and stable in 1.18. SSA fundamentally changed how <i>apply</i> works by shifting the merge logic and field ownership tracking to the API server, significantly enhancing its robustness and scalability for complex environments.


title: SEE ALSO
content:
kubectl create(1), kubectl replace(1), kubectl diff(1), kubectl get(1), kubectl delete(1), kubectl patch(1)


title: SYNOPSIS
content:
<b>kubectl config</b> <i>&lt;subcommand&gt;</i> [<i>options</i>]<br><br>Common <b>kubectl config</b> subcommands include:<br>&nbsp;&nbsp;<b>kubectl config view</b> [<i>options</i>]<br>&nbsp;&nbsp;<b>kubectl config get-contexts</b> [<i>options</i>]<br>&nbsp;&nbsp;<b>kubectl config use-context</b> <i>&lt;name&gt;</i><br>&nbsp;&nbsp;<b>kubectl config set-context</b> <i>&lt;name&gt;</i> <b>--cluster=</b><i>&lt;cluster&gt;</i> <b>--user=</b><i>&lt;user&gt;</i> [<b>--namespace=</b><i>&lt;namespace&gt;</i>]<br>&nbsp;&nbsp;<b>kubectl config delete-context</b> <i>&lt;name&gt;</i>


title: PARAMETERS
content:
<b>view</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the merged kubeconfig settings, showing configured clusters, users, and contexts. Can be filtered and formatted.<br><br><b>get-contexts</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available contexts defined in the kubeconfig, indicating the currently active one and their associated cluster/user/namespace.<br><br><b>use-context <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the current context to the specified name, thereby switching the active Kubernetes cluster and user for subsequent <b>kubectl</b> commands.<br><br><b>current-context</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the name of the currently active context from the kubeconfig file.<br><br><b>set-context <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new context or modifies an existing one, associating it with a specified cluster, user, and optionally a default namespace.<br><br><b>set-cluster <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies or creates a cluster entry in the kubeconfig, defining its API server address and certificate authority data.<br><br><b>set-credentials <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies or creates a user entry in the kubeconfig, specifying authentication methods like client certificates, client keys, or tokens.<br><br><b>rename-context <old_name> <new_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the name of an existing context to a new specified name.<br><br><b>set <property_name> <property_value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific key-value pair directly within the kubeconfig file, allowing granular control over configuration properties.<br><br><b>unset <property_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified key-value pair from the kubeconfig file.<br><br><b>delete-cluster <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a cluster entry and its associated data from the kubeconfig file.<br><br><b>delete-context <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a context entry from the kubeconfig file.<br><br><b>delete-user <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a user entry from the kubeconfig file.<br><br><b>--kubeconfig=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global Flag) Specifies an alternative path to the kubeconfig file to be used instead of the default location (`~/.kube/config`).<br><br><b>--output=<format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Applicable to <b>view</b>, <b>get-contexts</b>) Specifies the output format, such as `yaml`, `json`, `name`, or `wide`.<br><br><b>--flatten</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Applicable to <b>view</b>) Prints the kubeconfig in a single file by merging and embedding certificate data directly into the output.<br><br>


title: DESCRIPTION
content:
The <b>kubectl config</b> command group allows users to manage their kubeconfig files, which are essential for configuring access to Kubernetes clusters. These files encapsulate details about clusters (API server addresses, CA certificates), users (authentication credentials), and <i>contexts</i>. A context is a convenient combination of a cluster, a user, and an optional namespace, defining how <b>kubectl</b> interacts with a specific Kubernetes cluster. This command is fundamental for users who need to switch between multiple Kubernetes environments, such as development, staging, and production, from a single workstation. It provides functionalities to view, create, modify, and delete cluster, user, and context entries, enabling seamless and secure management of diverse Kubernetes interactions. Proper handling of kubeconfig files through this command ensures efficient and secure cluster access.


title: CAVEATS
content:
<ul><li><b>Security Risk:</b> Kubeconfig files contain sensitive authentication data. Always protect them with appropriate file permissions and avoid sharing them carelessly.</li><li><b>Default Location Override:</b> While flexible, consistently overriding the default kubeconfig location (`~/.kube/config`) via the <b>KUBECONFIG</b> environment variable or the <b>--kubeconfig</b> flag can sometimes lead to confusion if not meticulously managed.</li><li><b>Context Verification:</b> When working with multiple clusters, always verify the current context using `<b>kubectl config current-context</b>` to prevent accidental operations on the wrong cluster.</li><li><b>Manual Editing:</b> Kubeconfig files are YAML. Manual edits require strict adherence to YAML syntax; errors can corrupt the configuration and prevent <b>kubectl</b> from functioning correctly.</li></ul>


title: ENVIRONMENT VARIABLE: KUBECONFIG
content:
The `KUBECONFIG` environment variable allows specifying a list of kubeconfig files (colon-separated on Linux/macOS, semicolon-separated on Windows). When set, <b>kubectl</b> merges the configurations from all listed files. The first definition encountered for a given cluster, user, or context name takes precedence. This powerful feature enables users to organize their kubeconfig files across different projects or environments, but requires careful management to avoid unexpected overrides.


title: MERGING BEHAVIOR
content:
When multiple kubeconfig files are merged, either implicitly via the `KUBECONFIG` environment variable or explicitly, entries (clusters, users, contexts) are merged based on their names. If there are conflicts for the same named entry, the last-read file's entry typically takes precedence. This merging logic is critical for understanding how your effective Kubernetes configuration is composed.


title: DEFAULT KUBECONFIG LOCATION
content:
By default, <b>kubectl</b> looks for your kubeconfig file at `$HOME/.kube/config`. If this file doesn't exist, <b>kubectl</b> may create it upon certain configuration operations. This default location can always be overridden using the `<b>KUBECONFIG</b>` environment variable or the `<b>--kubeconfig</b>` command-line flag.


title: HISTORY
content:
The <b>kubectl config</b> command has been a foundational component of the <b>kubectl</b> command-line tool since the early stages of Kubernetes development. Its necessity grew as users began managing multiple Kubernetes clusters across different environments (e.g., development, staging, production). Initially, users might have manually edited the `~/.kube/config` file. However, as Kubernetes adoption expanded, the need for a programmatic and safer way to manage kubeconfig entries became evident. Over time, subcommands like `use-context`, `set-context`, and `delete-context` were introduced and refined, significantly enhancing usability and reducing the risk of errors compared to direct file manipulation. This evolution reflects the increasing complexity and widespread use of Kubernetes clusters, making robust configuration management a critical feature.


title: SYNOPSIS
content:
<b>kubectl create</b> [<i>TYPE</i>] [<i>NAME</i>] [<i>flags</i>]<br><b>kubectl create</b> -f <i>FILENAME</i> [<i>flags</i>]<br><b>kubectl create</b> -k <i>DIRECTORY</i> [<i>flags</i>]<br><br><i>FILENAME</i> can be a file, directory, or URL specifying the resource definition(s).<br><i>TYPE</i> refers to a Kubernetes resource type (e.g., <code>deployment</code>, <code>service</code>, <code>pod</code>).<br><i>NAME</i> is the specific name for the resource.


title: PARAMETERS
content:
<b>-f, --filename stringArray</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to one or more files, directories, or URLs containing the resource configuration in YAML or JSON format. Use '-' for standard input.<br><br><b>--dry-run string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to 'client', only prints the object that would be sent without actually creating it. If 'server', sends the request but asks the server not to persist changes. Use 'none' to disable.<br><br><b>-o, --output string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the created object in the specified format (e.g., <code>json</code>, <code>yaml</code>) when combined with <code>--dry-run</code>.<br><br><b>-k, --kustomize string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes a Kustomization base directory to generate and create resources.<br><br><b>-R, --recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, processes the directory specified with <code>-f</code> or <code>--filename</code> recursively.<br><br><b>--validate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, performs schema validation of the input before sending the request to the API server.<br><br><b>--save-config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, the configuration of the created object is saved as an annotation, which can be useful for subsequent <b>kubectl apply</b> operations.<br><br>


title: DESCRIPTION
content:
<b>kubectl create</b> is a fundamental command in Kubernetes for generating and creating new resources within your cluster. It primarily operates by taking resource definitions from files, directories, or standard input, allowing users to define their desired state declaratively. For instance, you can create a Deployment, Service, or ConfigMap by pointing <b>kubectl create</b> to its YAML or JSON manifest file. While primarily used for declarative creation via files (<code>-f</code>), it also supports imperative creation for certain resource types like <i>secrets</i> or <i>configmaps</i> directly from the command line. This command is crucial for initial deployments, setting up new applications, or provisioning specific infrastructure components within a Kubernetes environment. Unlike <b>kubectl apply</b>, <b>create</b> will fail if the resource already exists, making it non-idempotent for updates.


title: CAVEATS
content:
<b>kubectl create</b> is not idempotent; if the resource it attempts to create already exists, the command will fail with an error. For continuous deployment workflows or when updating existing resources, <b>kubectl apply</b> is generally preferred as it is idempotent and handles updates gracefully. Care should be taken when creating resources from untrusted sources, as the command directly interacts with your cluster's API.


title: DECLARATIVE VS. IMPERATIVE CREATION
content:
<b>kubectl create</b> supports both declarative and imperative approaches. Using the <code>-f</code> flag with a YAML/JSON manifest is a <i>declarative</i> way to define your desired state, allowing Kubernetes to reconcile it. Creating resources directly from the command line, such as <code>kubectl create secret generic my-secret --from-literal=key=value</code>, is an <i>imperative</i> approach, specifying the action directly. While <b>create -f</b> is common for declarative setups, <b>kubectl apply</b> is often the more robust declarative tool for managing resource lifecycle beyond initial creation.


title: IDEMPOTENCY
content:
A key difference between <b>kubectl create</b> and <b>kubectl apply</b> lies in idempotency. <b>create</b> is not idempotent; it will fail if a resource with the same name and type already exists in the target namespace. In contrast, <b>kubectl apply</b> is idempotent: it will create the resource if it doesn't exist, and update it if it does, making it suitable for continuous integration/continuous deployment (CI/CD) pipelines where operations might be retried.


title: SYNOPSIS
content:
<b>kubectl delete</b> <I>RESOURCE_TYPE</I> <I>NAME</I> [<I>OPTIONS</I>]<br><b>kubectl delete</b> -f <I>FILE_OR_DIR</I> [<I>OPTIONS</I>]<br><b>kubectl delete</b> -k <I>KUSTOMIZATION_DIR</I> [<I>OPTIONS</I>]<br><b>kubectl delete</b> --all [<I>OPTIONS</I>]<br><b>kubectl delete</b> --all-namespaces [<I>OPTIONS</I>]


title: PARAMETERS
content:
<b><I>RESOURCE_TYPE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The type of Kubernetes resource to delete (e.g., <I>pod</I>, <I>deployment</I>, <I>service</I>, <I>namespace</I>).<br><br><b><I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the specific resource to delete.<br><br><b>-f, --filename <I>stringArray</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a file or directory containing the configuration of resources to delete. Supports YAML and JSON.<br><br><b>-k, --kustomize <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a Kustomization directory containing manifests to delete.<br><br><b>--all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete all resources of the specified type in the current or specified namespace.<br><br><b>--all-namespaces</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on resources across all namespaces. Often used with <I>--all</I> or for cluster-scoped resources.<br><br><b>--cascade <I>boolean</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, cascade the deletion of dependent resources. Default is <I>true</I>.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force immediate deletion without a graceful shutdown period. Use with caution.<br><br><b>--grace-period <I>int</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Period in seconds to wait before forcing the deletion of pods. Default is server-defined (<I>-1</I>). Set to <I>0</I> for immediate termination with <I>--force</I>.<br><br><b>--dry-run <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If <I>client</I>, only print the object that would be sent without sending it. If <I>server</I>, apply dry run on the server. If <I>none</I>, do nothing. Useful for testing.<br><br><b>--timeout <I>duration</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The maximum time to wait for a delete operation to complete (e.g., <I>5s</I>, <I>1m</I>). Default is <I>0</I> (no timeout).<br><br><b>-l, --selector <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selector (label query) to filter resources for deletion (e.g., <I>app=my-app</I>).<br><br><b>--field-selector <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selector (field query) to filter resources for deletion (e.g., <I>status.phase=Succeeded</I>).<br><br><b>-n, --namespace <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, specifies the namespace scope for the CLI request. Only applicable to namespaced resources.<br><br><b>--wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, wait for the resources to be deleted before returning. Default is <I>true</I>.<br><br><b>--ignore-not-found</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat 'resource not found' errors as successful deletions instead of failures.<br><br>


title: DESCRIPTION
content:
The `kubectl delete` command is used to remove Kubernetes resources from a cluster. It is a fundamental operation for managing the lifecycle of applications and infrastructure within Kubernetes. Resources can be deleted by specifying their type and name, using label selectors to target multiple resources, or by providing a configuration file (YAML or JSON) that defines the resources to be deleted. This command supports options for controlling deletion behavior, such as forcing deletion, setting grace periods for graceful termination, and dry-running operations to preview changes without committing them. `kubectl delete` is essential for cleaning up environments, removing misconfigured deployments, or deprovisioning services. Caution should be exercised as deletions are generally irreversible.


title: CAVEATS
content:
Deletion via `kubectl delete` is generally irreversible. By default, it performs a cascading deletion, meaning dependent resources (e.g., Pods of a Deployment) are also removed. Use the <I>--force</I> and <I>--grace-period=0</I> flags with extreme caution as they can lead to data loss or corruption for stateful applications by bypassing graceful termination. Deleting a Kubernetes namespace can take a significant amount of time, as all resources within that namespace must be fully terminated first. Be mindful of resource dependencies; deleting a resource that others rely on without proper coordination can cause issues.


title: BEST PRACTICES
content:
Always confirm the resources you intend to delete using <I>kubectl get</I> or <I>kubectl describe</I> before initiating a deletion. For critical operations, utilize <I>--dry-run=client</I> to preview the impact of the command. Exercise extreme caution when using options like <I>--all</I> or <I>--all-namespaces</I>, as they can have wide-ranging, irreversible effects across your cluster. Understand the implications of cascading deletions and how they affect dependent resources.


title: COMMON ERROR HANDLING
content:
A common error is 'NotFound' when the specified resource does not exist; the <I>--ignore-not-found</I> flag can suppress this. Ensure you have the necessary RBAC permissions (Role-Based Access Control) to delete resources; insufficient permissions will result in 'Forbidden' errors.


title: HISTORY
content:
The `kubectl delete` command has been an integral part of the Kubernetes command-line interface since its early development. Its evolution has mirrored the growing maturity of Kubernetes, with additions like improved <I>--dry-run</I> capabilities (client-side vs. server-side), more nuanced control over cascading deletions via <I>--cascade</I>, and explicit termination controls with <I>--force</I> and <I>--grace-period</I>. These enhancements have aimed to provide users with safer, more precise, and more robust ways to manage the lifecycle of resources within a Kubernetes cluster, reflecting the increasing complexity and demands of cloud-native deployments.


title: SEE ALSO
content:
kubectl apply(1), kubectl create(1), kubectl get(1), kubectl edit(1), kubectl describe(1), kubectl patch(1)


title: SYNOPSIS
content:
<b>kubectl describe</b> <i>TYPE</i> [<i>NAME</i> | -l <i>label_selector</i>] [<i>flags</i>]<br><b>kubectl describe</b> -f <i>FILENAME</i> [<i>flags</i>]<br><br>Examples:<br><i>kubectl describe pod my-nginx-pod</i><br><i>kubectl describe deployment my-app-deployment</i><br><i>kubectl describe service my-web-service</i><br><i>kubectl describe node worker-node-01</i><br><i>kubectl describe pods -l app=my-app</i>


title: PARAMETERS
content:
<b><i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Kubernetes resource type to describe (e.g., <i>pod</i>, <i>deployment</i>, <i>service</i>, <i>node</i>).<br><br><b><i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific name of the resource to describe. If omitted, and a label selector is not provided, it will describe all resources of the specified <i>TYPE</i> (if supported).<br><br><b>-l, --selector=&lt;label_query&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A selector (label query) to filter resources by. Only resources matching the specified labels will be described.<br><br><b>-f, --filename=&lt;filename&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;File or URL to describe a resource from. Useful for describing resources defined in a YAML/JSON file without applying them to the cluster.<br><br><b>-n, --namespace=&lt;namespace&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for the request. If omitted, the default namespace from your kubeconfig is used.<br><br><b>-A, --all-namespaces</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, list the requested object(s) across all namespaces. This is particularly useful for describing resource types like Pods or Services cluster-wide.<br><br><b>--show-events</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, show events associated with the described resource(s). This is often the default behavior for many resource types, but can be explicitly enabled/disabled.<br><br>


title: DESCRIPTION
content:
The <b>kubectl describe</b> command retrieves comprehensive, human-readable details about one or more Kubernetes resources. Unlike <i>kubectl get</i>, which provides a summarized, tabular view, <i>describe</i> offers an in-depth breakdown of a resource's current state, configuration, and recent events. It's an indispensable tool for debugging and understanding the health and behavior of components within your Kubernetes cluster.<br><br>For instance, when describing a Pod, it will typically show the Pod's status, IP address, conditions, container details (image, ports, state), volumes, and, most critically, a chronological list of events related to the Pod's lifecycle. This includes scheduling, image pulling, container creation failures, and liveness/readiness probe failures. Similarly, describing a Node provides information about its capacity, allocated resources, conditions, and associated events.<br><br>The output is designed for operator analysis and is not suitable for programmatic parsing.


title: CAVEATS
content:
The output of <b>kubectl describe</b> is intended for human readability and debugging; its format is not stable and should not be parsed programmatically. For structured data, use <i>kubectl get -o json</i> or <i>kubectl get -o yaml</i>. Accessing detailed resource information requires appropriate Kubernetes Role-Based Access Control (RBAC) permissions.


title: DEBUGGING UTILITY
content:
This command is the first go-to for debugging issues with any Kubernetes resource. The detailed events section is particularly invaluable for diagnosing problems like a pod failing to schedule, an image pull error, or a container crashing repeatedly.


title: INFORMATION AGGREGATION
content:
Unlike simply viewing the resource's YAML, <b>kubectl describe</b> aggregates information from various components. For a Pod, it combines data from the API server (Pod spec, status), Kubelet (container status, events), and scheduler (scheduling events) into a single, cohesive view.


title: HISTORY
content:
<b>kubectl describe</b> has been a foundational command within the Kubernetes CLI (kubectl) since its early days. It was designed from the outset to provide deep insights into the state of Kubernetes objects, which is crucial for troubleshooting and understanding cluster behavior. Its functionality has evolved alongside Kubernetes itself, continuously adapting to new resource types and incorporating more detailed status information and event reporting.


title: PARAMETERS
content:
<b><i>TYPE NAME</i> | <i>TYPE/NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific Kubernetes resource to edit. <i>TYPE</i> refers to the resource kind (e.g., <b>pod</b>, <b>deployment</b>, <b>service</b>), and <i>NAME</i> is its unique identifier.<br><br><b><i>-f, --filename FILENAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file, directory, or URL containing the resource definition to be edited. Useful for editing resources that are not yet created or for applying changes from a local file.<br><br><b><i>-o, --output FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the format in which the resource will be presented to the editor. Valid options are <b>yaml</b> (default) or <b>json</b>.<br><br><b><i>--save-config</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to <b>true</b>, the object's configuration will be saved in a <i>kubectl.kubernetes.io/last-applied-configuration</i> annotation on the object itself. This is used by <b>kubectl apply</b> for future updates.<br><br><b><i>--output-patch</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to <b>true</b>, instead of applying the changes to the API server, the generated patch will be printed to standard output. This is useful for debugging or integrating with other tools.<br><br><b><i>-k, --kustomize PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes a Kustomization directory, allowing editing of resources defined within a Kustomization project.<br><br><b><i>--field-manager MANAGER_NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the field manager for the client-side apply request. Defaults to <i>kubectl-edit</i>.<br><br>


title: DESCRIPTION
content:
<i>kubectl edit</i> provides an interactive way to modify any live Kubernetes API resource directly from your terminal. It retrieves the current configuration of a specified resource (e.g., a Deployment, Service, or ConfigMap), opens it in your default text editor (or one defined by <i>KUBE_EDITOR</i> or <i>EDITOR</i> environment variables), and upon saving and exiting the editor, attempts to apply the changes back to the Kubernetes API server.<br><br>This command is invaluable for making quick, on-the-fly adjustments, debugging misconfigurations, or experimenting with resource definitions without the need for manual YAML file manipulation and <i>kubectl apply</i> commands. It streamlines the workflow by handling the fetch-edit-update cycle, ensuring atomicity and providing immediate feedback on validation errors.


title: CAVEATS
content:
<b>Validation Errors:</b> Changes made in the editor are subject to Kubernetes API validation. Invalid YAML/JSON or schema errors will prevent the update, often giving you options to re-edit or discard.<br><br><b>Concurrency:</b> If another process modifies the resource concurrently, a conflict might occur, potentially requiring you to re-edit based on the updated object.<br><br><b>Immutable Fields:</b> Be aware that some fields are immutable after resource creation (e.g., <i>metadata.name</i> or <i>spec.clusterIP</i> for certain services). Attempting to change these will result in an error.<br><br><b>RBAC Permissions:</b> You must have sufficient Role-Based Access Control (RBAC) permissions to <i>get</i>, <i>update</i>, and potentially <i>patch</i> the specified resource.


title: EDITOR SELECTION
content:
The <i>kubectl edit</i> command determines the text editor to use based on a specific precedence:<br>1. The <i>KUBE_EDITOR</i> environment variable.<br>2. The <i>EDITOR</i> environment variable.<br>3. A system-dependent default editor (commonly <i>vi</i> or <i>nano</i>).<br>Users can set these variables (e.g., <b>export KUBE_EDITOR="code --wait"</b>) to integrate with their preferred code editor.


title: INTERACTIVE WORKFLOW
content:
The command operates by first fetching the specified resource's definition and saving it to a temporary file. This file is then opened in your chosen editor. After you make changes, save the file, and exit the editor, <i>kubectl edit</i> reads the modified content and attempts to apply these changes to the Kubernetes API server. If successful, the temporary file is deleted. In case of validation errors, <i>kubectl</i> usually prompts you to re-edit or discard the changes, ensuring a robust interactive experience.


title: HISTORY
content:
<i>kubectl edit</i> is a fundamental command within the <i>kubectl</i> command-line interface, which has been a core component of Kubernetes since its inception by Google and subsequent adoption by the Cloud Native Computing Foundation (CNCF). Introduced to provide an interactive and immediate way to manage live cluster resources, it complements the more declarative <i>kubectl apply -f</i> workflow. Its design facilitates rapid iteration, debugging, and administrative tasks, embodying Kubernetes' dual philosophy of offering both powerful declarative APIs and convenient imperative tools.


title: SYNOPSIS
content:
<b>kubectl expose</b> (<i>TYPE NAME</i> | <b>-f</b> <i>FILENAME</i>) [<b>--port=</b><i>port</i>] [<b>--target-port=</b><i>port</i>] [<b>--protocol=</b><i>protocol</i>] [<b>--type=</b><i>type</i>] [<b>--name=</b><i>name</i>] [<b>--selector=</b><i>key=value</i>] [<b>--external-ip=</b><i>ip</i>] [<i>options</i>]


title: PARAMETERS
content:
<b><b>-f</b>, <b>--filename=</b><i>FILENAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;File or URL containing the resource to expose.<br><br><b><b>--name=</b><i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the service to create. If omitted, defaults to the name of the exposed resource.<br><br><b><b>--port=</b><i>PORT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The port that the Service should serve on. Required.<br><br><b><b>--target-port=</b><i>PORT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The port that the exposed container is listening on. If omitted, defaults to the value of <b>--port</b>.<br><br><b><b>--protocol=</b><i>PROTOCOL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The protocol for the Service port (<i>TCP</i>, <i>UDP</i>, or <i>SCTP</i>). Defaults to <i>TCP</i>.<br><br><b><b>--type=</b><i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The type of Service to create (<i>ClusterIP</i>, <i>NodePort</i>, <i>LoadBalancer</i>, <i>ExternalName</i>). Defaults to <i>ClusterIP</i>.<br><br><b><b>--selector=</b><i>KEY=VALUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A selector (label query) to filter pods for the service. If omitted, the selector is inferred from the exposed resource.<br><br><b><b>--external-ip=</b><i>IP</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The external IP address for the service (for <i>ClusterIP</i> or <i>NodePort</i> types).<br><br><b><b>--cluster-ip=</b><i>IP</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assign a specific ClusterIP to the Service (for <i>ClusterIP</i> type).<br><br><b><b>--dry-run=</b><i>STR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If <i>client</i> or <i>server</i>, only print the object that would be sent, without sending it. If <i>none</i>, the command will be executed. Defaults to <i>none</i>.<br><br><b><b>--labels=</b><i>KEY=VALUE,...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Labels to apply to the service.<br><br>


title: DESCRIPTION
content:
<i>kubectl expose</i> is a fundamental command used to create a new Kubernetes Service object, making a specified resource (like a <b>Deployment</b>, <b>Pod</b>, <b>ReplicaSet</b>, or <b>ReplicationController</b>) accessible on the network. It automatically selects the pods backing the exposed resource and exposes them via a Service, which provides a stable IP address and DNS name.<br><br>Users can specify the Service type (e.g., <i>ClusterIP</i> for internal cluster access, <i>NodePort</i> for exposing on cluster nodes, <i>LoadBalancer</i> for external load balancing, or <i>ExternalName</i> for abstracting external services). This command simplifies the process of creating a Service without directly writing complex YAML manifests, streamlining connectivity for applications within or outside the cluster.


title: CAVEATS
content:
While convenient, <i>kubectl expose</i> is a simplification. For complex Service configurations (e.g., multiple ports, advanced selectors, specific IP ranges), writing a Service YAML manifest directly and using <i>kubectl apply -f</i> is often preferred.<br><br>Exposing a <b>Pod</b> directly creates a Service tied to that specific Pod's lifecycle. If the Pod is recreated (e.g., by a controller like a Deployment), the Service might need to be re-exposed or manually updated to target the new Pods. It's generally safer and more common to expose higher-level controllers like <b>Deployments</b> or <b>ReplicaSets</b>, as the Service will then dynamically target their managed Pods.


title: COMMON USAGE EXAMPLES
content:
<ul><li><b>Expose a Deployment as a ClusterIP Service on port 80:</b><br><code>kubectl expose deployment my-app --port=80</code><br>This creates a Service named 'my-app' that targets pods of the 'my-app' deployment on port 80, accessible only within the cluster.</li><li><b>Expose a Deployment as a NodePort Service:</b><br><code>kubectl expose deployment my-app --port=80 --type=NodePort</code><br>This makes the Service accessible on a specific port on all cluster nodes, in addition to its ClusterIP.</li><li><b>Expose a Pod with a specific target port and a custom Service name:</b><br><code>kubectl expose pod my-pod --port=80 --target-port=8080 --name=my-pod-service</code><br>This creates a Service named 'my-pod-service' that listens on port 80 and forwards traffic to port 8080 on the 'my-pod' container.</li></ul>


title: SEE ALSO
content:
kubectl create service(1), kubectl get service(1), kubectl describe service(1), kubectl apply(1), kubectl delete service(1)


title: SYNOPSIS
content:
<br><code><b>kubectl get</b> <I>(TYPE | TYPE/NAME | TYPE NAME) [flags]</I></code><br><br>Examples:<br><code><b>kubectl get</b> <I>pods</I></code><br><code><b>kubectl get</b> <I>deployments my-app -o yaml</I></code><br><code><b>kubectl get</b> <I>all -A</I></code>


title: PARAMETERS
content:
<b>TYPE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The resource type to retrieve (e.g., <i>pod</i>, <i>service</i>, <i>deployment</i>, <i>node</i>, <i>namespace</i>, <i>ingress</i>).<br><br><b>NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific name of the resource to retrieve (optional).<br><br><b>-o, --output=FORMAT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. Common options include <i>json</i>, <i>yaml</i>, <i>wide</i>, <i>name</i>, <i>custom-columns</i>.<br><br><b>-n, --namespace=NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for this request.<br><br><b>-A, --all-namespaces</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, list the requested object(s) across all namespaces.<br><br><b>-l, --selector=KEY=VALUE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selector (label query) to filter on, supports <i>=</i>, <i>==</i>, <i>!=</i>, <i>in</i>, <i>notin</i>.<br><br><b>-w, --watch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;After listing, start watching for changes, providing a continuous update stream.<br><br><b>--show-labels</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When printing, show all labels as the last column (default false).<br><br><b>--sort-by=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort list output using this JSONPath expression.<br><br>


title: DESCRIPTION
content:
The <b>kubectl get</b> command is a fundamental and frequently used tool within the Kubernetes command-line interface (CLI). Its primary function is to retrieve and display information about various resources in a Kubernetes cluster. Users can specify the type of resource (e.g., pods, services, deployments, namespaces, nodes) they wish to view, and optionally filter by name, labels, or namespace. This command is crucial for observing the current state of the cluster, troubleshooting issues, and verifying deployments. It supports multiple output formats, including plain text, YAML, JSON, and wide (more details), making it highly versatile for both human readability and machine processing. Whether you need a quick overview of running pods or detailed configuration of a service, <b>kubectl get</b> is the go-to command for cluster introspection.


title: CAVEATS
content:
<br>When using <b>kubectl get</b> on a large cluster, especially with <code>--all-namespaces</code> or retrieving detailed formats like <i>yaml</i> or <i>json</i> for many resources, the output can be extensive and may impact performance or be difficult to parse visually. Always specify the resource type and narrow down with names or selectors when possible to get more focused results.


title: FILTERING BY LABELS
content:
You can use the <i>-l</i> or <i>--selector</i> flag to filter resources based on their labels. For example, <code><b>kubectl get</b> <I>pods -l app=nginx</I></code> will show only pods with the label <i>app=nginx</i>, which is incredibly useful for managing complex deployments.


title: CUSTOM COLUMNS
content:
The <i>--output=custom-columns</i> and <i>--output=custom-columns-file</i> flags allow users to define their own output columns using JSONPath expressions, providing highly customizable views of resources. This enables users to extract specific data points vital for their workflows.


title: HISTORY
content:
<br>The <b>kubectl get</b> command has been a core component of Kubernetes from its early days, essential for observing and managing cluster state. As Kubernetes matured, <b>get</b> evolved with new resource types and improved output options. Its consistent syntax and expanding capabilities reflect the project's commitment to providing robust and observable cluster management, making it an indispensable tool for every Kubernetes user.


title: SYNOPSIS
content:
<p><b><code>kubectl label [--overwrite] (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version] [flags]</code></b></p><br><p>To remove a label: <b><code>kubectl label TYPE NAME KEY- [...]</code></b></p><br><p>Example: <b><code>kubectl label pod my-pod app=nginx version=1.2 --overwrite</code></b></p><br><p>Example: <b><code>kubectl label deployment my-app env- --all</code></b></p>


title: PARAMETERS
content:
<b>TYPE NAME | TYPE/NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The type and name of the Kubernetes resource(s) to label. Examples: <code>pod my-pod</code>, <code>deployment/my-deployment</code>, <code>service/my-service</code>. Multiple resources can be specified (e.g., <code>pod pod1 pod2</code>).<br><br><b>KEY=VALUE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The label key-value pair to add or update. Keys and values must conform to Kubernetes label syntax rules. Multiple key-value pairs can be specified.<br><br><b>KEY-</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends a hyphen <code>-</code> to a label key to indicate that this label should be removed from the resource. Multiple label keys can be specified for removal.<br><br><b>--all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, select all resources of the specified type in the current namespace. This cannot be used with <code>--selector</code>.<br><br><b>-f, --filename strings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filename, directory, or URL to files containing the resource configuration. You can specify multiple filenames or directories.<br><br><b>--field-selector string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A selector to restrict the list of returned objects by field expressions. For example: <code>--field-selector status.phase=Running</code>.<br><br><b>--local</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, set labels in the client instead of sending the request to the Kubernetes API server. This is useful for dry-run or combining with output options.<br><br><b>--overwrite</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, allow labels to be overwritten. By default, attempting to change an existing label's value without <code>--overwrite</code> will result in an error.<br><br><b>--resource-version string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If specified, the object will be labeled only if its resource version matches this value. This is used for optimistic concurrency control to prevent conflicting updates.<br><br><b>-l, --selector string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selector (label query) to filter on. You can specify multiple selectors separated by commas. E.g., <code>'app=nginx,env=prod'</code>. This selects resources matching the specified labels.<br><br>


title: DESCRIPTION
content:
<p>The <i>kubectl label</i> command is used to add, update, or remove labels on Kubernetes objects such as Pods, Deployments, Services, and more. Labels are key/value pairs that are attached to Kubernetes objects, designed to specify identifying attributes that are meaningful and relevant to users. They can be used to organize and to select subsets of objects. For example, you might label all Pods of a particular application tier (e.g., <code>tier=frontend</code>) or all Pods running on a specific node (e.g., <code>node=node1</code>).</p><br><p>This command allows you to:</p><ul><li>Add new labels to an object.</li><li>Change the value of an existing label (requires the <code>--overwrite</code> flag).</li><li>Remove a label from an object (by appending a hyphen <code>-</code> to the label key).</li></ul><p>Labels are fundamental for orchestrating resources within Kubernetes, enabling powerful selection capabilities for controllers, services, and policies.</p>


title: CAVEATS
content:
<ul><li><b>Label Syntax Rules:</b> Labels must adhere to specific Kubernetes syntax rules. A label key has two parts: an optional prefix and name, separated by a slash (<code>/</code>). Both parts must be 63 characters or less and start/end with an alphanumeric character (<code>[a-z0-9A-Z]</code>), with dashes (<code>-</code>), underscores (<code>_</code>), dots (<code>.</code>) and alphanumerics allowed in between. The prefix, if specified, must be a DNS subdomain. The value must be 63 characters or less and similar restrictions apply.</li><li><b>Case Sensitivity:</b> Label keys and values are case-sensitive.</li><li><b><code>--overwrite</code> is Crucial:</b> When modifying an existing label, the <code>--overwrite</code> flag is mandatory; otherwise, the command will fail to prevent accidental changes.</li><li><b>Non-Existent Labels:</b> Attempting to remove a label that does not exist on an object using <code>KEY-</code> will not result in an error; the command will simply complete without effect for that label.</li><li><b>Impact on Controllers:</b> Changing labels on resources can have significant impacts, as many Kubernetes controllers (like Deployments, Services, Network Policies) use labels to identify and manage related objects.</li></ul>


title: LABELS VS. ANNOTATIONS
content:
While both are key-value pairs, <b>labels</b> are used for identifying attributes and are intended to be queried by controllers and users (e.g., for selection, scheduling, network policies). <b>Annotations</b> are used for non-identifying metadata that may be useful for tools or libraries but are not directly used by Kubernetes for selection. Annotations can also be larger and contain more structured data.


title: COMMON USE CASES
content:
Labels are extensively used for:<br><ul><li><b>Scheduling:</b> Selecting nodes for Pods based on node labels (e.g., <code>disktype=ssd</code>).</li><li><b>Service Discovery:</b> Services select their backing Pods using label selectors.</li><li><b>Networking:</b> Network policies select Pods using label selectors for ingress/egress rules.</li><li><b>Resource Grouping:</b> Grouping related resources (e.g., all components of an application, different environments like <code>dev</code>, <code>staging</code>, <code>prod</code>).</li><li><b>Monitoring:</b> Integrating with monitoring systems that use labels to identify metrics.</li></ul>


title: HISTORY
content:
The <i>kubectl label</i> command has been a fundamental part of the <i>kubectl</i> command-line tool since the early versions of Kubernetes. Its core functionality for managing resource labels has remained largely consistent, reflecting the enduring importance of labels as a primary mechanism for organizing and selecting objects within the Kubernetes ecosystem. It evolved as Kubernetes matured, providing a straightforward way to interact with the API's labeling capabilities directly from the command line, complementing declarative approaches using YAML manifests.


title: SEE ALSO
content:
<b><code>kubectl get(1)</code></b>: To view current labels on resources., <b><code>kubectl describe(1)</code></b>: To get detailed information about a resource, including its labels., <b><code>kubectl annotate(1)</code></b>: To manage annotations, which are similar to labels but store non-identifying metadata., <b><code>kubectl apply(1)</code></b>: To create or update resources from files, which can include labels defined in YAML/JSON manifests.


title: SYNOPSIS
content:
<b>kubectl logs</b> <i>(POD | TYPE/NAME)</i> <i>[-c CONTAINER]</i> <i>[-f]</i> <i>[--follow]</i> <i>[--since DURATION]</i> <i>[--tail LINES]</i> <i>[--timestamps]</i> <i>[--all-containers]</i> <i>[-n NAMESPACE]</i> <i>[--selector SELECTOR]</i>


title: PARAMETERS
content:
<b><i>POD</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the pod from which to retrieve logs. This is typically the most common way to specify the target.<br><br><b><i>TYPE/NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Alternatively, specify a resource type and name (e.g., 'deployment/my-app') to retrieve logs for pods managed by that resource.<br><br><b><b>-c</b>, <b>--container</b> <i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the container within the pod from which to retrieve logs. Required if the pod has multiple containers and <b>--all-containers</b> is not used.<br><br><b><b>-f</b>, <b>--follow</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stream the logs as they are written, similar to the behavior of <i>tail -f</i>. The command will continue to output new log lines until interrupted.<br><br><b><b>--since</b> <i>DURATION</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only return logs newer than a relative duration, e.g., '5s' (5 seconds), '2m' (2 minutes), or '3h' (3 hours). Logs older than this duration will be excluded.<br><br><b><b>--since-time</b> <i>TIMESTAMP</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only return logs after a specific date and time, specified in RFC3339 format, e.g., '2023-01-01T10:00:00Z'.<br><br><b><b>--tail</b> <i>LINES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output only the specified number of most recent log lines from the end of the logs. Useful for quickly seeing the latest activity.<br><br><b><b>--timestamps</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include RFC3339 timestamps on each line of the log output, providing precise timing information.<br><br><b><b>--all-containers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display logs from all containers within the specified pod. Each log line will be prefixed with the container name to identify its source.<br><br><b><b>--previous</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the logs for the previous instance of the container in a pod, useful if a container has crashed and restarted.<br><br><b><b>-n</b>, <b>--namespace</b> <i>NAMESPACE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, specifies the namespace scope for the CLI request. Defaults to the current context's namespace.<br><br><b><b>-l</b>, <b>--selector</b> <i>SELECTOR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A label query to filter on when using <i>TYPE/NAME</i>. Supports '=', '==', and '!=' operators to select pods based on labels.<br><br><b><b>--ignore-errors</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When watching or following pod logs, this flag allows any errors that occur during log retrieval to be ignored, and the command will continue trying to fetch logs.<br><br><b><b>--limit-bytes</b> <i>BYTES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximum bytes of logs to return. This is useful for large log files to limit the size of the output.<br><br>


title: DESCRIPTION
content:
The <b>kubectl logs</b> command is a fundamental and essential tool for debugging and monitoring applications running within Kubernetes. It allows users to fetch and display logs generated by containers inside a specific pod. This command connects directly to the <i>kubelet</i> agent on the node where the pod is running to retrieve the log output, providing real-time insights into application behavior, errors, and status messages. It supports various modes, including streaming logs (similar to <i>tail -f</i>), fetching historical logs, and filtering output based on time duration or number of lines. Indispensable for troubleshooting and understanding containerized workloads, <b>kubectl logs</b> helps developers and operators diagnose issues and observe application flow without needing direct access to the underlying cluster nodes.


title: CAVEATS
content:
Logs retrieved by <b>kubectl logs</b> are ephemeral and are typically stored on the node where the pod runs. They might be subject to:<br><i>Rotation policies:</i> Container runtimes often rotate log files, meaning older logs might be truncated or deleted automatically.<br><i>Pod lifecycle:</i> If a pod is deleted, its logs are generally lost from the node unless an external logging solution is in place.<br><i>Resource limitations:</i> Very large log files or extremely high log volume might affect performance or storage on the node.<br><i>Permissions:</i> Users must have appropriate Kubernetes RBAC permissions ('get' and 'watch' on pods and their logs) to retrieve logs successfully.


title: LOG SOURCE AND STORAGE
content:
Container logs are primarily captured from the container's <i>stdout</i> (standard output) and <i>stderr</i> (standard error) streams. The container runtime (e.g., Containerd, Docker) on the Kubernetes node captures these streams and usually writes them to log files on the node's filesystem. The <i>kubelet</i> agent on the node then provides an API endpoint for <b>kubectl logs</b> to retrieve these stored logs.


title: EXTERNAL LOGGING SOLUTIONS
content:
For robust and persistent log management, especially in production environments, it is highly recommended to implement an external logging solution (e.g., Fluentd, Filebeat, Logstash, Loki, Splunk, ELK Stack). These solutions collect, aggregate, and centralize logs from all pods across the cluster, providing persistent storage, advanced querying capabilities, alerting, and dashboards, moving beyond the ephemeral nature of <b>kubectl logs</b> on individual nodes.


title: HISTORY
content:
The <b>kubectl logs</b> command has been a core and indispensable part of the <b>kubectl</b> CLI from the early days of Kubernetes, which was open-sourced by Google in 2014. Its functionality has remained largely consistent due to its fundamental role in debugging and monitoring containerized applications. Over time, new options like <b>--all-containers</b>, <b>--previous</b>, and enhanced time-based filtering were added to address the evolving needs of complex Kubernetes deployments and multi-container patterns, making it even more versatile.


title: PARAMETERS
content:
<b><b>-f</b>, <b>--filename</b>=<i>FILENAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the file(s) or directory(ies) containing the resource configuration to replace. Can be a single file, a directory, or a URL. Accepts multiple paths separated by commas.<br><br><b><b>-k</b>, <b>--kustomize</b>=<i>DIRECTORY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a Kustomize directory. <b>kubectl replace</b> will use the Kustomize output as the new resource configuration.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, delete and then re-create the resource. Default is false (attempts an in-place update).<br><br><b><b>--cascade</b>=<i>boolean</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true and <b>--force</b> is used, delete all dependents of the resource. Default is true. Set to <b>false</b> to orphan dependents.<br><br><b><b>--grace-period</b>=<i>seconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Grace period in seconds for deletion when <b>--force</b> is used. Default is -1 (server-defined).<br><br><b><b>--timeout</b>=<i>duration</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The length of time to wait before giving up on a delete operation when <b>--force</b> is used (e.g., '5s', '1m'). Default is 0 (no timeout).<br><br><b><b>--dry-run</b>=<i>mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set, only print the object that would be sent without sending it. Valid modes are <i>client</i>, <i>server</i>, and <i>none</i>.<br><br><b><b>-o</b>, <b>--output</b>=<i>format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format after the command completes (e.g., <i>json</i>, <i>yaml</i>, <i>name</i>, <i>wide</i>).<br><br><b><b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Process files in subdirectories found in the path specified by <b>--filename</b> or <b>--kustomize</b>. Default is false.<br><br>


title: DESCRIPTION
content:
The <b>kubectl replace</b> command updates an existing Kubernetes resource with a new configuration provided from a local file or standard input. It is a direct, imperative operation. <br><br>By default, <b>replace</b> attempts an in-place update of the resource. If an in-place update isn't possible (e.g., due to immutable fields) or the <b>--force</b> flag is used, it will first delete the existing resource and then create a new one with the provided configuration. This delete-and-recreate behavior can cause temporary service disruption, especially for workloads.<br><br>A key characteristic of <b>replace</b> is that any fields present in the live resource but <i>omitted</i> from the new configuration file will typically be removed from the resource (unless they are immutable or server-managed). This differs significantly from <b>kubectl apply</b>, which performs a three-way merge to reconcile differences and is more suited for declarative management.<br><br>It is crucial that the resource already exists in the cluster for <b>replace</b> to succeed; it cannot be used to create new resources.


title: CAVEATS
content:
<i><b>Resource Must Exist:</b></i> <b>kubectl replace</b> will fail if the specified resource does not already exist in the cluster.<br><br><i><b>Potential for Disruption:</b></i> When using <b>--force</b>, resources are deleted and re-created, which can cause temporary downtime for services or applications.<br><br><i><b>Field Removal:</b></i> Any fields present in the existing resource but omitted from the new configuration file will be removed (unless they are immutable or server-managed), unlike <b>kubectl apply</b> which performs a merge.<br><br><i><b>Immutable Fields:</b></i> Changing immutable fields (e.g., <i>clusterIP</i> for Services) requires a full deletion and re-creation of the resource, which <b>--force</b> facilitates but is still a disruptive operation.


title: COMMON USAGE PATTERNS
content:
<b>Piping current configuration:</b><br><I>kubectl get &lt;resource-type&gt;/&lt;resource-name&gt; -o yaml | kubectl replace -f -</I><br>This pattern fetches the current live configuration of a resource, allows for modifications (e.g., in a text editor or via <b>sed</b>), and then pipes the modified configuration directly to <b>kubectl replace</b> to update the resource.<br><br><b>Generating configuration with dry-run:</b><br><I>kubectl create &lt;resource-type&gt; &lt;resource-name&gt; --image=&lt;image&gt; --dry-run=client -o yaml | kubectl replace -f -</I><br>This creates a new manifest in YAML format without actually creating the resource, which can then be piped to <b>kubectl replace</b> to update an existing one or applied after further modifications. While <b>create</b> might seem counter-intuitive, <b>--dry-run</b> is powerful for generating initial manifests for various resource types.


title: COMPARISON WITH KUBECTL APPLY
content:
<b>kubectl replace</b> is an imperative command that aims to make the live resource exactly match the provided configuration file. Its default behavior is an in-place update, but it can resort to a delete-and-recreate. Critically, it removes any fields from the live resource that are not present in the provided file.<br><br><b>kubectl apply</b>, in contrast, is a declarative command that uses a three-way merge strategy. It intelligently merges the new configuration with the existing live resource, preserving fields that are not specified in the input file. This makes <b>apply</b> generally safer and more idempotent for continuous deployment and managing configurations, as it avoids unintended deletions of fields or resources. <b>apply</b> is the recommended tool for managing Kubernetes resources declaratively.


title: SYNOPSIS
content:
<b>kubectl rollout</b> <I>SUBCOMMAND</I> (TYPE/NAME | TYPE NAME) [options]<br><br><b>Common Subcommands:</b><br>&nbsp;&nbsp;<b>status</b> &nbsp;&nbsp;&nbsp;&nbsp;Show the status of the rollout.<br>&nbsp;&nbsp;<b>history</b> &nbsp;&nbsp;&nbsp;Show the history of the rollout.<br>&nbsp;&nbsp;<b>undo</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Roll back to a previous revision.<br>&nbsp;&nbsp;<b>pause</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark the provided resource as paused.<br>&nbsp;&nbsp;<b>resume</b> &nbsp;&nbsp;&nbsp;&nbsp;Resume a paused resource.<br>&nbsp;&nbsp;<b>restart</b> &nbsp;&nbsp;&nbsp;Restart a resource.


title: PARAMETERS
content:
<b><I>TYPE/NAME | TYPE NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Kubernetes resource type (e.g., <I>deployment</I>, <I>daemonset</I>, <I>statefulset</I>) and its name. For example, <I>deployment/my-app</I> or <I>deployment my-app</I>.<br><br><b><I>SUBCOMMAND</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific operation to perform: <I>status</I>, <I>history</I>, <I>undo</I>, <I>pause</I>, <I>resume</I>, or <I>restart</I>.<br><br><b><b>--namespace</b>, <b>-n</b> <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for this request. Defaults to the namespace configured in the current context.<br><br><b><b>--kubeconfig</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the kubeconfig file to use for CLI requests.<br><br><b><b>--context</b> <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the kubeconfig context to use.<br><br><b><b>--watch</b>, <b>-w</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(<I>status</I> subcommand only) Watch for the rollout status to complete. The command will exit with success when the rollout completes.<br><br><b><b>--timeout</b> <I>duration</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(<I>status</I> subcommand only) The length of time to wait before giving up on a rollout. Defaults to <I>5m0s</I> (5 minutes).<br><br><b><b>--to-revision</b> <I>revision</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(<I>undo</I> subcommand only) The revision to roll back to. If not specified, rolls back to the previous revision.<br><br><b><b>--revision</b> <I>revision</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(<I>history</I> subcommand only) See the details for a specific revision number.<br><br>


title: DESCRIPTION
content:
The <I>kubectl rollout</I> command provides essential tools for managing and monitoring the lifecycle of application deployments within Kubernetes. It enables administrators and developers to inspect the status of ongoing rollouts, view the history of past revisions, pause and resume deployments, and perform rollbacks to previous stable versions. This command is crucial for maintaining application availability and ensuring controlled, progressive updates of resources like Deployments, DaemonSets, and StatefulSets. It consolidates various operations related to the rollout process, making it simpler to manage application updates, debug issues during deployment, and react quickly to potential problems by reverting to a known good state. This command is a cornerstone for operational excellence in a Kubernetes environment.


title: CAVEATS
content:
<b>kubectl rollout</b> commands are primarily designed for resources that support versioned updates and rollbacks, namely Deployments, DaemonSets, and StatefulSets. Not all Kubernetes resource types have the concept of a "rollout." The <I>restart</I> subcommand works by patching an annotation on the Pod template, which triggers a new rollout; it does not directly "restart" pods in the traditional sense. Proper understanding of Kubernetes deployment strategies (e.g., RollingUpdate) is beneficial for effective use of these commands.


title: UNDERSTANDING ROLLOUTS
content:
In Kubernetes, a rollout refers to the process of updating an application's running instances (pods) in a controlled manner. This typically involves creating new pods with the updated configuration and gracefully terminating old ones, ensuring minimal downtime. <I>kubectl rollout</I> commands help monitor and manage these transitions.


title: ROLLBACK MECHANISM
content:
The <I>undo</I> subcommand does not simply revert to a previous state. Instead, it creates a new revision based on the specified historical revision. This new revision becomes the latest one, and the deployment controller rolls out the changes, effectively bringing the application back to a previously stable state. This mechanism ensures that the rollback itself is treated as a new deployment.


title: PAUSING AND RESUMING DEPLOYMENTS
content:
Pausing a deployment (using <I>pause</I>) can be useful during complex updates or troubleshooting. When paused, no new rollouts can be triggered for the deployment. Once an issue is resolved or a multi-step update is ready to continue, the deployment can be resumed (using <I>resume</I>), allowing pending updates to proceed or new rollouts to be initiated.


title: HISTORY
content:
The <I>kubectl rollout</I> command has been an integral part of <I>kubectl</I> since early versions of Kubernetes, providing a robust interface for managing application updates. Its capabilities have evolved with Kubernetes itself, reflecting best practices for declarative infrastructure management. It standardizes common operational tasks related to continuous delivery within a Kubernetes environment, abstracting away much of the underlying complexity of deployment strategies.


title: SYNOPSIS
content:
<code>kubectl run <b>NAME</b> --image=<b>IMAGE</b> [--env=<b>KEY=VALUE</b>] [--port=<b>PORT</b>] [--command -- <b>COMMAND</b> [ARGS...]]</code>


title: PARAMETERS
content:
<b>--image=<b>IMAGE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The container image to use for the Pod. This is a mandatory argument.<br><br><b><b>NAME</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name to assign to the new Pod being created.<br><br><b>--restart=<b>POLICY</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the Pod's restart policy (e.g., <code>Always</code>, <code>Never</code>, <code>OnFailure</code>). Default is <code>Always</code>.<br><br><b>--env=<b>KEY=VALUE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set environment variables in the container. Can be specified multiple times for different variables.<br><br><b>--port=<b>PORT</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Port number to expose on the Pod's container.<br><br><b>--labels=<b>KEY=VALUE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Labels to apply to the Pod, in a key=value format.<br><br><b>--rm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete the Pod after it terminates. This flag is effective only when <code>--restart=Never</code>.<br><br><b>--attach</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to the container's stdin/stdout/stderr, similar to <code>docker attach</code>.<br><br><b>--command</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the arguments following <code>--</code> will be treated as the container's command, prepended to its entrypoint.<br><br><b>--dry-run=<b>MODE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the object to stdout without sending it to the API server (e.g., <code>client</code>, <code>server</code>).<br><br><b>--stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keep stdin open for the container.<br><br><b>--tty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allocate a TTY for the container.<br><br><b>--namespace=<b>NAMESPACE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for this request.<br><br>


title: DESCRIPTION
content:
<code>kubectl run</code> is a command used to create and run a new <i><b>Pod</b></i> in Kubernetes. Primarily designed for quick tests, debugging, or ephemeral tasks, it takes a container <i><b>image</b></i> as its main argument.<br><br>Historically, <code>kubectl run</code> was more versatile, capable of creating Deployments, Jobs, or ReplicaSets using <i><b>--generator</b></i> flags. However, to simplify its role and avoid overlap with <code>kubectl create</code> and <code>kubectl apply</code>, its functionality was streamlined in Kubernetes versions 1.18+ to default to <i><b>Pod creation only</b></i>. This shift firmly establishes its purpose as a convenient tool for running temporary containers directly in the cluster without needing higher-level controllers.


title: CAVEATS
content:
<b><i>Functionality Evolution</i></b>: Prior to Kubernetes 1.18, <code>kubectl run</code> created various resource types (Deployments, Jobs, etc.) using <code>--generator</code>. This functionality is now deprecated, and <code>kubectl run</code> strictly creates <i><b>Pods</b></i> by default. Relying on deprecated generators is discouraged as they will be removed.<br><br><b><i>Ephemeral Pods</i></b>: Pods created directly by <code>kubectl run</code> (without a higher-level controller like Deployment) are not automatically restarted or managed if they fail, are evicted, or the node goes down. For resilient applications, use <code>kubectl create deployment</code> or <code>kubectl apply</code>.<br><br><b><i>Security Considerations</i></b>: Running arbitrary images, especially with <code><b>--attach</b></code> or <code><b>--stdin</b></code>, requires caution. Untrusted images can pose security risks to your cluster or local environment.


title: INTERACTIVE SESSIONS
content:
A common usage pattern for <code>kubectl run</code> is to obtain an interactive shell inside a container, similar to <code>docker run -it</code>. This is typically achieved using <code><b>kubectl run --rm -it --command -- <I>image-name</I> -- /bin/bash</b></code>. The <code><b>--rm</b></code> flag ensures the Pod is automatically deleted upon session exit.


title: QUICK DEBUGGING
content:
It's an excellent tool for quickly spinning up a container to test network connectivity within the cluster, verify DNS resolution, or run a single diagnostic command, without the overhead of creating a Deployment. Its simplicity makes it ideal for one-off tasks.


title: HISTORY
content:
<code>kubectl run</code> initially emerged as a highly versatile command, allowing users to rapidly create various Kubernetes resource types, such as <i><b>Deployments</b></i>, <i><b>Jobs</b></i>, and <i><b>ReplicaSets</b></i>, by specifying different <i><b>--generator</b></i> flags. This made it a popular choice for quick prototyping and setup.<br><br>However, its broad functionality led to ambiguity and overlap with more explicit commands like <code>kubectl create</code> and <code>kubectl apply</code>. To simplify the command-line interface and reduce confusion, a significant change was introduced.<br><br>Starting with <i><b>Kubernetes 1.18</b></i>, the <i><b>--generator</b></i> flag became officially deprecated, and the default behavior of <code>kubectl run</code> was changed to <i><b>exclusively create a Pod</b></i>. This change streamlined its purpose, making it a dedicated tool for running temporary, single-container instances, often for debugging or interactive sessions.<br><br>The deprecated <i><b>--generator</b></i> flag is expected to be removed in future Kubernetes releases, solidifying <code>kubectl run</code>'s current role as a Pod-centric command.


title: SYNOPSIS
content:
<b>kubectl taint</b> (<b>node</b>|<b>nodes</b>) <I>NAME</I> <I>KEY_1</I>=<I>VALUE_1</I>:<I>EFFECT_1</I> [<I>KEY_2</I>=<I>VALUE_2</I>:<I>EFFECT_2</I>...] [<I>KEY_N</I>:<I>EFFECT_N</I>-|<I>KEY_N</I>-] [<b>--overwrite</b>] [<b>--all</b>] [<b>--dry-run</b>=<I>strategy</I>] [<b>--help</b>]


title: PARAMETERS
content:
<b><I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the node(s) to apply or remove taints from. Can be a single node name or multiple names separated by spaces.<br><br><b><I>KEY</I>=<I>VALUE</I>:<I>EFFECT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a taint to add or update. The format is <I>key</I>=<I>value</I>:<I>effect</I>. Multiple taints can be specified in a single command.<br><br><b><I>KEY</I>:<I>EFFECT</I>-</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a taint to remove. The format is <I>key</I>:<I>effect</I>-. This removes a taint with a specific key and effect. If the value differs, it will still match.<br><br><b><I>KEY</I>-</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a taint to remove by its key, regardless of its value or effect. This removes all taints that share the specified key.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, taints all nodes in the cluster. This option cannot be used when specific node <I>NAME</I>s are provided.<br><br><b><b>--overwrite</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, allows existing taints to be overwritten or updated. If a taint with the same key already exists but has a different value or effect, it will be modified. If false, the command will skip applying a new taint if one with the same key already exists.<br><br><b><b>--dry-run</b>=<I>strategy</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, only print the object that would be sent to the API server, without actually sending it. Possible values for <I>strategy</I> are 'client', 'server', or 'none'. Defaults to 'client'.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides help information for the <b>taint</b> command.<br><br>


title: DESCRIPTION
content:
The <b>kubectl taint</b> command allows administrators to add, update, or remove taints on one or more Kubernetes nodes. <br><br>Taints are key-value pairs associated with an <I>effect</I> (e.g., <b>NoSchedule</b>, <b>PreferNoSchedule</b>, <b>NoExecute</b>) that are applied to nodes. They are used to repel a set of pods from nodes that do not tolerate them. This mechanism, combined with <I>tolerations</I> defined in pod specifications, enables flexible scheduling policies.<br><br>When a node has a taint, Kubernetes will not schedule any pod on that node unless the pod has a matching toleration. This command provides a straightforward way to manage these crucial scheduling directives, ensuring pods are placed on appropriate nodes based on cluster policies and node conditions.


title: CAVEATS
content:
Incorrect use of taints can lead to pods failing to schedule, an unbalanced cluster, or unexpected pod evictions. It is crucial to understand the implications of each taint <I>effect</I> (<b>NoSchedule</b>, <b>PreferNoSchedule</b>, <b>NoExecute</b>) before applying them. Removing taints does not automatically re-schedule existing pods that were previously evicted by a <b>NoExecute</b> taint; instead, new pods will be scheduled based on the updated node conditions.


title: TAINT EFFECTS
content:
There are three primary effects that can be applied to a taint:<br><b>NoSchedule</b>: New pods without a matching toleration will not be scheduled on the node. Existing pods already running on the node are not affected.<br><b>PreferNoSchedule</b>: Kubernetes attempts to avoid placing pods without a matching toleration on the node, but it is not a strict enforcement rule. This is a 'soft' version of NoSchedule.<br><b>NoExecute</b>: New pods without a matching toleration will not be scheduled on the node. Additionally, any existing pods already running on the node that do not tolerate this taint will be evicted. Pods with a matching toleration may remain on the node, or be evicted based on their `tolerationSeconds` field if specified.


title: REMOVING TAINTS
content:
Taints can be removed by appending a hyphen (<I>-</I>) to the taint specification. For example, to remove a specific taint with a key, value, and effect (e.g., <b>key=value:effect</b>), use <b>key=value:effect-</b>. To remove all taints with a specific key regardless of their value or effect, use the shorthand <b>key-</b>.


title: HISTORY
content:
The concept of Taints and Tolerations was introduced in Kubernetes version 1.6 as a beta feature, becoming stable in later releases. The <b>kubectl taint</b> command was subsequently added as a convenient and direct way to manage these node properties, simplifying the process of applying and removing scheduling constraints without requiring direct manipulation of node manifests.


title: SYNOPSIS
content:
<b>kubectx</b> [<i>NAME</i> | <b>-</b> | <i>&lt;pattern&gt;</i>]<br><b>kubectx</b> <b>-d</b> <i>&lt;NAME&gt;</i><br><b>kubectx</b> <b>-c</b> <i>&lt;NAME&gt;</i><br><b>kubectx</b> <b>-u</b><br><b>kubectx</b> <b>-V</b><br><b>kubectx</b> <b>-h</b><br><br><b>kubens</b> [<i>NAME</i> | <b>-</b> | <i>&lt;pattern&gt;</i>]<br><b>kubens</b> <b>-c</b> <i>&lt;NAME&gt;</i><br><b>kubens</b> <b>-V</b><br><b>kubens</b> <b>-h</b>


title: PARAMETERS
content:
<b><i>NAME</i> | <i>&lt;pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Kubernetes context or namespace to switch to. Both <i>kubectx</i> and <i>kubens</i> support fuzzy matching, allowing you to provide a partial name or pattern.<br><br><b><b>-</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches back to the previously active Kubernetes context (for <i>kubectx</i>) or namespace (for <i>kubens</i>). This acts as a convenient toggle.<br><br><b><b>-d</b> <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(kubectx only)</i> Deletes the specified context from your <i>kubeconfig</i> file. If the deleted context was the currently active one, <i>kubectx</i> will automatically switch to another available context.<br><br><b><b>-c</b> <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies the name of the specified context or namespace to your system's clipboard, making it easy to paste elsewhere.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(kubectx only)</i> Interactively updates the name of the current context. This is useful for renaming contexts without manual <i>kubeconfig</i> file editing.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <i>kubectx</i> or <i>kubens</i> command being used.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message, providing a concise summary of the command's usage and available options.<br><br>


title: DESCRIPTION
content:
<i>kubectx</i> is a command-line tool that significantly enhances the Kubernetes <i>kubectl</i> experience by providing a rapid and intuitive way to switch between Kubernetes contexts. For users managing multiple Kubernetes clusters, environments, or projects, frequently changing the active context in their <i>kubeconfig</i> file is a common task. Without <i>kubectx</i>, this involves typing out lengthy <i>kubectl config use-context</i> commands.<br><br><i>kubectx</i> streamlines this by allowing users to list all available contexts, switch to a specific one by name (with support for fuzzy matching), or quickly revert to the previous context with a single command. It is typically paired with <i>kubens</i>, its counterpart for managing Kubernetes namespaces, which offers similar functionality for switching namespaces within the current context. Both tools feature robust tab-completion for popular shells, drastically improving productivity for Kubernetes administrators and developers.


title: CAVEATS
content:
<i>kubectx</i> and <i>kubens</i> directly modify your <i>~/.kube/config</i> file by updating the <i>current-context</i> or <i>current-namespace</i> fields. While generally safe, it's always recommended to back up your <i>kubeconfig</i> file periodically. These tools are designed for efficient switching and do not manage the creation, deletion (other than `-d` option), or configuration details of Kubernetes contexts or clusters themselves.


title: FUZZY MATCHING
content:
A standout feature of both <i>kubectx</i> and <i>kubens</i> is their intelligent fuzzy matching capability. Instead of requiring the exact context or namespace name, you can provide a partial string or pattern, and the tool will intelligently suggest or switch to the most probable match. This greatly reduces typing errors and accelerates context/namespace switching.


title: AUTO-COMPLETION
content:
<i>kubectx</i> and <i>kubens</i> provide robust shell auto-completion scripts for popular shells like Bash, Zsh, and Fish. Once installed, pressing the 'Tab' key after typing <i>kubectx</i> or <i>kubens</i> will display available contexts or namespaces, enabling users to select desired configurations with minimal typing and maximum accuracy.


title: INSTALLATION
content:
These tools are not part of the official <i>kubectl</i> distribution but are widely available through various channels. Common installation methods include using package managers like Homebrew (on macOS), installing via the Kubernetes Krew plugin manager (e.g., <i>kubectl krew install kubectx</i>), or simply cloning the Git repository and adding the scripts to your system's PATH.


title: HISTORY
content:
<i>kubectx</i> was originally created by Ahmet Alp Balkan to address the common challenge faced by Kubernetes users of frequently switching between multiple contexts and namespaces. Its design focused on simplicity and speed, quickly gaining popularity for its ability to significantly streamline workflows. <i>kubens</i> was developed as a direct complement, extending the same user-friendly switching capabilities to Kubernetes namespaces.


title: SYNOPSIS
content:
<i><b>kubens</b> [NAMESPACE]<br><b>kubens</b> -<br><b>kubens</b> --current<br><b>kubens</b> --set-default [NAMESPACE]<br><b>kubens</b> --unset-default<br><b>kubens</b> --help<br><b>kubens</b> --version</i>


title: PARAMETERS
content:
<b><i>[NAMESPACE]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches to the specified Kubernetes namespace. If omitted, lists all available namespaces in the current context.<br><br><b><i>-</i> or <i>--previous</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches to the previously active Kubernetes namespace.<br><br><b><i>-c</i> or <i>--current</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the name of the currently active Kubernetes namespace.<br><br><b><i>--set-default [NAMESPACE]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a default namespace that will be used for new contexts if no namespace is specified. If <i>[NAMESPACE]</i> is omitted, it sets the current namespace as default.<br><br><b><i>--unset-default</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the default namespace setting for new contexts.<br><br><b><i>-h</i> or <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and usage information for <b>kubens</b>.<br><br><b><i>-v</i> or <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>kubens</b> command.<br><br>


title: DESCRIPTION
content:
<i>The <b>kubens</b> command is a powerful and convenient utility designed to simplify the process of switching between Kubernetes namespaces. It acts as a wrapper around the verbose <code>kubectl config set-context</code> command, allowing users to rapidly change their active Kubernetes namespace with a single, intuitive command. By default, running <b>kubens</b> without any arguments lists all available namespaces in the current Kubernetes context, making it easy to discover and select the desired namespace.<br><br>This tool is widely used by developers and operations teams to improve workflow efficiency when working with multiple namespaces, eliminating the need to repeatedly type long <code>kubectl</code> commands. It works by directly modifying the active context's namespace entry within your <code>kubeconfig</code> file. Often installed as part of the <b>kubectx</b> project, <b>kubens</b> is an essential companion for anyone frequently interacting with Kubernetes clusters, streamlining the navigation across different logical environments or projects within a single cluster.</i>


title: CAVEATS
content:
<i><b>kubens</b> relies on a properly configured <code>kubeconfig</code> file and an active Kubernetes context. It modifies the <code>kubeconfig</code> file directly to change the namespace, so ensure appropriate permissions. It is not an official part of the <code>kubectl</code> distribution and is typically installed as part of the <b>kubectx</b> project, meaning its availability depends on that installation.</i>


title: <I>DEFAULT NAMESPACE CONFIGURATION</I>
content:
<i>The <b>kubens</b> command provides functionality to set or unset a default namespace for newly created or used Kubernetes contexts. Using <i>--set-default [NAMESPACE]</i> allows you to define a specific namespace that <b>kubens</b> will automatically apply when you switch to a context that does not have an explicit namespace defined, or when creating a new context. This can be incredibly useful for ensuring consistency across your environments, especially if you consistently work within a particular namespace across various clusters or projects. The <i>--unset-default</i> option removes this global default setting.</i>


title: HISTORY
content:
<i><b>kubens</b> was developed by Ahmet Alp Balkan as part of the <b>kubectx</b> project. It emerged from the need to streamline the frequent context and namespace switching operations that Kubernetes users perform daily, which were cumbersome using native <code>kubectl config</code> commands. Released as an open-source tool, it quickly gained widespread adoption in the Kubernetes community due to its significant productivity improvements and user-friendly interface.</i>


title: SYNOPSIS
content:
<b>kubeseal</b> [<i>options</i>] [<i>input_file</i>]<br><b>cat</b> <<i>secret.yaml</i>> | <b>kubeseal</b> [<i>options</i>] > <<i>sealedsecret.yaml</i>><br><b>kubeseal</b> <b>--raw --from-literal=</b><<i>key</i>><b>=</b><<i>value</i>> [<b>--from-literal=</b>...] > <<i>sealedsecret.yaml</i>>


title: PARAMETERS
content:
<b><b>--cert</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the public key certificate for sealing. If not provided, <i>kubeseal</i> attempts to fetch it from the controller.<br><br><b><b>--controller-name</b> <<i>name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the name of the <i>sealed-secrets</i> controller deployment (default: <i>sealed-secrets</i>).<br><br><b><b>--controller-namespace</b> <<i>namespace</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the namespace of the <i>sealed-secrets</i> controller (default: <i>kube-system</i>).<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the sealed secret to <i>stdout</i> without actually writing it to the specified output file.<br><br><b><b>--from-file</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads secret data from a file, similar to <i>kubectl create secret generic --from-file</i>.<br><br><b><b>--from-literal</b> <<i>key=value</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides secret data as a literal key-value pair, similar to <i>kubectl create secret generic --from-literal</i>.<br><br><b><b>--from-env</b> <<i>env_var_name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads secret data from an environment variable.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the sealed secret in JSON format instead of YAML.<br><br><b><b>--name</b> <<i>name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name for the generated <b>SealedSecret</b> object.<br><br><b><b>--namespace</b> <<i>namespace</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target namespace for the <b>SealedSecret</b> object.<br><br><b><b>--output</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the sealed secret to the specified file instead of <i>stdout</i>.<br><br><b><b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates that the input is a raw secret value (e.g., from <i>--from-literal</i>), not a full Kubernetes <b>Secret</b> YAML.<br><br><b><b>--scope</b> <<i>cluster-wide|namespace-wide|strict</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the secrecy scope, determining how restricted the secret is (e.g., to a specific namespace or cluster-wide).<br><br><b><b>--re-encrypt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Re-encrypts an existing <b>SealedSecret</b> with the latest public key. Useful for key rotations.<br><br><b><b>--allow-empty-data</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows sealing of secrets with empty data values.<br><br><b><b>--merge-into</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Merges the generated <b>SealedSecret</b> into an existing YAML file, typically a Kubernetes manifest.<br><br><b><b>--recovery-unseal-key</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a private key for emergency unsealing (advanced usage, typically not for sealing).<br><br><b><b>--recovery-cert</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a public certificate for emergency unsealing (advanced usage, typically not for sealing).<br><br>


title: DESCRIPTION
content:
<i>kubeseal</i> is a command-line utility for encrypting Kubernetes <b>Secret</b> objects into <b>SealedSecret</b> objects. It is an integral part of the <i>sealed-secrets</i> ecosystem, which provides a controller to decrypt these <b>SealedSecret</b> objects back into standard <b>Secret</b> objects within a Kubernetes cluster. The primary purpose of <i>kubeseal</i> is to allow users to safely commit sensitive data, such as database passwords or API keys, into version control systems (like Git) without exposing the plain-text values.<br><br>It achieves this by encrypting the secret data using the <i>sealed-secrets</i> controller's public key. Only the controller, holding the corresponding private key, can decrypt the data within the cluster, making it a secure and practical solution for managing secrets in a GitOps workflow.


title: CAVEATS
content:
<i>kubeseal</i> requires the <i>sealed-secrets</i> controller to be running in your Kubernetes cluster to fetch its public key for encryption. Without the controller, or if the key is not explicitly provided via <i>--cert</i>, <i>kubeseal</i> cannot function.<br><br>The <b>SealedSecret</b> objects generated by <i>kubeseal</i> can only be decrypted by the specific <i>sealed-secrets</i> controller instance that holds the corresponding private key. This ensures strong security but means portability of sealed secrets across distinct clusters requires careful management of controller keys.<br><br>While <i>kubeseal</i> encrypts secrets, it does not decrypt them. Decryption is solely handled by the <i>sealed-secrets</i> controller within the cluster when a <b>SealedSecret</b> is applied.


title: <B>HOW IT WORKS</B>
content:
<i>kubeseal</i> leverages asymmetric encryption. It fetches the public key from the <i>sealed-secrets</i> controller running in your Kubernetes cluster (or you can provide it via <i>--cert</i>). It then uses this public key to encrypt the secret data. The resulting <b>SealedSecret</b> can be safely committed to Git. When this <b>SealedSecret</b> is applied to the cluster, the <i>sealed-secrets</i> controller, possessing the corresponding private key, decrypts it into a standard Kubernetes <b>Secret</b> object.


title: <B>USE CASES</B>
content:
<ul><li>Storing sensitive configuration in public or private Git repositories without exposing plain-text values.</li><li>Implementing GitOps workflows where all application configurations, including secrets, are version-controlled.</li><li>Ensuring that secrets are only accessible by the Kubernetes cluster they are intended for, even if the Git repository is compromised.</li><li>Enabling safe collaboration on infrastructure-as-code that includes secret definitions.</li></ul>


title: HISTORY
content:
<i>kubeseal</i> is a core component of the <i>sealed-secrets</i> project, originally developed by Bitnami (now VMware). It emerged as a solution to a common challenge in Kubernetes: how to safely store sensitive information like passwords and API keys in Git repositories while maintaining a GitOps workflow. The project addresses this by providing a robust public-key encryption mechanism for Kubernetes Secrets, making it possible to commit secrets safely to version control.


title: SYNOPSIS
content:
<b>kubetail</b> <i>&lt;pod_name_regex&gt;</i> [<b>-n</b> <i>&lt;namespace&gt;</i>] [<b>-l</b> <i>&lt;label_selector&gt;</i>] [<b>-j</b> <i>&lt;container_name&gt;</i>] [<b>-s</b> <i>&lt;since_time&gt;</i>] [<b>-c</b> <i>&lt;lines&gt;</i>] [<b>--grep</b> <i>&lt;regex&gt;</i>] [<b>--exclude</b> <i>&lt;regex&gt;</i>] [<b>--no-color</b>] [<b>--timestamps</b>] [<i>&lt;options&gt;</i>]


title: PARAMETERS
content:
<b><i>&lt;pod_name_regex&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A regular expression to match pod names. If no regex is provided, it typically lists available pods or requires a selector.<br><br><b><b>-n</b>, <b>--namespace</b> <i>&lt;namespace&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Kubernetes namespace to search for pods. Defaults to the current active namespace.<br><br><b><b>-l</b>, <b>--selector</b> <i>&lt;label_selector&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A Kubernetes label selector (e.g., 'app=my-app,env=prod') to filter pods. Can be used instead of or in conjunction with a pod name regex.<br><br><b><b>-j</b>, <b>--container</b> <i>&lt;container_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a specific container name within the pods to tail logs from. Useful for multi-container pods.<br><br><b><b>-s</b>, <b>--since</b> <i>&lt;since_time&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieve logs older than a specific duration (e.g., '1h', '5m', '30s') or from an absolute timestamp.<br><br><b><b>-c</b>, <b>--lines</b> <i>&lt;lines&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only the last <i>N</i> lines of logs from each pod. Similar to 'tail -n'.<br><br><b><b>--grep</b> <i>&lt;regex&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log lines, showing only those that match the specified regular expression.<br><br><b><b>--exclude</b> <i>&lt;regex&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log lines, excluding those that match the specified regular expression.<br><br><b><b>--no-color</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable colorized output. By default, <i>kubetail</i> colors logs per pod/container.<br><br><b><b>--timestamps</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show timestamps in the log output. This can be combined with <i>kubectl</i>'s timestamp option for full timestamps.<br><br><b><b>--skip-older-than</b> <i>&lt;duration&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip pods that haven't produced logs in the specified duration (e.g., '1h', '10m').<br><br><b><b>--follow</b>, <b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow new logs as they are written. This is the default behavior and doesn't usually need to be specified.<br><br><b><b>--tail</b> <i>&lt;lines&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <b>--lines</b>.<br><br>


title: DESCRIPTION
content:
<i>kubetail</i> is a powerful command-line utility designed to simplify log monitoring for Kubernetes users.<br>Unlike the standard <i>kubectl logs</i> command which typically focuses on a single pod or container, <i>kubetail</i> allows you to aggregate and follow logs from multiple Kubernetes pods and containers simultaneously. This is particularly useful in microservice architectures where an application might be composed of many replicated pods or interdependent services spread across a namespace.<br><br>The tool works by leveraging the underlying <i>kubectl logs -f</i> command for each matching pod and then interleaving their output into a single, consolidated stream. It intelligently colors the output based on the pod or container name, making it easy to distinguish logs from different sources. <i>kubetail</i> supports powerful filtering capabilities, including regular expression matching to include or exclude specific log lines, and time-based filtering to retrieve logs from a specific period. It significantly enhances the debugging and operational visibility experience within a Kubernetes cluster by presenting a unified log view, eliminating the need to manually switch between multiple terminal windows or run complex scripts.


title: CAVEATS
content:
<i>kubetail</i> is not a native Linux command or part of the standard <i>kubectl</i> distribution. It is an external shell script that must be installed separately. It relies heavily on <i>kubectl</i> being installed and configured correctly to connect to a Kubernetes cluster.<br>While powerful, tailing logs from a very large number of pods simultaneously can consume significant resources on the client machine and may overwhelm the terminal output without proper filtering. Its functionality is essentially a wrapper around multiple concurrent <i>kubectl logs -f</i> calls.


title: INSTALLATION
content:
<i>kubetail</i> is typically installed via package managers like Homebrew (<b>brew install kubetail</b>) on macOS, or through the <i>kubectl</i> plugin manager <i>krew</i> (<b>kubectl krew install tail</b>, note that <i>krew</i>'s plugin is called <b>tail</b>).<br>Alternatively, the shell script can be downloaded directly from its GitHub repository and placed in your system's PATH.


title: COMMON USAGE PATTERNS
content:
Beyond basic regex matching, <i>kubetail</i> is frequently used with label selectors (<b>kubetail -l app=my-service</b>) to target specific deployments. For debugging, combining with <b>--since</b> (e.g., <b>kubetail my-app -s 5m --grep "ERROR"</b>) helps narrow down recent issues.<br>The automatic colorization significantly aids in distinguishing logs from different replicas or services within a single view.


title: HISTORY
content:
<i>kubetail</i> was created by <b>Johan Haleby</b> and quickly gained popularity within the Kubernetes community due to its intuitive approach to a common problem: distributed log monitoring. It was developed as a simple yet effective shell script to address the limitations of <i>kubectl logs</i> for multi-pod deployments.<br>Its open-source nature allowed it to be adopted and improved upon by contributors. While not an official Kubernetes project, it has become a de facto standard tool for many developers and operations teams and is often distributed via package managers like Homebrew or through the <i>kubectl</i> plugin manager <i>krew</i>, signifying its widespread adoption and utility.


title: SYNOPSIS
content:
<b>kubie</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<i>ARGS</i>...]<br><br>Common Commands:<br>  <b>kubie</b> <i>shell</i> [<i>OPTIONS</i>] <br>  <b>kubie</b> <i>exec</i> [<i>OPTIONS</i>] <i>--</i> <i>COMMAND</i> [<i>ARGS</i>...]<br>  <b>kubie</b> <i>ctx</i> [<i>CONTEXT</i>] [<i>OPTIONS</i>]<br>  <b>kubie</b> <i>ns</i> [<i>NAMESPACE</i>] [<i>OPTIONS</i>]<br>  <b>kubie</b> <i>edit</i><br>  <b>kubie</b> <i>view</i><br>  <b>kubie</b> <i>setup</i> <i>SHELL</i>


title: PARAMETERS
content:
<b><b>-c</b>, <b>--context</b> <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Kubernetes context to use for the operation. Can be used with <i>shell</i>, <i>exec</i>, <i>ctx</i>.<br><br><b><b>-n</b>, <b>--namespace</b> <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Kubernetes namespace to use for the operation. Can be used with <i>shell</i>, <i>exec</i>, <i>ns</i>.<br><br><b><b>--cluster</b> <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter available contexts by the associated cluster name. Useful when listing or selecting contexts.<br><br><b><b>--file</b> <i>&lt;PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative <b>kubeconfig</b> file to load contexts from, overriding the default <b>KUBECONFIG</b>.<br><br><b><b>--env</b> <i>&lt;KEY=VALUE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set an environment variable for the new shell or command being executed (e.g., with <i>shell</i> or <i>exec</i>).<br><br><b><b>--shell</b> <i>&lt;SHELL&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the shell to launch (e.g., <i>bash</i>, <i>zsh</i>, <i>fish</i>) when using <i>kubie shell</i>.<br><br><b><b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output raw context or namespace names without additional formatting, useful for scripting (e.g., with <i>ctx</i> or <i>ns</i>).<br><br><b><b>--no-fzf</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the interactive fuzzy finder when selecting contexts or namespaces, forcing a direct lookup or listing.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message for the command or subcommand.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information.<br><br>


title: DESCRIPTION
content:
<i>kubie</i> is a powerful command-line tool designed to streamline interaction with Kubernetes clusters by simplifying the management of <b>kubeconfig</b> contexts and namespaces. It provides an intuitive way to switch between different Kubernetes environments without manually manipulating the <b>KUBECONFIG</b> environment variable or using complex <b>kubectl config</b> commands. <br><br>Written in Rust for performance, <i>kubie</i> enhances productivity by allowing users to quickly open new shells or execute commands within a specific context and namespace. It helps prevent accidental operations on the wrong cluster or namespace, a common pitfall in multi-cluster Kubernetes environments. Its key features include a fuzzy finder for quick selection, support for multiple kubeconfig files, and seamless shell integration.


title: CAVEATS
content:
<i>kubie</i> relies on modifying the <b>KUBECONFIG</b> environment variable internally, which might occasionally lead to unexpected interactions if other tools also extensively manipulate this variable in a non-standard way. Shell integration (via <b>kubie setup</b>) is crucial for a smooth user experience, and incorrect setup can lead to functional issues. Users should be mindful of the contexts they are operating in, as <i>kubie</i> provides powerful access but does not add an additional layer of authorization.


title: INSTALLATION AND SETUP
content:
<i>kubie</i> can be installed via <i>cargo</i> (Rust's package manager) using <b>cargo install kubie</b>, or by downloading pre-compiled binaries from its GitHub releases page. After installation, shell integration is required for full functionality. This is typically done by running <b>eval "$(kubie setup <i>&lt;YOUR_SHELL&gt;</i>)"</b> (e.g., <b>zsh</b>, <b>bash</b>, <b>fish</b>) in your shell's configuration file (e.g., <i>.zshrc</i>, <i>.bashrc</i>) to enable features like prompt updates and fuzzy finding.


title: TYPICAL USAGE
content:
The most common use cases involve <b>kubie shell</b> to open a new shell with a specific context/namespace, or <b>kubie exec</b> to run a single command. For quick switching within the current shell, <b>kubie ctx</b> and <b>kubie ns</b> allow interactive selection (often with fuzzy search) or direct specification of the target context or namespace, updating your prompt accordingly. This greatly simplifies daily operations for Kubernetes administrators and developers.


title: HISTORY
content:
<i>kubie</i> was created by <i>@johannestroeger</i> and is developed in Rust, emphasizing performance and reliability. It emerged as a solution to the common frustration of managing multiple Kubernetes contexts and namespaces efficiently, especially in environments with many clusters or frequent context switching. Its development has focused on providing a user-friendly and robust alternative to manual <b>kubeconfig</b> management, gaining popularity in the Kubernetes community for its ease of use and powerful features.


title: SYNOPSIS
content:
<b>kustomize</b> <I>command</I> [<I>options</I>] [<I>arguments</I>]<br><br>Common commands:<br>  <b>kustomize build</b> <I>kustomization_directory</I> [<I>options</I>]<br>  <b>kustomize create</b> [<I>kustomization_directory</I>]<br>  <b>kustomize edit</b> <I>subcommand</I> [<I>arguments</I>]<br>  <b>kustomize diff</b> [<I>kustomization_directory</I>] [<I>options</I>]


title: PARAMETERS
content:
<b>build <kustomization_directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the customized Kubernetes manifests based on the <i>kustomization.yaml</i> file in the specified directory. This is the primary command for outputting final configurations.<br><br><b>--output, -o <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>build</b> to write the generated manifests to a specified file instead of standard output.<br><br><b>--enable-helm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An experimental flag for <b>build</b> to enable integration with Helm charts as bases for customization.<br><br><b>--load-restrictor <LoadRestrictor></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls how files are loaded during <b>build</b>. Options include 'Static' (only allows files from the kustomization root), 'LoaderOnly', or 'None'.<br><br><b>create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new <i>kustomization.yaml</i> file in the current or specified directory, making it a kustomization root.<br><br><b>edit <subcommand></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides subcommands to modify the <i>kustomization.yaml</i> file programmatically, such as adding resources, patches, or setting common fields.<br><br><b>edit add resource <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new resource (YAML file path) to the list of resources in the <i>kustomization.yaml</i>.<br><br><b>edit set nameprefix <prefix></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a common name prefix for all resources defined in the <i>kustomization.yaml</i>.<br><br><b>edit set namespace <namespace></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a common namespace for all resources defined in the <i>kustomization.yaml</i>, overriding individual resource namespaces.<br><br><b>diff [<kustomization_directory>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares a kustomization with another kustomization or with resources currently deployed in a cluster, showing differences.<br><br>


title: DESCRIPTION
content:
<i>kustomize</i> is a standalone tool for customizing Kubernetes configurations declaratively. It enables users to manage multiple variations of an application's manifests without modifying the original base YAML files. Instead, it employs an overlay approach, defining transformations, patches, and modifications on top of immutable base configurations.<br><br>This method avoids the complexities of traditional templating engines by operating directly on structured YAML. It is widely used for managing different environments (e.g., development, staging, production) or specific deployment scenarios, promoting GitOps practices by making configurations composable and version-controllable. A significant aspect of <i>kustomize</i> is its integration directly into <i>kubectl</i>, making it a powerful and convenient built-in method for applying customized configurations.


title: CAVEATS
content:
<i>kustomize</i> is not a general-purpose templating engine; it does not support conditional logic, loops, or complex programmatic transformations like Go templates or Jinja2. It operates strictly on Kubernetes YAML manifest structure. Its power comes from its declarative nature and direct integration with <i>kubectl</i>, but this also means it's less flexible for highly dynamic, non-Kubernetes-specific configurations. Understanding Kubernetes YAML structure is crucial for effective use.


title: KUSTOMIZATION.YAML
content:
The central configuration file for <i>kustomize</i>. This YAML file, typically named <i>kustomization.yaml</i> (or <i>kustomization.yml</i>), defines all the customization rules, including lists of base resources, patches, common labels, common annotations, name prefixes, suffixes, image transformations, and other generators/transformers applied to the base manifests. It is the entry point for <i>kustomize</i> to understand how to build the final set of Kubernetes objects.


title: INTEGRATION WITH KUBECTL
content:
One of the most powerful features of <i>kustomize</i> is its direct integration into the <i>kubectl</i> command-line tool. Users can build and apply a kustomization directly by running <b>kubectl apply -k <directory_path></b>. This seamless integration eliminates the need to run <i>kustomize build</i> separately and then pipe the output to <i>kubectl apply</i>, streamlining the deployment workflow for customized Kubernetes applications.


title: HISTORY
content:
<i>kustomize</i> was developed by Google as part of the broader Kubernetes ecosystem. It emerged from the need for a simpler, declarative alternative to traditional templating engines for managing Kubernetes configurations across different environments. Initially released as a standalone command-line tool, its significance grew rapidly, leading to its integration directly into <i>kubectl</i> starting with Kubernetes 1.14 (via `kubectl apply -k`). This integration made it a de facto standard for configuration management within the Kubernetes community, solidifying its role as a core component for customizing Kubernetes applications without boilerplate or complex templating logic.


title: SYNOPSIS
content:
<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] [<i>key_name</i>] [<i>ACTION</i>]<br><br>Common forms:<br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] <b>--list-wallets</b><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] <b>--list-folders</b><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] <b>--list-keys</b><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] [<i>key_name</i>] <b>--read-password</b><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] [<i>key_name</i>] <b>--write-password</b> <i>&lt;password&gt;</i><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] [<i>key_name</i>] <b>--remove</b><br>&nbsp;&nbsp;<b>kwallet-query</b> [<i>OPTIONS</i>] [<i>wallet_name</i>] [<i>folder_name</i>] [<i>key_name</i>] <b>--rename</b> <i>&lt;new_key_name&gt;</i>


title: PARAMETERS
content:
<b><b>--list-wallets</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available wallets.<br><br><b><b>--list-folders</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all folders within the specified <i>wallet_name</i>. If <i>wallet_name</i> is omitted, uses the default wallet.<br><br><b><b>--list-keys</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all keys (entries) within the specified <i>wallet_name</i> and <i>folder_name</i>. If omitted, uses default wallet/folder.<br><br><b><b>--read-password</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads and outputs the password associated with the specified <i>wallet_name</i>, <i>folder_name</i>, and <i>key_name</i>.<br><br><b><b>--write-password</b> <i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the provided <i>&lt;password&gt;</i> to the specified <i>key_name</i> within the <i>wallet_name</i> and <i>folder_name</i>. Creates the key if it does not exist.<br><br><b><b>--remove</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified <i>key_name</i> from the <i>wallet_name</i> and <i>folder_name</i>.<br><br><b><b>--rename</b> <i>&lt;new_key_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renames the specified <i>key_name</i> to <i>&lt;new_key_name&gt;</i> within the <i>wallet_name</i> and <i>folder_name</i>.<br><br><b><b>--wallet</b> <i>&lt;wallet_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the wallet name to operate on. Defaults to 'kdewallet'.<br><br><b><b>--folder</b> <i>&lt;folder_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the folder name within the wallet. Defaults to 'Passwords'.<br><br><b><b>--key</b> <i>&lt;key_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the key name to operate on.<br><br><b><b>--auto-close</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically closes the wallet after the operation is complete.<br><br><b><b>--daemon</b> <i>&lt;command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes <i>&lt;command&gt;</i> after the KWallet daemon has successfully started and unlocked the wallet.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<i>kwallet-query</i> is a command-line utility designed to interact with the KDE Wallet system. It provides a non-graphical way to access, manage, and manipulate passwords and other sensitive data stored within KWallet. This tool is particularly useful for scripting, automation, or for users who prefer to manage their credentials from the terminal.<br><br>It allows users to list available wallets, list folders within a specific wallet, list keys (entries) within a folder, and perform actions such as reading, writing, renaming, or removing passwords associated with these keys. When operations require an unlocked wallet, <i>kwallet-query</i> communicates with the <i>kwalletd5</i> daemon, which may prompt the user for the wallet's master password via a graphical dialog or, in some configurations, a console prompt.<br><br>While offering powerful command-line access, users should be mindful of the security implications, especially when displaying sensitive information directly on the terminal.


title: CAVEATS
content:
<i>kwallet-query</i> requires the KDE Wallet daemon (<i>kwalletd5</i>) to be running and accessible. If the wallet is locked, the daemon will typically prompt for the wallet's master password, often via a graphical dialog, which might not be suitable for headless environments or certain scripting scenarios. Displaying passwords directly on the terminal via <b>--read-password</b> carries a security risk, as the output might be visible in terminal scrollback buffers or shell history.


title: DEFAULT WALLET AND FOLDER
content:
By default, <i>kwallet-query</i> operates on the wallet named <b>'kdewallet'</b> and the folder named <b>'Passwords'</b> if not explicitly specified via the <b>--wallet</b> or <b>--folder</b> options, or as positional arguments.


title: USAGE EXAMPLES
content:
Here are some common usage examples:<br><br><b>List all wallets:</b><br><i>kwallet-query</i> <b>--list-wallets</b><br><br><b>List folders in the default wallet:</b><br><i>kwallet-query</i> <b>--list-folders</b><br><br><b>Read a password from 'mykey' in 'mywallet/MyFolder':</b><br><i>kwallet-query</i> <i>mywallet MyFolder mykey</i> <b>--read-password</b><br><br><b>Write a new password 's3cr3tp4ss' to 'newkey' in default wallet/folder:</b><br><i>kwallet-query</i> <b>--write-password</b> <i>s3cr3tp4ss</i> <b>--key</b> <i>newkey</i><br><br><b>Remove 'oldkey' from 'mywallet/MyFolder':</b><br><i>kwallet-query</i> <i>mywallet MyFolder oldkey</i> <b>--remove</b>


title: HISTORY
content:
<i>kwallet-query</i> has been a part of the KDE ecosystem for a long time, evolving alongside the KDE Wallet framework itself, from its early versions (KDE 3.x, KDE 4.x) to the current KDE Plasma 5/6 iterations. Its development has consistently focused on providing a robust command-line interface to facilitate automation and scripting tasks involving the KWallet, complementing the graphical KWallet Manager application.


title: SYNOPSIS
content:
<b>kwrite</b> [<i>options</i>] [<i>files</i>...]<br><b>kwrite</b> [<i>KDE General Options</i>] [<i>Qt General Options</i>] [<i>KWrite Specific Options</i>] [<i>URL</i>]


title: PARAMETERS
content:
<b><i>URL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the file(s) to open. Multiple files can be opened by listing them.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays basic help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br><b><b>--author</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows information about the author of <b>KWrite</b>.<br><br><b><b>--license</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows license information.<br><br><b><b>--print</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the specified document(s) to the default printer without opening the GUI.<br><br><b><b>--encoding <i>&lt;encoding&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the character encoding to use when opening the file, e.g., UTF-8.<br><br><b><b>--line <i>&lt;line&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the file at the specified line number.<br><br><b><b>--column <i>&lt;column&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the file at the specified column number, typically used with <b>--line</b>.<br><br><b><b>--config <i>&lt;file&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses an alternative configuration file instead of the default.<br><br><b><b>--nofork</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>KWrite</b> from detaching from the terminal, useful for debugging.<br><br>


title: DESCRIPTION
content:
<b>KWrite</b> is a light-weight text editor developed for the <i>KDE</i> desktop environment. It's designed to be simple and user-friendly for general text editing tasks, while also providing features beneficial for developers. Unlike its more feature-rich sibling, <b>Kate</b>, <b>KWrite</b> offers a streamlined interface, focusing on quick and efficient text manipulation.<br><br>It supports various functionalities including syntax highlighting for numerous programming languages, tabbed document interface for multiple open files, powerful search and replace capabilities, and basic spell checking. <b>KWrite</b> is built upon the <i>KParts</i> technology, allowing it to embed other components, such as a terminal or a file browser, though its default configuration keeps it minimalistic. It's an excellent choice for users seeking a fast and reliable graphical text editor within a KDE or compatible desktop environment.


title: CAVEATS
content:
<b>KWrite</b> is a graphical user interface (GUI) application, meaning it requires an active <i>X server</i> or Wayland session to run. It is tightly integrated with the <i>KDE</i> desktop environment, and while it can run on other desktop environments, it might pull in many <i>KDE</i> dependencies. It's not designed for non-interactive scripting or command-line stream editing, for which tools like <b>sed</b> or <b>awk</b> are more appropriate.


title: <I>KDE INTEGRATION</I>
content:
<b>KWrite</b> is deeply integrated into the <i>KDE</i> ecosystem, utilizing <i>KDE</i> frameworks like <i>KParts</i> (which allows embedding editor components) and <i>KIO</i> (for transparent access to remote files via protocols like FTP or SSH). This integration provides a consistent user experience and leverages existing <i>KDE</i> configurations.


title: HISTORY
content:
<b>KWrite</b> has been a part of the <i>KDE</i> project since its early versions, evolving alongside the desktop environment itself. Initially, it served as <i>KDE's</i> basic text editor, providing essential functionality for plain text viewing and editing. Over time, it gained features such as syntax highlighting and tabbed interfaces, often sharing underlying code components with its more advanced counterpart, <b>Kate</b>. Its development has consistently focused on maintaining a balance between simplicity and practical functionality, making it a stable and widely used tool for general text editing within the <i>KDE</i> ecosystem.


title: SYNOPSIS
content:
<B>kwriteconfig5</B> [<I>options</I>]<br><B>kwriteconfig5</B> [--file <I>file</I> | --application <I>application</I>] --group <I>group</I> --key <I>key</I> --value <I>value</I> [--type <I>type</I>]<br><B>kwriteconfig5</B> [--file <I>file</I> | --application <I>application</I>] --group <I>group</I> --key <I>key</I> --delete<br><B>kwriteconfig5</B> [--file <I>file</I> | --application <I>application</I>] --group <I>group</I> --deletegroup


title: PARAMETERS
content:
<b>--file <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the configuration file to be modified (e.g., <I>~/.config/kdeglobals</I>).<br><br><b>--application <I>application</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the application name. <B>kwriteconfig5</B> will infer the standard configuration file path for this application (e.g., <I>kdeglobals</I> for global settings, <I>plasmarc</I> for Plasma settings).<br><br><b>--group <I>group</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the configuration group (section) within the file where the key resides or will be created (e.g., <I>General</I>, <I>KDE</I>).<br><br><b>--key <I>key</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies the specific key (setting) within the group to be written or deleted (e.g., <I>ColorScheme</I>, <I>MenuEffect</I>).<br><br><b>--value <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The value to be written to the specified key. This option is required when writing a key.<br><br><b>--type <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the data type of the <B>--value</B>. Supported types include <I>String</I> (default), <I>QStringList</I>, <I>Int</I>, <I>UInt</I>, <I>Bool</I>, <I>Double</I>, <I>QColor</I>. Using the correct type is crucial for proper interpretation by KDE applications.<br><br><b>--delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the specified key within its group. Requires <B>--group</B> and <B>--key</B>.<br><br><b>--deletegroup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the entire specified group, including all its keys. Requires <B>--group</B>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br>


title: DESCRIPTION
content:
The <B>kwriteconfig5</B> command is a command-line utility provided by KDE Frameworks for programmatically modifying KDE configuration files. These files, typically located in <I>~/.config/</I>, store various settings for the KDE Plasma desktop and its applications. It allows users and scripts to easily write, update, or delete specific configuration keys within designated groups. This tool is essential for automating KDE setup, deploying consistent configurations across multiple systems, or for users who prefer scripting over graphical interface for setting changes. It interacts with the KConfig system, ensuring changes are applied correctly according to the KDE configuration standard. While <B>kreadconfig5</B> is used for reading settings, <B>kwriteconfig5</B> provides the complementary functionality for modifying them.


title: CAVEATS
content:
Changes made by <B>kwriteconfig5</B> might not take effect immediately. Many KDE applications read their configuration only at startup. To apply changes, you often need to restart the affected application or even log out and back into the KDE Plasma session.<br>Improper use, such as incorrect data types or deleting critical settings, can lead to unexpected behavior or breakage in KDE applications or the desktop environment itself. Always back up critical configuration files before making extensive changes. The command requires write permissions to the target configuration file.


title: USAGE EXAMPLES
content:
Here are some common usage examples:<br><br>1. Set the global color scheme to 'Breeze Dark':<br><I>kwriteconfig5 --file kdeglobals --group General --key ColorScheme --value "Breeze Dark"</I><br><br>2. Enable a specific menu effect (e.g., 'Fade') for KMenu:<br><I>kwriteconfig5 --file kdeglobals --group KMenu --key MenuEffect --value Fade</I><br><br>3. Change the font size for a specific application (e.g., Konsole, using <B>--application</B>):<br><I>kwriteconfig5 --application konsole --group 'Konsole Window' --key Font "Monospace,10,-1,5,50,0,0,0,0,0" --type String</I><br>Note: The font string format might vary.<br><br>4. Delete a specific key (e.g., a custom shortcut):<br><I>kwriteconfig5 --file kglobalshortcutsrc --group org.kde.konsole.desktop --key 'New Window' --delete</I><br><br>5. Delete an entire group:<br><I>kwriteconfig5 --application kwinrc --group Compositing --deletegroup</I>


title: CONFIGURATION FILE PATHS
content:
When using <B>--application</B>, <B>kwriteconfig5</B> infers the configuration file path. For example, <B>--application kdeglobals</B> typically targets <I>~/.config/kdeglobals</I>, <B>--application plasmarc</B> targets <I>~/.config/plasmarc</I>, and application-specific settings like <B>--application konsole</B> target <I>~/.config/konsolerc</I>. The exact location can be influenced by <B>XDG_CONFIG_HOME</B> environment variable.


title: DATA TYPES
content:
<B>kwriteconfig5</B> supports various data types via the <B>--type</B> option. If omitted, it defaults to <I>String</I>. Using the correct type ensures that applications interpret the value as expected. For instance, a boolean value 'true' or 'false' should ideally be set with <B>--type Bool</B>, and numeric values with <B>--type Int</B> or <B>--type Double</B>. <I>QStringList</I> can be used for values that are lists of strings, often comma-separated or newline-separated depending on the context.


title: HISTORY
content:
The <B>kwriteconfig5</B> command is part of the KDE Frameworks 5, specifically the KConfig module. It is the successor to <B>kwriteconfig</B> from KDE Platform 4. The evolution from KDE4 to KDE5 (Plasma 5) involved significant refactoring of core libraries and tools, including the KConfig system. <B>kwriteconfig5</B> maintains similar functionality to its predecessor but is built against Qt5 and KDE Frameworks 5, ensuring compatibility with the modern KDE Plasma desktop environment. Its primary role has consistently been to provide a robust command-line interface for managing KDE's INI-style configuration files.


title: PARAMETERS
content:
<b>-s, --size <bytes></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the size of the L2CAP echo request packets in bytes.<br><br><b>-c, --count <num></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of L2CAP echo request packets to send.<br><br><b>-i, --interval <interval></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the delay in seconds between sending each packet.<br><br><b>-t, --timeout <timeout></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the timeout in seconds to wait for an echo reply.<br><br><b>-f, --flood</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends packets as fast as possible without waiting for replies or adhering to intervals.<br><br><b>-a, --adapter <bdaddr></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the local Bluetooth adapter's address to use for sending packets.<br><br><b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, showing more detailed information about the L2CAP connection.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><bdaddr></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>mandatory</b> Bluetooth address of the target device to ping (e.g., 00:1A:2B:3C:4D:5E).<br><br>


title: DESCRIPTION
content:
<I>l2ping</I> is a utility for diagnosing and testing Bluetooth L2CAP (Logical Link Control and Adaptation Protocol) connections. Analogous to the <I>ping</I> command for IP networks, <I>l2ping</I> sends L2CAP echo request packets to a specified Bluetooth device address (<I>BD_ADDR</I>) and listens for echo replies.<br><br>This tool is essential for verifying basic Bluetooth connectivity, measuring round-trip time (RTT) between two Bluetooth devices, and assessing packet loss. It helps identify if a remote Bluetooth device is reachable and responsive at the L2CAP layer. <I>l2ping</I> is part of the BlueZ utilities, the official Linux Bluetooth protocol stack, and is widely used by developers and system administrators to troubleshoot Bluetooth issues on Linux systems. It supports various options to control packet size, count, interval, and source adapter, providing flexibility for different testing scenarios.<br><br><I>l2ping</I> operates at a low level of the Bluetooth stack, providing insights into the fundamental link quality, making it a valuable first step in debugging more complex Bluetooth profile problems.


title: CAVEATS
content:
<I>l2ping</I> typically requires <b>root privileges</b> (or being run with <I>sudo</I>) because it interacts directly with the Bluetooth HCI (Host Controller Interface) layer.<br><br>The target Bluetooth device must be powered on and in a state where it can respond to L2CAP echo requests. While it tests basic reachability, it does not guarantee higher-level Bluetooth profile (e.g., A2DP, SPP) functionality.<br><br>Performance measurements can be affected by factors like power saving modes on the devices, distance, interference, and the overall load on the Bluetooth adapter.


title: USAGE PRIVILEGES
content:
Due to its direct interaction with the Bluetooth hardware and low-level stack, <I>l2ping</I> requires elevated privileges to run. This means it must be executed as the <b>root</b> user or by using the <I>sudo</I> command. For example: <br><b><I>sudo l2ping 00:1A:2B:3C:4D:5E</I></b>


title: TYPICAL USE CASES
content:
<I>l2ping</I> is commonly used for:<br><b><I>- Verifying</I></b> if a remote Bluetooth device is discoverable and responsive at the L2CAP level.<br><b><I>- Measuring</I></b> latency (round-trip time) between a local adapter and a remote device.<br><b><I>- Troubleshooting</I></b> basic connectivity issues when devices fail to pair or connect.<br><b><I>- Assessing</I></b> the quality of a Bluetooth link in a given environment.


title: HISTORY
content:
<I>l2ping</I> is an integral part of the <b>BlueZ</b> project, the official Linux Bluetooth protocol stack. BlueZ began development in 2001, aiming to provide a robust and open-source implementation of Bluetooth for Linux. <I>l2ping</I> was developed early on as a fundamental diagnostic tool, mirroring the utility of <I>ping</I> for IP networks, adapted for the Bluetooth L2CAP layer.<br><br>Its consistent inclusion across various BlueZ releases underscores its importance as a go-to command-line tool for basic Bluetooth connectivity testing and troubleshooting on Linux systems for over two decades. Its design has remained largely consistent due to its effective simplicity.


title: SYNOPSIS
content:
<b>lambo</b> [<b>-a</b> | <b>-p</b> <i>&lt;PID&gt;</i> | <b>-r</b> | <b>-c</b>] [<b>--force</b>] [<b>--profile</b>=<i>&lt;name&gt;</i>]


title: PARAMETERS
content:
<b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates aggressive global system tuning, optimizing various kernel parameters for maximum raw performance. This option may significantly increase resource consumption.<br><br><b><b>-p</b> <i>&lt;PID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prioritizes a specific process identified by its Process ID (PID) to the highest possible scheduling priority, potentially starving other processes.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a 'rapid purge' of system caches (e.g., page cache, dentry and inode caches) to free up memory immediately. This can be disruptive to ongoing I/O operations.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks and displays the current 'lambo' tuning status and active performance profiles on the system.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides safety checks and warnings, allowing the command to apply potentially dangerous or system-instabilizing optimizations. Use with extreme caution.<br><br><b><b>--profile</b>=<i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a predefined performance profile (e.g., 'gaming', 'low-latency', 'compute') from the system's 'lambo' configuration. Profiles encapsulate a set of tuning parameters.<br><br>


title: DESCRIPTION
content:
<i>lambo</i> is a hypothetical, high-performance Linux utility designed to push system resources to their theoretical limits. It's conceived as an aggressive tuner, capable of optimizing kernel parameters, prioritizing critical processes, and performing rapid cache purges to achieve maximum throughput and responsiveness. The name 'lambo' implies speed and power, suggesting a command that, when invoked, makes the system perform 'like a Lamborghini'. While not a standard command, in a hypothetical scenario, it would be used when absolute speed and low latency are paramount, potentially for specialized high-frequency trading applications, real-time multimedia processing, or extreme gaming. However, such aggressive tuning would inherently carry risks, including potential system instability, increased power consumption, or even accelerated hardware wear.


title: CAVEATS
content:
The 'lambo' command is <i>not</i> a standard Linux utility and is purely hypothetical. If such a command were to exist with the described functionalities, its aggressive nature could lead to severe system instability, data corruption, kernel panics, or even accelerate hardware degradation due to constant stress. It would require root privileges and should only be used by experienced system administrators who understand the implications of extreme system tuning. There is no 'undo' button for reckless optimization.


title: HYPOTHETICAL NATURE
content:
This analysis describes a conceptual 'lambo' command. As of current standard Linux distributions, there is no command by this name with the described functionality. The information provided is based on a creative interpretation of what a command named 'lambo' might do, focusing on extreme performance.


title: SYNOPSIS
content:
<b>lambo-new</b> [<i>OPTIONS</i>] <i>&lt;project-name&gt;</i><br><b>lambo-new</b> <b>--help</b><br><b>lambo-new</b> <b>--version</b>


title: PARAMETERS
content:
<b><project-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The desired name for the new project directory. This will be created in the current working directory.<br><br><b>--template <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a predefined project template to use for scaffolding. E.g., 'web-app', 'api-service'.<br><br><b>--framework <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the specific framework or library to configure the new project with. E.g., 'react', 'vue', 'node-express'.<br><br><b>--git</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new Git repository within the created project directory.<br><br><b>--no-install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from automatically installing project dependencies (e.g., npm, yarn, pip packages) after scaffolding.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the creation of the project, overwriting an existing directory if it shares the same name.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing detailed steps during the scaffolding process.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>lambo-new</b> command is a <i>hypothetical or custom</i> utility designed to quickly scaffold new project directories. While not a standard Linux command found in common distributions, its name suggests a tool focused on creating 'new' projects, possibly within a framework or ecosystem referred to as 'Lambo', or simply aiming for 'rapid' (like a Lamborghini) project initialization. Its primary purpose would be to generate a predefined directory structure, essential configuration files, and boilerplate code, thereby accelerating the initial setup phase of development projects. It would aim to abstract away repetitive setup tasks, allowing developers to immediately focus on application logic rather than infrastructure.


title: CAVEATS
content:
The <b>lambo-new</b> command is <i>not a standard Linux command</i> available in most distributions. It is presented here as a <i>hypothetical</i> example or a possible name for a <i>custom script or development tool</i>. Therefore, it typically needs to be specifically installed, compiled, or be an alias configured by the user or their organization. Its functionality would depend entirely on its actual implementation.


title: TEMPLATES AND EXTENSIBILITY
content:
A robust <b>lambo-new</b> command would likely support a wide array of templates for different project types (e.g., frontend, backend, fullstack). It might also allow users to define and share custom templates, making the tool highly extensible and adaptable to diverse project requirements.<br>Such a tool could also integrate with other build tools, package managers, or version control systems to provide a seamless 'one-stop shop' for project initialization.


title: HISTORY
content:
As a <i>hypothetical or custom command</i>, <b>lambo-new</b> would likely originate from an internal need within a development team or community to standardize and accelerate project setup. It might have evolved from a collection of simple shell scripts into a more robust, command-line interface (CLI) tool. Its development would be driven by the desire to reduce boilerplate and ensure consistency across multiple projects, potentially being open-sourced later to benefit a wider developer community.


title: SEE ALSO
content:
[<i>Hypothetical related commands, assuming a project creation context</i>]<br>, <B>mkdir</B>(1): Used for creating new directories.<br>, <B>cp</B>(1): Used for copying files and directories.<br>, <B>git</B>(1): Version control system, often initialized in new projects.<br>, <B>npm</B>(1) or <B>yarn</B>(1): Package managers, if the project is JavaScript/Node.js based.<br>, <B>pip</B>(1): Python package installer, if the project is Python based.


title: PARAMETERS
content:
<b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of Lando's output.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed debugging information for troubleshooting.<br><br><b><b>--clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears internal Lando caches before executing a command.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for a specific command or Lando itself.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the currently installed Lando version.<br><br><b><b>init</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new Lando application in the current directory, typically by creating a <b>.lando.yml</b> file.<br><br><b><b>start</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the services defined for the current Lando application.<br><br><b><b>stop</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops the services of the current Lando application without destroying data.<br><br><b><b>destroy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Completely stops and removes all containers and data volumes associated with the application.<br><br><b><b>rebuild</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rebuilds an application's services, useful after configuration changes.<br><br><b><b>info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about the application, including URLs and service access details.<br><br><b><b>logs</b> [<I>service</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows logs for the application's services. Optionally specify a service name.<br><br><b><b>ssh</b> [<I>service</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides SSH access to a specific service container (e.g., <b>appserver</b>, <b>database</b>).<br><br><b><b>db-import</b> <I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports a database dump from the specified file into the application's primary database service.<br><br><b><b>db-export</b> [<I>filename</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports the application's database to a file. If no filename is provided, it exports to stdout.<br><br><b><b><I>tool</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a command defined as a tool in the Lando configuration. Examples: <b>lando composer install</b>, <b>lando drush status</b>, <b>lando npm run dev</b>.<br><br>


title: DESCRIPTION
content:
Lando is a powerful, open-source command-line interface (CLI) tool designed to streamline local development for web applications. Built on Docker, it abstracts away the complexities of Docker Compose, providing a user-friendly way to define, build, and manage multi-service application environments. Developers specify their desired services (e.g., PHP, MySQL, Node.js), tools, and custom commands within a <b>.lando.yml</b> configuration file located at the project root. Lando then handles the orchestration, network setup, and provisioning of these services, ensuring consistent and reproducible environments across different machines and team members. It offers pre-configured "recipes" for popular frameworks like Drupal, WordPress, Laravel, and Symfony, enabling quick setup. Key features include automatic proxying for web access, built-in tooling for common development tasks (e.g., <b>composer</b>, <b>drush</b>, <b>npm</b>), and extensibility to define custom commands. Lando significantly simplifies local development workflows, making it an indispensable tool for modern web development.


title: CAVEATS
content:
Lando requires <b>Docker Desktop</b> or <b>Docker Engine</b> to be installed and running on the host machine. It can consume significant system resources (RAM, CPU, disk space) as it runs multiple isolated containers. Its behavior is highly dependent on the project-specific <b>.lando.yml</b> configuration file. Lando is not a core Linux utility and must be installed separately.


title: CONFIGURATION FILE (<B>.LANDO.YML</B>)
content:
The central configuration file for a Lando application. Located at the root of a project, it defines all services (e.g., web server, database, cache), build steps, tooling, commands, and environmental variables required for the application. This file ensures consistency and reproducibility of development environments across different machines and team members.


title: RECIPES
content:
Lando provides pre-configured 'recipes' that simplify setting up common application stacks. These recipes abstract away complex Docker configurations for popular frameworks like Drupal, WordPress, Laravel, Symfony, Node.js, and more, allowing developers to get started quickly with minimal setup.


title: PROXYING AND HOSTNAMES
content:
Lando automatically sets up local DNS entries and proxy URLs for the web services running inside the containers. This allows direct access to the application in a web browser using easily memorable hostnames (e.g., <b>appname.lndo.site</b>), eliminating the need to manage port mappings manually.


title: HISTORY
content:
Lando was initially developed by <b>Tandem</b> (formerly Thinkoom) and released as an open-source project. Its development began around 2016-2017 with the goal of simplifying Docker-based local development, particularly for PHP-based content management systems like Drupal and WordPress. It quickly gained traction due to its user-friendly CLI and powerful abstraction over Docker Compose. Over time, Lando expanded its support to a wide array of programming languages and frameworks, becoming a versatile tool for creating consistent and shareable development environments. Continuous development focuses on performance, stability, and expanding its ecosystem of pre-configured recipes and integrations.


title: PARAMETERS
content:
<b>None</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <i>laptop-detect</i> command does not accept any command-line options or arguments. Its operation is entirely based on internal system checks.<br><br>


title: DESCRIPTION
content:
The <i>laptop-detect</i> command is a simple utility designed to determine if the current Linux system is a laptop or a desktop/server. It achieves this by checking for common indicators found on portable computers.<br><br>Primarily, it inspects the presence and content of specific files and directories related to ACPI (Advanced Configuration and Power Interface) and power supply information. This includes paths like <i>/proc/acpi/battery</i>, <i>/proc/acpi/ac_adapter</i>, and entries under <i>/sys/class/power_supply</i>. Additionally, it may examine DMI (Desktop Management Interface) information to infer the system's form factor.<br><br>The command is most frequently used within shell scripts and automated power management frameworks (like <i>pm-utils</i>) to adapt system behavior. For example, a script might enable specific power-saving measures or prepare for suspend/hibernate if <i>laptop-detect</i> confirms the system is a laptop. Its output is solely conveyed through its exit status: it returns <i>0</i> if a laptop is detected, and <i>1</i> otherwise, making it highly suitable for conditional logic in scripts.


title: CAVEATS
content:
<i>laptop-detect</i> relies heavily on the kernel's ability to expose ACPI and power supply information via the <i>/proc</i> and <i>/sys</i> filesystems. If this information is unavailable, incorrectly configured, or if ACPI is not properly supported, the detection might be inaccurate.<br><br>Virtual machines or specialized embedded systems, which typically lack physical battery or ACPI adapters, will almost always be reported as non-laptops. While generally reliable for standard PCs, it may occasionally misidentify obscure hardware or systems with highly customized firmware.


title: EXIT STATUS
content:
The primary method of communication for <i>laptop-detect</i> is its exit status. A return code of <i>0</i> indicates that the system has been detected as a laptop. A return code of <i>1</i> signifies that the system is not a laptop (e.g., a desktop, server, or VM). This design makes it highly suitable for direct use in shell script conditional statements (e.g., <i>if laptop-detect; then ... fi</i>).


title: DETECTION METHODS
content:
<i>laptop-detect</i> employs several methods to determine if the system is a laptop. These include:<br><ul><li>Checking for the existence and content of <i>/proc/acpi/battery</i> and <i>/proc/acpi/ac_adapter</i>.</li><li>Inspecting entries under <i>/sys/class/power_supply</i> for power source information.</li><li>Analyzing DMI (Desktop Management Interface) information, if available, to identify system type or chassis form factor.</li></ul>The presence of any of these indicators typically leads to a positive laptop detection.


title: HISTORY
content:
The <i>laptop-detect</i> utility emerged from the need for simple, script-friendly system form-factor identification within the Linux ecosystem, particularly for power management scripts. It's often found as part of packages like <i>pm-utils</i>, which provided a suite of scripts for suspend, hibernate, and other power-related actions.<br><br>Its design reflects an earlier approach to power management, relying on direct filesystem checks before the widespread adoption of more comprehensive D-Bus services like <i>UDisks</i> or <i>UPower</i>. Despite its age, it remains a robust and straightforward tool for its specific purpose, used in many legacy and simpler scripting environments.


title: SYNOPSIS
content:
<b>larasail</b> <I>command</I> [<I>arguments</I>...]<br><br><i>(Note: <b>larasail</b> is a proxy; it forwards commands and arguments directly to <b>vendor/bin/sail</b>.)</i>


title: PARAMETERS
content:
<b><b>&lt;sail_command&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any valid <I>Laravel Sail</I> command to be executed within the Docker environment. Common examples include:<br><b>up</b>: Bring up the application's Docker containers.<br><b>down</b>: Stop and remove the application's Docker containers.<br><b>artisan</b> [<I>command</I>]: Execute a Laravel Artisan command.<br><b>composer</b> [<I>command</I>]: Execute a Composer command.<br><b>npm</b> [<I>command</I>]: Execute an npm command.<br><b>php</b> [<I>command</I>]: Execute a PHP command or script.<br><b>test</b>: Run application tests.<br><b>ps</b>: List running Docker containers for the application.<br><b>shell</b>: Start a shell session inside the application container.<br><br><b><b>[<sail_options>...]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any options or flags supported by the specific <I>Laravel Sail</I> command (e.g., `-d` for detached mode with `up`, `--help` for command-specific help, `--user=root` for `shell` or `exec`). These are passed directly to `sail`.<br><br><b><b>[<sail_arguments>...]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any additional arguments required by the specified <I>Laravel Sail</I> command or the underlying command it executes (e.g., `migrate --seed` for `artisan`, `install --no-dev` for `composer`). These are passed directly to `sail`.<br><br>


title: DESCRIPTION
content:
<b>larasail</b> is a community-driven convenience wrapper script designed to streamline interactions with <I>Laravel Sail</I>, the official Docker development environment for Laravel applications. It primarily acts as an alias or shortcut for the `vendor/bin/sail` executable within a Laravel project. By placing `larasail` in your system's <I>PATH</I> (e.g., `~/.local/bin`), developers can significantly reduce typing by replacing verbose commands like `php vendor/bin/sail artisan migrate` with a much shorter and more convenient `larasail artisan migrate`.<br><br>The core benefit of `larasail` is improving the developer experience by making Sail commands feel more like native CLI commands, similar to <I>artisan</I> or <I>composer</I>. It transparently forwards all arguments and options directly to the underlying `sail` command, ensuring full compatibility with all of Sail's functionalities. This abstraction simplifies command execution, making local Laravel development with Docker more fluid and less cumbersome.


title: CAVEATS
content:
<b>larasail</b> relies entirely on <b>Laravel Sail</b> and <b>Docker</b>. Therefore:<br>1. <b>Docker</b> must be installed, running, and accessible on your system.<br>2. You must be executing <b>larasail</b> within a <b>Laravel project directory</b> that has been properly configured for <b>Laravel Sail</b> (meaning the `vendor/bin/sail` executable must exist in the project's `vendor/bin` directory).<br>3. If `vendor/bin/sail` is not found, <b>larasail</b> will fail.<br>4. The <b>larasail</b> script itself needs to be placed in a directory included in your system's <I>PATH</I> environment variable for convenient system-wide access.


title: <I>INSTALLATION & TYPICAL USAGE</I>
content:
<b>larasail</b> is typically installed by manually downloading a simple shell script and making it executable in a directory included in your system's <I>PATH</I> (e.g., `~/.local/bin`).<br><br>A common installation procedure involves:<br>1. <I>Downloading the script:</I> `curl -s <url_to_larasail_script> -o ~/.local/bin/larasail` (replace `<url_to_larasail_script>` with a publicly available script URL, e.g., from a GitHub Gist).<br>2. <I>Making it executable:</I> `chmod +x ~/.local/bin/larasail`<br>3. <I>Ensuring ~/.local/bin is in PATH:</I> Add `export PATH="$HOME/.local/bin:$PATH"` to your shell's configuration file (e.g., `~/.bashrc`, `~/.zshrc`) and then source it (`source ~/.bashrc`).<br><br>Once installed, navigate to your Laravel project root and simply replace `php vendor/bin/sail` with `larasail`. For example:<br>- To bring up containers: `larasail up -d`<br>- To run migrations: `larasail artisan migrate`<br>- To open a shell: `larasail shell`


title: HISTORY
content:
<b>larasail</b> is not an official component of the Laravel framework but rather a popular community-driven utility. Its genesis lies in the desire among developers to simplify the repetitive `php vendor/bin/sail` prefix required for every Laravel Sail command. As <I>Laravel Sail</I> became the de facto standard for local Laravel development, the need for a more concise command-line interface became evident. Consequently, various community members created and shared simple shell scripts or aliases, often referred to generically as 'larasail,' to abstract away the verbose prefix. This distributed and informal development reflects a common pattern in open-source communities where user-driven convenience tools emerge to enhance official offerings.


title: SYNOPSIS
content:
<b>laravel-zero</b> <i>[global_options]</i> <i>&lt;command&gt;</i> <i>[arguments]</i> <i>[options]</i><br><br>This syntax applies when the Laravel Zero application executable is named 'laravel-zero' or symlinked globally. Alternatively, within a project, it's commonly run via '<b>php</b> <i>&lt;your-app-name&gt;</i> ...' (where <i>&lt;your-app-name&gt;</i> is typically 'application').


title: PARAMETERS
content:
<b><b>--help</b> | <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help for the current command or all commands.<br><br><b><b>--quiet</b> | <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output any message.<br><br><b><b>--verbose</b> | <b>-v</b> | <b>-vv</b> | <b>-vvv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.<br><br><b><b>--version</b> | <b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display this application version.<br><br><b><b>--no-interaction</b> | <b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask any interactive question.<br><br><b><b>--env</b><i>[=ENV]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The environment the command should run under (e.g., 'production', 'local').<br><br>


title: DESCRIPTION
content:
Laravel Zero is a micro-framework built on top of the powerful Laravel components, specifically designed for creating elegant and robust console applications. It provides a minimal yet complete environment for command-line interface (CLI) tools, leveraging Laravel's familiar syntax, dependency injection, and Artisan console commands. Ideal for building custom scripts, standalone CLI utilities, or managing background processes without the overhead of a full web application. It offers features like task scheduling, database integration, and command-line prompts, making complex CLI development simpler and more efficient. Laravel Zero empowers developers to craft professional console applications with speed and ease.


title: CAVEATS
content:
Laravel Zero is a PHP application and therefore requires a PHP environment (PHP 8.1+ recommended) and Composer for dependency management. It is not a built-in Linux utility. The available commands are specific to the Laravel Zero application being executed, not general system commands. It relies on a properly configured PHP CLI environment.


title: INSTALLATION
content:
Laravel Zero applications are typically installed via Composer. To create a new project, execute: <br><b>composer create-project nunomaduro/laravel-zero my-cli-app</b><br><br>Once installed, the main executable is usually found at <b>./my-cli-app/application</b> within your project directory, or it can be symlinked globally for easier access (e.g., <b>my-cli-app</b>).


title: COMMON USAGE
content:
After creating a new Laravel Zero project, you can define your own custom commands using the familiar Artisan command generation: <br><b>php application make:command MyCustomCommand</b><br><br>To execute your custom commands or any built-in Laravel Zero/Artisan commands, you would typically run: <br><b>php application <i>&lt;command_name&gt;</i> <i>[arguments]</i> <i>[options]</i></b><br><br>For example, to run database migrations: <b>php application migrate</b>, or to schedule tasks: <b>php application schedule:run</b>.


title: HISTORY
content:
Laravel Zero was created by Nuno Maduro, a prominent contributor to the Laravel ecosystem, and publicly launched in 2017. Its development aimed to provide a lightweight alternative to the full Laravel framework for building console-only applications, reusing Laravel's robust components like Eloquent ORM, Cache, and Filesystem, without the HTTP overhead. It quickly gained popularity for its simplicity and efficiency in developing CLI tools, maintaining an active development community and regular updates in sync with Laravel's releases.


title: SYNOPSIS
content:
<b>last</b> [<i>options</i>] [<i>username</i>...] [<i>tty</i>...]<br><b>last</b> <b>-f</b> <i>file</i> [<i>options</i>] [<i>username</i>...] [<i>tty</i>...]


title: PARAMETERS
content:
<b><b>-a</b> or <b>--hostlast</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the hostname in the last column. This is often the default behavior.<br><br><b><b>-f</b> <i>file</i> or <b>--file</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative file (e.g., an archived <b>wtmp</b> file) to read instead of the default <b>/var/log/wtmp</b>.<br><br><b><b>-F</b> or <b>--fulltimes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print full login and logout times and dates, including the year and seconds.<br><br><b><b>-h</b> or <b>--nohostname</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display the hostname field in the output.<br><br><b><b>-i</b> or <b>--ip</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the IP address in numerical form rather than attempting to resolve it to a hostname.<br><br><b><b>-n</b> <i>number</i> or <b>--limit</b> <i>number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the output to the specified number of lines/entries.<br><br><b><b>-p</b> or <b>--present</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the current time and state of the system, useful for seeing how long the system has been up or when the current users logged in.<br><br><b><b>-R</b> or <b>--nosamehost</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display the hostname field if the user logged in from the current host.<br><br><b><b>-s</b> <i>time</i> or <b>--since</b> <i>time</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display entries starting from the specified time. Time can be absolute (e.g., 'YYYY-MM-DD HH:MM:SS') or relative (e.g., 'now - 1day').<br><br><b><b>-t</b> <i>time</i> or <b>--until</b> <i>time</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display entries up to the specified time. Similar time format to <b>-s</b>.<br><br><b><b>-w</b> or <b>--fullnames</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display full usernames and tty names, without truncation.<br><br><b><b>-x</b> or <b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display run level changes and shutdown entries, in addition to user logins. This is often included by default but ensures their display.<br><br><b><b>--time-format</b> <i>format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Control the format of the timestamps in the output. Common formats include <i>notime</i>, <i>short</i>, <i>full</i>, and <i>iso</i>.<br><br>


title: DESCRIPTION
content:
The <b>last</b> command displays a listing of all users logged in (and out) since the <b>wtmp</b> file was created. By default, it reads from the <b>/var/log/wtmp</b> file, which records all login and logout events, system reboots, and runlevel changes. Each entry typically shows the username, the terminal (tty) they logged in from, the hostname if remote, the start time, the end time, and the duration of the session. If the session is still active or the system crashed, it will show 'still logged in' or 'down until crash'.<br><br>This command is invaluable for system administrators to audit user activity, track system uptime, and investigate security incidents by reviewing who accessed the system and when. It can filter results by specific users, terminals, or time ranges, providing a powerful tool for historical analysis of system access.


title: CAVEATS
content:
The accuracy and completeness of the <b>last</b> command's output are entirely dependent on the integrity and existence of the <b>wtmp</b> file, typically located at <b>/var/log/wtmp</b>. If this file is corrupted, truncated, or rotated (e.g., by <b>logrotate</b>) without preserving older entries, the historical data will be incomplete or misleading.<br><br>It's important to note that <b>last</b> does not show currently logged-in users; for that, use commands like <b>who</b> or <b>w</b>. Additionally, log entries can potentially be faked or removed by an attacker with root privileges, compromising audit trails.


title: DATA SOURCE
content:
By default, <b>last</b> reads login/logout records from the <b>/var/log/wtmp</b> file. This file stores a continuous log of user logins and logouts, system boots and shutdowns, and runlevel changes. The <b>wtmp</b> file is a binary file and should not be edited manually, as doing so can corrupt its contents.


title: FAILED LOGINS
content:
The related command <b>lastb</b> (often a symbolic link to <b>last</b> with the <b>-f /var/log/btmp</b> option) is specifically used to display a list of bad (failed) login attempts. It reads its data from the <b>/var/log/btmp</b> file. This functionality is crucial for identifying brute-force attacks or unauthorized access attempts on a system.


title: HISTORY
content:
The <b>last</b> command has been a fundamental utility in Unix-like operating systems for many decades, providing a straightforward yet powerful way to review system login history. Its functionality is intrinsically linked to the <b>wtmp</b> file (and <b>btmp</b> for <b>lastb</b>), which is a binary log file maintained by the system to record login, logout, system boot, and shutdown events.<br><br>The concept of recording such events dates back to early Unix versions, with <b>wtmp</b> being a standard mechanism. While the core functionality of <b>last</b> has remained consistent over time, modern implementations have introduced enhancements such as flexible time filtering (with <b>-s</b> and <b>-t</b>) and customizable output formatting (with <b>--time-format</b>) to significantly improve its utility for system administrators and security auditors. Its continued relevance highlights the ongoing importance of auditing user access and system events for security and operational insights.


title: PARAMETERS
content:
<b>-a, --hostlast</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the hostname in the last column. This can be useful when the default output truncates long hostnames or when you want the hostname explicitly at the end.<br><br><b>-d, --dns</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Translates IP addresses found in the log file back into their corresponding hostnames using DNS lookups. This makes the output more human-readable, though it can slow down the command execution.<br><br><b>-f, --file &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>lastb</i> to read data from the specified <i>&lt;file&gt;</i> instead of the default <i>/var/log/btmp</i>. This is useful for analyzing archived log files or custom log locations.<br><br><b>-F, --fulltimes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints full login and logout times and dates, including the year and seconds. By default, <i>lastb</i> might show a more condensed time format.<br><br><b>-i, --ip</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the IP address in the last column instead of the hostname. This is helpful for quick network identification or when DNS resolution is not desired.<br><br><b>-n, --limit &lt;number&gt; or -&lt;number&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the output to the specified <i>&lt;number&gt;</i> of lines (entries). This is useful for viewing only the most recent failed attempts.<br><br><b>-R, --nohostname</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the hostname field in the output. This can simplify the output if the hostname information is not needed.<br><br><b>-s, --since &lt;time&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays entries recorded since the specified <i>&lt;time&gt;</i>. The time can be specified in various formats, such as YYYYMMDDHHMMSS, YYYY-MM-DD HH:MM:SS, or relative formats like 'yesterday', 'now - 1 day', etc.<br><br><b>-t, --until &lt;time&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays entries recorded up to the specified <i>&lt;time&gt;</i>. Similar to <i>--since</i>, the time can be in various absolute or relative formats.<br><br><b>-w, --fullnames</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays full usernames and hostnames. This ensures that no names are truncated in the output, which can be useful for clarity.<br><br>


title: DESCRIPTION
content:
The <i>lastb</i> command displays a list of all unsuccessful (failed) login attempts on the system. It reads its information from the <i>/var/log/btmp</i> file, which is a binary log file maintained by the system to record bad login attempts. This command is crucial for security auditing, allowing administrators to monitor who tried to log in unsuccessfully, from where (IP address or hostname), and when. By analyzing failed login attempts, one can detect potential brute-force attacks or unauthorized access attempts. The output typically includes the username that attempted to log in, the terminal (TTY), the remote host or IP address from which the attempt was made, and the timestamp of the failed attempt. Unlike the <i>last</i> command which tracks successful logins, <i>lastb</i> specifically focuses on security-relevant failed attempts.


title: CAVEATS
content:
Requires read permissions for the <i>/var/log/btmp</i> file, which is typically restricted to the root user or members of a specific group (e.g., 'adm' or 'utmp').<br>The <i>/var/log/btmp</i> file can grow very large on systems experiencing frequent failed login attempts, potentially affecting the performance of <i>lastb</i> or consuming significant disk space.<br>The accuracy of the displayed information depends on the integrity of the <i>btmp</i> file and the proper functioning of the system's logging mechanisms.<br>Times displayed are based on the system's local time zone at the moment the log entry was recorded, not necessarily the current system time zone.


title: LOG FILE LOCATION
content:
By default, <i>lastb</i> reads its information from the binary log file located at <i>/var/log/btmp</i>. This file is managed by the system and records all failed login attempts. It is not human-readable directly and should only be accessed via utilities like <i>lastb</i>.


title: SECURITY RELEVANCE
content:
Monitoring <i>lastb</i> output is a critical security practice. A high volume of failed login attempts from a single IP address or against specific usernames can indicate a brute-force attack. Regular review of <i>lastb</i> can help identify unauthorized access attempts and inform security measures.


title: HISTORY
content:
The <i>lastb</i> command is part of the <i>util-linux</i> project, a collection of essential Linux system utilities. It serves as a companion to the <i>last</i> command, both of which trace their lineage back to traditional Unix systems (System V). The concept of separate log files for successful (<i>wtmp</i>) and unsuccessful (<i>btmp</i>) logins, and utilities to parse them, has been a standard feature for system auditing and security for decades.


title: PARAMETERS
content:
<b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the accounting file backward, processing the newest entries first.<br><br><b><b>-f</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative process accounting file to read instead of the default.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the total CPU time spent on each command matching the criteria.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only the total number of commands matching the specified criteria.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints only the CPU time, exit status, and command name for each entry.<br><br><b><i>command...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more command names to filter the output by. Only entries matching these commands will be shown. This argument can also be provided with <b>--command</b>.<br><br><b><i>user...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more usernames to filter the output by. Only entries run by these users will be shown. This argument can also be provided with <b>--user</b>.<br><br><b><i>terminal...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more TTY (terminal) names to filter the output by. Only entries from these terminals will be shown. This argument can also be provided with <b>--tty</b>.<br><br><b><b>--strict-match</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treats <i>command</i>, <i>user</i>, or <i>terminal</i> arguments as exact matches, not substrings.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs version information and exits.<br><br>


title: DESCRIPTION
content:
<code>lastcomm</code> reports information about previously executed commands, reading its data from the system's process accounting file. This file, often located at <i>/var/log/account/pacct</i> or <i>/var/account/pacct</i>, is generated by the kernel when process accounting is enabled. For each recorded command, <code>lastcomm</code> typically displays the command name, the user who executed it, the terminal (TTY) it originated from (if applicable), the total CPU time consumed, and the command's exit status. It serves as a valuable tool for system auditing, understanding system usage patterns, and investigating past activity, providing insights into which commands were run, by whom, and with what resource consumption.


title: CAVEATS
content:
For <code>lastcomm</code> to function, the process accounting system must be enabled on the Linux kernel, typically managed by the <b>acct</b> or <b>psacct</b> package. If accounting is not active, the <i>/var/log/account/pacct</i> file (or its equivalent) will not be populated, and <code>lastcomm</code> will have no data to display. The accounting file can grow significantly, and it's common for system administrators to configure log rotation for it, which means older command history might be archived or deleted. The command only logs information upon process termination, and it does not record command-line arguments, only the command name itself. Data can also be incomplete if the accounting service was temporarily stopped or if the system experienced an unclean shutdown.


title: PROCESS ACCOUNTING PREREQUISITE
content:
For <code>lastcomm</code> to function, the Linux kernel's process accounting feature must be active. This is typically achieved by installing and running the <b>acct</b> or <b>psacct</b> package (depending on your distribution), which ensures that process termination records are written to the <i>/var/log/account/pacct</i> file or its configured alternative.


title: OUTPUT FIELDS EXPLAINED
content:
The standard output of <code>lastcomm</code> includes several fields: <br><i><b>Command Name</b></i>: The name of the executed command. <br><i><b>Flags</b></i>: Special flags like 'S' for superuser, 'F' for forked but not exec'd, 'D' for terminated with a core dump. <br><i><b>User</b></i>: The username of the process's effective user ID. <br><i><b>TTY</b></i>: The terminal from which the command was executed (if applicable). <br><i><b>CPU Time</b></i>: The total CPU time (user + system) consumed by the process. <br><i><b>Start Time</b></i>: The timestamp when the command was recorded (upon exit).


title: HISTORY
content:
<code>lastcomm</code> is a component of the GNU <b>accounting utilities</b> (often found in the <b>acct</b> or <b>psacct</b> package on Linux distributions), which have roots in classic Unix system administration. These utilities were historically crucial for system resource management and billing in multi-user computing environments. While their original billing purpose has largely diminished, <code>lastcomm</code> and its companions remain vital tools for system auditing, security analysis, and understanding historical command execution patterns on a server.


title: PARAMETERS
content:
<b>-b, --before DAYS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display lastlog records older than the specified number of <b>DAYS</b>. Days can be an integer.<br><br><b>-C, --clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clear a user's lastlog entry. This option requires the <b>--user</b> option to specify the user. This operation is typically reserved for root.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit, showing available options and usage.<br><br><b>-R, --root CHROOT_DIR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply changes in the specified <b>CHROOT_DIR</b> directory. This is useful for managing user accounts in a chroot environment.<br><br><b>-t, --time DAYS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display lastlog records newer than the specified number of <b>DAYS</b>. Days can be an integer.<br><br><b>-u, --user LOGIN</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the lastlog record for the specified user <b>LOGIN</b>. This option accepts either a username or a numeric user ID (UID).<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information for the <b>lastlog</b> command and exit.<br><br>


title: DESCRIPTION
content:
The <b>lastlog</b> command displays the most recent login information for all users, or for a specified user, on the system. It reads data from the <i>/var/log/lastlog</i> file, a sparse file that efficiently stores the last login date, time, and location (tty and host) for each user account. This utility is invaluable for system administrators to audit user activity, identify dormant accounts, or monitor for suspicious login patterns. While it only shows the <i>last</i> login, it provides a quick overview of who has accessed the system recently and from where. Its output can be filtered by time or user, offering flexibility in reviewing login data.


title: CAVEATS
content:
The <b>lastlog</b> file (<i>/var/log/lastlog</i>) only stores the <i>most recent</i> login for each user; it does not provide a historical record of all logins. For a complete login history, refer to the <b>last(1)</b> command. The accuracy of the information depends on login services correctly updating the <i>lastlog</i> file upon successful authentication. If a service does not update this file, the information might be outdated or incomplete. Clearing a lastlog entry with <b>--clear</b> should be used with caution, as it permanently removes the last login record for the specified user.


title: DATA SOURCE
content:
The <b>lastlog</b> command primarily retrieves its data from the binary file located at <i>/var/log/lastlog</i>. This file is specifically designed as a <i>sparse file</i>, meaning it only allocates actual disk space for user IDs that have logged in, making it exceptionally efficient for systems managing a large number of user accounts, even if only a fraction of them are active.


title: UPDATING LASTLOG ENTRIES
content:
The entries in the <i>/var/log/lastlog</i> file are typically updated by login programs and services, such as <b>login(1)</b>, <b>sshd(8)</b>, and <b>getty(8)</b>, immediately after a user successfully authenticates and logs into the system. This automatic update mechanism ensures that the last recorded login time for each user is always current and accurate, reflecting their most recent access to the system.


title: HISTORY
content:
The concept of tracking user login times is a fundamental aspect of Unix-like operating systems for auditing and security purposes. The <b>lastlog</b> utility and its associated <i>/var/log/lastlog</i> file have been a standard component of these systems for many decades, providing a simple yet efficient mechanism to store the most recent login data for each user. Its design as a sparse file helps conserve disk space, making it scalable for systems with a large number of user accounts. It is typically part of the <i>shadow-utils</i> package on many modern Linux distributions, highlighting its role in system security and user account management.


title: PARAMETERS
content:
<b>-interaction=<i>mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the interaction mode. Common modes include <i>batchmode</i> (no user input), <i>nonstopmode</i> (prints errors but doesn't stop), <i>scrollmode</i> (similar to nonstopmode but scrolls output), and <i>errorstopmode</i> (stops on first error).<br><br><b>-output-directory=<i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where all output files (<i>.dvi</i>, <i>.log</i>, <i>.aux</i>, etc.) will be written. If not specified, files are written to the current working directory.<br><br><b>-jobname=<i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a specific name to the output files (e.g., <i>name.dvi</i>, <i>name.log</i>) instead of using the input file's base name. Useful for multiple compilations from one source.<br><br><b>-halt-on-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <b>latex</b> to exit immediately upon encountering the first error, rather than attempting to continue processing.<br><br><b>-file-line-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints error messages in the standard compiler error message format, including file name and line number, making them easier for editors to parse.<br><br><b>-shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the execution of external commands from within the LaTeX document (e.g., via <i>\write18</i>). This is powerful but can pose a security risk.<br><br><b>-no-shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the execution of external commands, overriding any enabled defaults. This is the default and recommended for security.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>latex</b> program and its underlying TeX engine.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a summary of command-line usage and options.<br><br>


title: DESCRIPTION
content:
The <b>latex</b> command is a powerful typesetting program that processes <i>.tex</i> source files written in the LaTeX document preparation system. LaTeX, built upon Donald Knuth's TeX engine, is widely used for producing high-quality documents, especially in scientific, technical, and academic fields, due to its advanced capabilities for handling complex mathematical formulas, citations, cross-references, and structured content.<br><br>When you run <b>latex</b> on a <i>.tex</i> file, it compiles the source code, resolves macros, lays out the text, and generates a Device Independent file (<i>.dvi</i>). This <i>.dvi</i> file is an intermediate format that can then be converted into other formats like PostScript (using <b>dvips</b>) or PDF (using <b>dvipdfm</b> or <b>dvipdfmx</b>), or viewed directly with tools like <b>xdvi</b>. Unlike <b>pdflatex</b>, which directly produces PDF, <b>latex</b>'s output requires an extra conversion step, which can be advantageous in workflows that require specific intermediate formats or custom post-processing.


title: CAVEATS
content:
The <b>latex</b> command generates <i>.dvi</i> files, which are not directly viewable or printable without further conversion (e.g., to PostScript or PDF). Users accustomed to modern word processors might find LaTeX's error messages cryptic, requiring familiarity with the LaTeX syntax and log files. The <i>-shell-escape</i> option, while useful for advanced tasks (like generating graphs on the fly), introduces a significant security vulnerability if processing untrusted <i>.tex</i> files, as it allows arbitrary command execution.


title: TYPICAL WORKFLOW
content:
A common workflow involves multiple passes for complex documents: first run <b>latex</b> on your <i>.tex</i> file to generate <i>.aux</i> files (for cross-references, citations); then run <b>bibtex</b> (if using bibliography) and/or <b>makeindex</b> (if using an index); finally, run <b>latex</b> one or two more times to resolve all references and update the table of contents/index. After that, convert the resulting <i>.dvi</i> file to a final format like PDF using <b>dvipdfm</b> or PostScript using <b>dvips</b>.


title: COMMON OUTPUT FILES
content:
When <b>latex</b> processes a <i>.tex</i> file (e.g., <i>document.tex</i>), it generates several auxiliary files in addition to the <i>.dvi</i> output:<br><i>document.dvi</i>: The Device Independent output file.<br><i>document.log</i>: A detailed log of the compilation process, including errors, warnings, and statistics.<br><i>document.aux</i>: An auxiliary file storing information for cross-references, table of contents, and bibliography.<br><i>document.toc</i>: Stores table of contents data.<br><i>document.lof</i>: Stores list of figures data.<br><i>document.lot</i>: Stores list of tables data.<br><i>document.fls</i>: A file list, useful for tracking included files.


title: HISTORY
content:
LaTeX was originally created in the early 1980s by <i>Leslie Lamport</i> as a set of macros for the TeX typesetting program, developed by <i>Donald Knuth</i>. It aimed to simplify the process of writing documents by abstracting away the low-level typesetting commands, allowing authors to focus on content and logical structure rather than visual presentation. The most widely used version today is <i>LaTeX2e</i> (released in 1994), which standardized many features and provided a more robust and extensible framework. Its development has been community-driven, evolving with new packages and tools to meet the demands of diverse publishing needs, solidifying its position as a de-facto standard in academic and scientific publishing.


title: SEE ALSO
content:
pdflatex(1), xelatex(1), lualatex(1), tex(1), dvips(1), dvipdfm(1), xdvi(1), bibtex(1), makeindex(1)


title: PARAMETERS
content:
<b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans up auxiliary files generated during compilation, keeping the main output file (e.g., .pdf, .dvi).<br><br><b>-C</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans up all generated files, including the main output file, reverting the directory to its state before compilation.<br><br><b>-pvc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs in a continuous preview mode. It watches source files for changes and automatically recompiles the document whenever a modification is detected.<br><br><b>-pdf</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces latexmk to use `pdflatex` (or `lualatex`/`xelatex` if specified) for compilation, resulting in a PDF output file.<br><br><b>-ps</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces latexmk to produce a PostScript output file.<br><br><b>-dvi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces latexmk to produce a DVI output file.<br><br><b>-lualatex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs latexmk to use the `lualatex` engine for compilation.<br><br><b>-xelatex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs latexmk to use the `xelatex` engine for compilation.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces latexmk to continue compilation even if errors are encountered during a run, which can be useful for debugging.<br><br><b>-r <rcfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to read instead of the default `.latexmkrc`.<br><br><b>-rules</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints out the compilation rules and dependency information that latexmk uses internally.<br><br><b>-time</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints diagnostic information about the time taken for various compilation steps.<br><br>


title: DESCRIPTION
content:
latexmk is a powerful Perl script designed to completely automate the process of building LaTeX documents. It intelligently determines the correct sequence of commands (like pdflatex, bibtex, makeindex, etc.) and runs them the necessary number of times to resolve all cross-references, citations, and indices. This eliminates the need for users to manually run multiple compilation passes.<br><br>It continuously checks for changes in source files (with the <B>-pvc</B> option) and recompiles as needed, making it ideal for active document development. latexmk supports various output formats including PDF, DVI, and PostScript, and can be configured to use different TeX engines like LuaTeX or XeTeX. It also handles cleaning up auxiliary files, simplifying project management.


title: CAVEATS
content:
Requires a complete TeX distribution (e.g., TeX Live, MiKTeX) to function, as it acts as an orchestrator for TeX compilers and related utilities.<br>Its dependency resolution is highly effective but might not cover extremely unusual or custom build steps without explicit configuration via a <B>latexmkrc</B> file.<br>For continuous compilation (<B>-pvc</B>), file watching capabilities can vary across operating systems; on some, external tools like <I>fswatch</I> might be implicitly or explicitly required for optimal performance.


title: CONFIGURATION FILES
content:
<B>latexmk</B> can be extensively customized using configuration files named <B>.latexmkrc</B> (or <B>latexmkrc</B> on Windows). These files, written in Perl, allow users to define custom commands, specify preferred TeX engines, configure output directories, and override default behaviors. This provides immense flexibility for complex or specialized LaTeX projects.


title: DEPENDENCY TRACKING
content:
A core strength of <B>latexmk</B> lies in its sophisticated dependency tracking. It parses log files and examines auxiliary files generated during compilation to determine if cross-references, bibliographies, indices, or glossaries are out of date. It then automatically triggers subsequent compilation runs with the necessary tools until all dependencies are resolved and the document is stable, ensuring correct output without manual intervention.


title: HISTORY
content:
Developed by John Collins, <B>latexmk</B> emerged to address the repetitive and error-prone nature of manually running multiple LaTeX compilation passes. Its initial public release was around 2004, leveraging Perl to provide a robust, cross-platform solution for LaTeX build automation. Over the years, it has gained widespread adoption due to its intelligent dependency tracking, efficient recompilation logic, and comprehensive support for various TeX engines and tools, becoming a de facto standard for LaTeX project management.


title: PARAMETERS
content:
<b><b>-o</b>, <b>--output</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path for the output file. If omitted, output is sent to standard output (stdout).<br><br><b><b>-u</b>, <b>--unlink</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the original input file(s) after successful processing. Use with caution.<br><br><b><b>--discard-comments</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all LaTeX comments (lines starting with <code>%</code>) from the output.<br><br><b><b>--discard-macros</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes macro definitions (e.g., <code>\newcommand</code>, <code>\def</code>) from the output after they have been expanded.<br><br><b><b>--expand-usepackage</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Expands <code>\usepackage</code> commands by embedding the content of the corresponding `.sty` files directly into the output.<br><br><b><b>--expand-addbibresource</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Expands <code>\addbibresource</code> commands by embedding the content of the referenced `.bib` (BibTeX/BibLaTeX) files into the output.<br><br><b><b>--expand-includegraphics</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Expands <code>\includegraphics</code> commands by embedding the content of the specified graphics files directly into the output. This can result in very large files.<br><br><b><b>--read-sources-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes only the explicitly provided source files, without attempting to expand any <code>\input</code> or <code>\include</code> directives found within them. This is typically for specialized use cases.<br><br><b><b>--empty-comments</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--discard-comments</b>, replaces comments with empty lines instead of removing them completely, preserving line numbering.<br><br><b><b>--full</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A convenience option equivalent to using <b>--discard-comments</b>, <b>--expand-usepackage</b>, <b>--expand-addbibresource</b>, and <b>--expand-includegraphics</b> together.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the command's version information and exits.<br><br>


title: DESCRIPTION
content:
<i>latexpand</i> is a utility designed to flatten LaTeX files by expanding various commands into their contents. It replaces common directives such as <code>\input</code>, <code>\include</code>, <code>\subfile</code>, and <code>\includegraphics</code> with the actual text or binary content of the referenced files. Furthermore, it expands package inclusions (<code>\usepackage</code>) and bibliography resource additions (<code>\addbibresource</code>) by embedding the respective `.sty` and `.bib` file contents. The tool also handles macro definitions like <code>\newcommand</code>, <code>\def</code>, and <code>\let</code>, expanding them where applicable.<br><br>Its primary purpose is to generate a single, self-contained `.tex` file from a multi-file LaTeX project. This flattened output is particularly useful for journal submissions, sharing LaTeX documents without dependencies, or for automated processing tools that require a single input file.


title: CAVEATS
content:
Using the <b>--expand-includegraphics</b> option can embed large binary files directly into the LaTeX output, which will significantly increase the file size and may make the resulting document unwieldy or difficult to manage.<br><br>The <b>--unlink</b> option should be used with extreme caution, as it permanently deletes the original input file(s) after processing. Always ensure you have backups or understand the implications before using this option.


