<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samkeliso Dube</title>
    <description>The latest articles on DEV Community by Samkeliso Dube (@samkeliso_dube).</description>
    <link>https://dev.to/samkeliso_dube</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2945498%2F81b6b026-f86d-4540-9001-bf5c6f60f87f.jpeg</url>
      <title>DEV Community: Samkeliso Dube</title>
      <link>https://dev.to/samkeliso_dube</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samkeliso_dube"/>
    <language>en</language>
    <item>
      <title>Linux Text Editors: Learning Nano, Vi and Vim as a Beginner</title>
      <dc:creator>Samkeliso Dube</dc:creator>
      <pubDate>Mon, 02 Nov 2026 10:21:05 +0000</pubDate>
      <link>https://dev.to/samkeliso_dube/-linux-text-editors-learning-nano-vi-and-vim-as-a-beginner-1n99</link>
      <guid>https://dev.to/samkeliso_dube/-linux-text-editors-learning-nano-vi-and-vim-as-a-beginner-1n99</guid>
      <description>&lt;p&gt;As part of my Linux learning journey, I spent time practising three terminal-based text editors: &lt;strong&gt;Nano, Vi and Vim&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before this exercise, I understood that text editors were used to create and modify files. However, I wanted to understand how they work and why they are useful when managing Linux systems.&lt;/p&gt;

&lt;p&gt;In DevOps, you will often work with configuration files, scripts and application settings. Knowing how to edit files directly from the terminal is therefore an important practical skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;code&gt;Nano&lt;/code&gt; : A beginner-friendly text editor
&lt;/h2&gt;

&lt;p&gt;Nano was the first editor I practised.&lt;/p&gt;

&lt;p&gt;It is straightforward because you can open a file and start typing without switching between editing modes.&lt;/p&gt;

&lt;p&gt;To open a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I practised creating a file, adding text and saving my changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7xq70h9fgaszdzus42p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7xq70h9fgaszdzus42p.png" alt="nano_editor" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some useful Nano shortcuts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + O&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save the file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Confirm the filename&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + X&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exit Nano&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + W&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search within the file&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One thing I learned is that saving and exiting are two separate actions. Pressing &lt;code&gt;Ctrl + O&lt;/code&gt; saves the file, while &lt;code&gt;Ctrl + X&lt;/code&gt; exits the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  2.&lt;code&gt;Vi&lt;/code&gt; : Understanding editing modes
&lt;/h2&gt;

&lt;p&gt;Next, I moved to &lt;code&gt;Vi&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This editor introduced me to an important concept: &lt;strong&gt;editing modes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When &lt;code&gt;vi&lt;/code&gt; opens a file, it starts in Normal (Command) mode. Unlike &lt;code&gt;nano&lt;/code&gt;, you cannot immediately start typing text.&lt;/p&gt;

&lt;p&gt;The two main modes I practised were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Normal mode:&lt;/strong&gt; Used for navigation and executing commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insert mode:&lt;/strong&gt; Used for typing and editing text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Normal Mode (Command Mode)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the mode you start in when opening a file. It is used to navigate through the file and execute commands without directly typing or modifying text.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;h&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Move around the file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete the current line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;yy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Copy the current line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Paste copied text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;u&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Undo the last change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;x&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete the character under the cursor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjfruzlfv4hz4lw0aqg69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjfruzlfv4hz4lw0aqg69.png" alt="vi_editor" width="799" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;code&gt;You can perform these actions without entering Insert Mode.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Insert Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the mode used to type, add and modify the actual contents of a file.&lt;/p&gt;

&lt;p&gt;To enter &lt;strong&gt;Insert Mode&lt;/strong&gt;, press &lt;strong&gt;i&lt;/strong&gt; while in Normal Mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example&lt;/strong&gt;, when editing an Nginx configuration file, you can use Insert Mode to change a port from 80 to 8080, add a configuration directive, or modify an existing line.&lt;/p&gt;

&lt;p&gt;When you finish editing, press &lt;code&gt;esc&lt;/code&gt; to return to &lt;strong&gt;Normal Mode&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faypcjp6bulpz0cijkvtp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faypcjp6bulpz0cijkvtp.png" alt="vi_editor2" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some important commands:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;i&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enter Insert mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Return to Normal mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:w&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:q&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quit if there are no unsaved changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:q!&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quit without saving unsaved changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save and quit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Understanding these commands made working with Vi much easier.&lt;/p&gt;

&lt;p&gt;Remember:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Normal Mode&lt;/strong&gt; = Navigate and execute editing commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insert Mode&lt;/strong&gt; = Type and modify text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vi&lt;/strong&gt; starts in Normal Mode because it allows you to control and manipulate the file before you begin editing its contents.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Vim : Vi Improved
&lt;/h2&gt;

&lt;p&gt;After practising Vi, I installed Vim on my Ubuntu machine.&lt;/p&gt;

&lt;p&gt;Vim stands for &lt;strong&gt;Vi Improved&lt;/strong&gt;. It builds on Vi and provides additional capabilities.&lt;/p&gt;

&lt;p&gt;I checked the installed version using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vim &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My machine reported Vim 9.1.&lt;/p&gt;

&lt;p&gt;I also explored some of its capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Syntax highlighting:&lt;/strong&gt; Displays different code elements in different colours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split windows:&lt;/strong&gt; Allows you to view multiple editing windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code folding:&lt;/strong&gt; Allows you to collapse sections of code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent undo:&lt;/strong&gt; Can preserve undo history between editing sessions when configured.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I created a small Python file to observe syntax highlighting in action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkyx7tqn6mqt6tg6iz8lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkyx7tqn6mqt6tg6iz8lh.png" alt="vsplit" width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why are these editors useful in DevOps?
&lt;/h2&gt;

&lt;p&gt;When managing Linux servers, text editors become useful in everyday tasks.&lt;/p&gt;

&lt;p&gt;For example, you might need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edit an Nginx configuration file.&lt;/li&gt;
&lt;li&gt;Create a Bash script.&lt;/li&gt;
&lt;li&gt;Update application configuration.&lt;/li&gt;
&lt;li&gt;Inspect environment settings.&lt;/li&gt;
&lt;li&gt;Modify service configuration files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may encounter commands such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;vim /etc/nginx/nginx.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens an Nginx configuration file for editing with administrator privileges.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Nano provides a straightforward editing experience.&lt;/li&gt;
&lt;li&gt;Vi introduced me to editing modes and command-based operations.&lt;/li&gt;
&lt;li&gt;Vim builds on Vi with additional capabilities.&lt;/li&gt;
&lt;li&gt;Saving and exiting are not always the same action.&lt;/li&gt;
&lt;li&gt;Terminal-based editing is a useful skill when working with Linux servers.&lt;/li&gt;
&lt;li&gt;Practical testing helps us understand differences instead of relying on assumptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning Linux one concept and one practical exercise at a time.&lt;/p&gt;




&lt;h1&gt;
  
  
  Linux #DevOps #Vim #LinuxAdministration #LearningInPublic
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>vim</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Getting to Know the Linux Filesystem as a DevOps Beginner</title>
      <dc:creator>Samkeliso Dube</dc:creator>
      <pubDate>Sat, 24 Oct 2026 09:47:50 +0000</pubDate>
      <link>https://dev.to/samkeliso_dube/getting-to-know-the-linux-filesystem-as-a-devops-beginner-3g79</link>
      <guid>https://dev.to/samkeliso_dube/getting-to-know-the-linux-filesystem-as-a-devops-beginner-3g79</guid>
      <description>&lt;p&gt;While working on my EC2 instance, I kept coming across paths like &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/var/log&lt;/code&gt;, and &lt;code&gt;/usr/share&lt;/code&gt;. I wanted to understand what these directories do and when I might need them while managing a Linux server.&lt;/p&gt;

&lt;p&gt;To make things easier to understand, I started thinking of the Linux filesystem as a house.&lt;/p&gt;

&lt;p&gt;Imagine &lt;code&gt;/&lt;/code&gt; (the root directory) as the entire house. Inside the house, there are different rooms, each with its own purpose. You wouldn't keep everything in one room, right?&lt;/p&gt;

&lt;p&gt;Linux works in a similar way. It organizes files into directories, and each directory has a particular purpose.&lt;/p&gt;

&lt;p&gt;Let's explore the directories I found on my EC2 instance and learn what they do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbtlpkjqcmedag8xzebcb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbtlpkjqcmedag8xzebcb.jpg" alt="Linux File System" width="800" height="914"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux Filesystem Hierarchy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. &lt;code&gt;/&lt;/code&gt;  The Root Directory&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's start with /, the root directory.&lt;/p&gt;

&lt;p&gt;Remember our house analogy? If Linux were a house, &lt;code&gt;/&lt;/code&gt; would represent the entire house. All the other directories, such as &lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/var&lt;/code&gt;, and &lt;code&gt;/usr&lt;/code&gt;, are located under it.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/&lt;/code&gt; is the starting point of the filesystem hierarchy. Every file and directory has a place within this structure, even when files are stored on different disks or filesystems.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. &lt;code&gt;/bin&lt;/code&gt;  Essential Commands&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/bin&lt;/code&gt; as a cupboard in our house where we keep the basic tools we use every day.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/bin&lt;/code&gt; contains essential commands that help us perform everyday tasks, such as listing files, copying files, and displaying file contents.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; lists files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp&lt;/code&gt;  copies files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt;  displays the contents of a file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. &lt;code&gt;/boot&lt;/code&gt; Boot Files&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/boot&lt;/code&gt; as the part of our house that holds what we need to get the house up and running.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/boot&lt;/code&gt; contains files needed to start the operating system. These may include the Linux kernel and files used by the bootloader, which helps the computer load Linux when it starts.&lt;/p&gt;

&lt;p&gt;When you switch on a computer, it needs to load the operating system before you can start using it. The files in &lt;code&gt;/boot&lt;/code&gt; help make that process possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. &lt;code&gt;/dev&lt;/code&gt;  Device Files&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of /dev as the place in our house where we find things like the lights, taps, and other equipment we use.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/dev&lt;/code&gt; contains special files that provide a way for the operating system and applications to interact with devices and certain system resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/dev/sda&lt;/code&gt;  may represent a disk device.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/dev/null&lt;/code&gt;  discards anything sent to it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/dev/tty&lt;/code&gt;  represents the terminal associated with a process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not ordinary files like a document or a picture. They provide interfaces for working with devices or system resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. &lt;code&gt;/etc&lt;/code&gt;  Configuration Files&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/etc&lt;/code&gt; as the place in our house where we keep the instructions for how things should work.&lt;/p&gt;

&lt;p&gt;In Linux, /etc` contains configuration files that control how the system and its applications behave.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; contains settings for the SSH server.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc/hostname&lt;/code&gt; contains the system's hostname.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. &lt;code&gt;/home&lt;/code&gt;  Users' Personal Directories&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/home&lt;/code&gt; as the bedrooms in our house, where each person keeps their personal belongings.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/home&lt;/code&gt; contains personal directories for regular users. Each user can store their own files, documents, and projects there.&lt;/p&gt;

&lt;p&gt;For example, if a user named &lt;code&gt;sam&lt;/code&gt; has an account on the system, their personal directory might be &lt;code&gt;/home/sam&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. &lt;code&gt;/lib&lt;/code&gt;  Essential Libraries&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/lib&lt;/code&gt; as a cupboard where we keep the small parts that help our tools work.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/lib&lt;/code&gt; contains essential libraries that programs and commands need to run. A library is a collection of ready-made code that a program can use instead of having to do everything from scratch.&lt;/p&gt;

&lt;p&gt;For example, a program may need a library to perform certain operations. Without the required library, the program might fail to run.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;8. &lt;code&gt;/media&lt;/code&gt;  Removable Devices&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/media&lt;/code&gt; as the place near the entrance of our house where we connect things we bring from outside, like a USB stick.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/media&lt;/code&gt; is commonly used as a place to access removable devices, such as USB drives, when they are connected to the computer.&lt;/p&gt;

&lt;p&gt;For example, when you plug a USB drive into a Linux computer, the system may make its files accessible through a directory under &lt;code&gt;/media&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9. &lt;code&gt;/mnt&lt;/code&gt;  Temporary Mount Point&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/mnt&lt;/code&gt; as a temporary place in our house where we put something when we need to use it for a while.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/mnt&lt;/code&gt; is commonly used as a place to temporarily attach another filesystem so that its files can be accessed.&lt;/p&gt;

&lt;p&gt;For example, a system administrator might mount an additional disk at &lt;code&gt;/mnt&lt;/code&gt; to access its files.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;10. &lt;code&gt;/opt&lt;/code&gt;  Optional Software&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/opt&lt;/code&gt; as a separate room in our house where we keep additional things we choose to bring in.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/opt&lt;/code&gt; is commonly used to store additional software, especially applications that are installed separately from the software normally provided by the system.&lt;/p&gt;

&lt;p&gt;For example, a third-party application might place its files inside &lt;code&gt;/opt&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11. &lt;code&gt;/proc&lt;/code&gt; Process and System Information&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/proc&lt;/code&gt; as a noticeboard in our house that shows us what is happening inside.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/proc&lt;/code&gt; provides information about running processes and the system itself. The files you see here are virtual files, meaning they are generated by the kernel rather than stored as ordinary files on a disk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/proc/cpuinfo&lt;/code&gt;  shows information about the CPU.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/proc/meminfo&lt;/code&gt;  shows information about memory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/proc/1/&lt;/code&gt;  contains information about the process with process ID 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;12. &lt;code&gt;/root&lt;/code&gt; The Root User's Home Directory&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/root&lt;/code&gt; as the private bedroom of the person in charge of our house.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/root&lt;/code&gt; is the home directory of the root user, which is the system's administrator account. It is where the root user can store personal files and other items.&lt;/p&gt;

&lt;p&gt;One important thing to remember is that &lt;code&gt;/root&lt;/code&gt; and &lt;code&gt;/&lt;/code&gt; are different:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/&lt;/code&gt; is the starting point of the entire Linux filesystem.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/root&lt;/code&gt; is the home directory belonging to the root user.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;13. &lt;code&gt;/run&lt;/code&gt;  Runtime Information&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/run&lt;/code&gt; as a noticeboard in our house where we keep information about what is happening right now.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/run&lt;/code&gt; stores temporary system information created since the system started. This information helps programs and services keep track of their current activities.&lt;/p&gt;

&lt;p&gt;For example, Linux may store information about running services, process IDs, and communication sockets here.&lt;/p&gt;

&lt;p&gt;Unlike &lt;code&gt;/var&lt;/code&gt;, which can hold data that remains between reboots, the contents of &lt;code&gt;/run&lt;/code&gt; are temporary and are generally cleared when the system restarts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;14. &lt;code&gt;/sbin&lt;/code&gt; System Administration Commands&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/sbin&lt;/code&gt; as a cupboard where we keep tools used to maintain and repair our house.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/sbin&lt;/code&gt; traditionally contains commands used for system administration, such as managing disks, checking filesystems, and maintaining the system.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;fsck&lt;/code&gt; checks and can repair filesystems.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reboot&lt;/code&gt;  restarts the system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On many modern Linux systems, &lt;code&gt;/sbin&lt;/code&gt; is a symbolic link to &lt;code&gt;/usr/sbin&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;15. &lt;code&gt;/srv&lt;/code&gt; Data for Services&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/srv&lt;/code&gt; as a room in our house where we keep things that we provide to visitors.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/srv&lt;/code&gt; is intended to hold data served by services running on the system. For example, a server might store files here that it makes available to users over a network.&lt;/p&gt;

&lt;p&gt;The exact contents depend on how the system is configured. Not every Linux server uses &lt;code&gt;/srv&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;16. &lt;code&gt;/sys&lt;/code&gt; System and Device Information&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/sys&lt;/code&gt; as a noticeboard in our house that tells us about the equipment we have and how it is connected.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/sys&lt;/code&gt; provides information about devices, drivers, and parts of the kernel. Like &lt;code&gt;/proc&lt;/code&gt;, it contains virtual files rather than ordinary files stored on disk.&lt;/p&gt;

&lt;p&gt;For example, Linux can use &lt;code&gt;/sys&lt;/code&gt; to expose information about storage devices and network interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;17. &lt;code&gt;/tmp&lt;/code&gt; Temporary Files&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/tmp&lt;/code&gt; as a table in our house where we put things we need for a short time.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/tmp&lt;/code&gt; is used to store temporary files created by programs and users while they work.&lt;/p&gt;

&lt;p&gt;For example, an application might create a temporary file while processing information and no longer need it afterward.&lt;/p&gt;

&lt;p&gt;Files in &lt;code&gt;/tmp&lt;/code&gt; may be deleted automatically, including during a system reboot, depending on how the system is configured. Therefore, it is not a good place to keep important files permanently.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;18. &lt;code&gt;/usr&lt;/code&gt; Programs and Shared Resources&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/usr&lt;/code&gt; as a part of our house where we keep many of the tools and resources we use.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/usr&lt;/code&gt; contains many programs, libraries, and shared files used by the system and its applications.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/usr/bin&lt;/code&gt;  contains many commands and programs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/usr/lib&lt;/code&gt; contains libraries used by programs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/usr/share&lt;/code&gt;  contains shared files, such as documentation and other resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I explored my Amazon Linux EC2 instance, I also came across &lt;code&gt;/usr/share/nginx/html/&lt;/code&gt; in the Nginx logs. On my instance, this was the directory Nginx was trying to access for website files.&lt;/p&gt;

&lt;p&gt;The web root can vary depending on the Nginx configuration. For example, some Ubuntu setups commonly use &lt;code&gt;/var/www/html/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;19. &lt;code&gt;/var&lt;/code&gt; Variable Data&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of &lt;code&gt;/var&lt;/code&gt; as a storage room in our house where we keep things that change or grow over time.&lt;/p&gt;

&lt;p&gt;In Linux, &lt;code&gt;/var&lt;/code&gt; contains data that programs and services create or update while the system is running.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/var/log&lt;/code&gt; stores log files that help us understand what is happening on the system.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/var/lib&lt;/code&gt; stores data that applications and services need to keep.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/var/cache&lt;/code&gt; stores temporary data that can be reused to make things faster.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/var/tmp&lt;/code&gt;  stores temporary files that may need to remain available longer than files in &lt;code&gt;/tmp&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Understanding the Linux Filesystem Matters in DevOps
&lt;/h2&gt;

&lt;p&gt;As I continue learning Linux and working with cloud servers, understanding the filesystem helps me know where to look when I need to investigate an issue.&lt;/p&gt;

&lt;p&gt;For example, if I need to check configuration settings, I know to start with &lt;code&gt;/etc&lt;/code&gt;. If I want to investigate logs, &lt;code&gt;/var/log&lt;/code&gt; is a useful place to look. If I need to understand how a program or service is running, directories such as &lt;code&gt;/proc&lt;/code&gt; can provide helpful information.&lt;/p&gt;

&lt;p&gt;I'm learning that working with Linux isn't just about memorizing commands. It's also about understanding how the system is organized and knowing where to look when something goes wrong.&lt;/p&gt;

&lt;p&gt;I'm still learning, and exploring these directories on my EC2 instance has helped me connect Linux concepts with practical experience.&lt;/p&gt;

&lt;p&gt;One step at a time, one directory at a time.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #devops #beginners #aws
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>devops</category>
      <category>aws</category>
    </item>
    <item>
      <title>Linux Architecture for Beginners: Understanding the Layers Behind the Commands</title>
      <dc:creator>Samkeliso Dube</dc:creator>
      <pubDate>Sat, 17 Oct 2026 07:12:42 +0000</pubDate>
      <link>https://dev.to/samkeliso_dube/linux-architecture-for-beginners-understanding-the-layers-behind-the-commands-1kdd</link>
      <guid>https://dev.to/samkeliso_dube/linux-architecture-for-beginners-understanding-the-layers-behind-the-commands-1kdd</guid>
      <description>&lt;p&gt;When I started learning Linux, I wanted to understand what it is and why it is important in DevOps.&lt;/p&gt;

&lt;p&gt;After exploring the basics, my next step was to understand &lt;strong&gt;Linux architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We often use Linux commands to create directories, manage files, install software, and check services. But have you ever wondered what happens behind the scenes when you type a command into the terminal?&lt;/p&gt;

&lt;p&gt;In this article, I'll explain the basic layers of Linux architecture and how they work together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Linux Architecture?
&lt;/h2&gt;

&lt;p&gt;Linux architecture describes how the different components of a Linux system work together to make the operating system function.&lt;/p&gt;

&lt;p&gt;These components have different responsibilities. Some manage hardware resources, while others allow users to interact with the system and run applications.&lt;/p&gt;

&lt;p&gt;For beginners, we can understand Linux architecture through four main layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hardware&lt;/li&gt;
&lt;li&gt;Kernel&lt;/li&gt;
&lt;li&gt;Shell and system utilities&lt;/li&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3b4fpt99jtd24xra2gu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3b4fpt99jtd24xra2gu.png" alt="linux-Architecture" width="767" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's explore each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Hardware: The Physical Resources
&lt;/h2&gt;

&lt;p&gt;Hardware refers to the physical components of a computer.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU:&lt;/strong&gt; Executes instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; Holds data and programs that are currently in use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; Stores the operating system, applications, and files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network interface:&lt;/strong&gt; Allows the computer to communicate over a network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Linux needs to manage these resources so that applications can run properly.&lt;/p&gt;

&lt;p&gt;For example, when you open a program, it needs memory and CPU time. Linux helps manage access to these resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Kernel: The Core of Linux
&lt;/h2&gt;

&lt;p&gt;The kernel is the core component of the Linux operating system.&lt;/p&gt;

&lt;p&gt;It manages the computer's resources and provides the interface between software and hardware.&lt;/p&gt;

&lt;p&gt;Some of its responsibilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Process management:&lt;/strong&gt; Managing running programs and their execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory management:&lt;/strong&gt; Allocating and managing memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device management:&lt;/strong&gt; Coordinating access to hardware devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filesystem management:&lt;/strong&gt; Supporting access to files and storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking:&lt;/strong&gt; Providing networking capabilities for communication between computers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, when you run a command that reads a file, the program requests access to that file through operating-system interfaces. The kernel helps manage the underlying operations.&lt;/p&gt;

&lt;p&gt;As a beginner, remember this: &lt;strong&gt;the kernel helps software use the computer's resources safely and efficiently.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Shell and System Utilities
&lt;/h2&gt;

&lt;p&gt;The shell allows us to interact with the operating system by entering commands.&lt;/p&gt;

&lt;p&gt;On Ubuntu, a common shell is Bash.&lt;/p&gt;

&lt;p&gt;For example, when I open my terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command prints the path of my current working directory.&lt;/p&gt;

&lt;p&gt;When I type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It lists the files and directories in that location.&lt;/p&gt;

&lt;p&gt;Other useful commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt;  changes the current directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt;  creates a directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt;  displays the contents of a file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These commands are provided by system utilities or other programs, and the shell helps interpret and execute the commands we enter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the Terminal the Same as the Shell?
&lt;/h3&gt;

&lt;p&gt;Not exactly.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;terminal&lt;/strong&gt; is the interface where we enter and see text. The &lt;strong&gt;shell&lt;/strong&gt; is the program that interprets the commands we type.&lt;/p&gt;

&lt;p&gt;Think of the terminal as the place where you communicate and the shell as the program that understands your instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Applications
&lt;/h2&gt;

&lt;p&gt;Applications are programs that perform tasks for users or other software.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nginx, a web server.&lt;/li&gt;
&lt;li&gt;MySQL, a database management system.&lt;/li&gt;
&lt;li&gt;Docker, a platform for running applications in containers.&lt;/li&gt;
&lt;li&gt;Text editors and browsers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Applications rely on operating-system services and resources to do their work.&lt;/p&gt;

&lt;p&gt;For example, Nginx can serve web pages to visitors. Linux provides the networking and other system resources that Nginx needs to operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do These Layers Work Together?
&lt;/h2&gt;

&lt;p&gt;Let's use a simple example.&lt;/p&gt;

&lt;p&gt;Imagine that I open a Linux terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is a simplified explanation of what happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I enter the command in the terminal.&lt;/li&gt;
&lt;li&gt;The shell interprets the command and runs the &lt;code&gt;ls&lt;/code&gt; program.&lt;/li&gt;
&lt;li&gt;The program requests information about the directory.&lt;/li&gt;
&lt;li&gt;The kernel helps provide access to the filesystem and the required information.&lt;/li&gt;
&lt;li&gt;The program displays the results in the terminal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This example shows that even a simple command relies on different components working together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Do Daemons Fit Into Linux Architecture?
&lt;/h2&gt;

&lt;p&gt;After exploring the main layers of Linux architecture, I wanted to understand where background services fit into the picture.&lt;/p&gt;

&lt;p&gt;The kernel manages system resources, while applications use those resources to perform different tasks. However, not everything on a Linux system requires a user to open a terminal and run a command.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;daemons&lt;/strong&gt; come in.&lt;/p&gt;

&lt;p&gt;A daemon is a process that runs in the background to provide a service or perform tasks. Daemons rely on the Linux kernel to access system resources and carry out their work.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sshd&lt;/code&gt; handles incoming SSH connections.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cron&lt;/code&gt; runs scheduled tasks.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nginx&lt;/code&gt; can run in the background to serve web pages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To explore this practically, I checked the status of the &lt;code&gt;cron&lt;/code&gt; service on my Ubuntu system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl status cron
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output showed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Active: active (running)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This told me that the &lt;code&gt;cron&lt;/code&gt; service was running at the time I checked it.&lt;/p&gt;

&lt;p&gt;This helped me connect the theory to practice. Daemons are not a separate architectural layer; they are background processes that rely on the kernel and other system components to perform their tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does this matter in DevOps?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When an application or service fails on a Linux server, knowing how to check its status and understand how background processes work gives us a starting point for troubleshooting.&lt;/p&gt;

&lt;p&gt;I'm learning that Linux is not just about the commands we enter. It's also about understanding the processes and services working behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Today, I explored Linux architecture and learned how hardware, the kernel, the shell, system utilities, and applications work together.&lt;/p&gt;

&lt;p&gt;I also explored daemons and how background services help a Linux system perform tasks without requiring constant interaction from the user.&lt;/p&gt;

&lt;p&gt;I'm beginning to understand that building a strong DevOps foundation means knowing not just &lt;em&gt;which command to run&lt;/em&gt;, but also &lt;em&gt;what happens behind the scenes&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is another step in my journey of rebuilding my DevOps knowledge, one concept at a time.&lt;/p&gt;

&lt;p&gt;If you're also learning Linux, I'd love to hear: **Which Linux concept took you some time to understand when you first started?&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #DevOps #CloudEngineering #LearningInPublic
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>linux</category>
    </item>
    <item>
      <title>Starting My DevOps Learning Journey: Understanding Linux</title>
      <dc:creator>Samkeliso Dube</dc:creator>
      <pubDate>Fri, 16 Oct 2026 09:01:42 +0000</pubDate>
      <link>https://dev.to/samkeliso_dube/starting-my-devops-learning-journey-understanding-linux-3ekf</link>
      <guid>https://dev.to/samkeliso_dube/starting-my-devops-learning-journey-understanding-linux-3ekf</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello everyone! 👋&lt;/p&gt;

&lt;p&gt;I'm starting to share my DevOps learning journey here on Dev.to.&lt;/p&gt;

&lt;p&gt;I've been learning about cloud engineering and DevOps, and I'm currently revisiting the fundamentals to strengthen my understanding of the technologies behind modern applications and infrastructure.&lt;/p&gt;

&lt;p&gt;As I continue learning, I want to document what I discover, share concepts in a beginner-friendly way, and learn from others in the tech community.&lt;/p&gt;

&lt;p&gt;For my first article, I'm starting with Linux.&lt;/p&gt;

&lt;p&gt;What is Linux? Why do we use it? What are Linux distributions? And why is Linux an important skill for anyone learning DevOps?&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What Is Linux?
&lt;/h2&gt;

&lt;p&gt;Linux is an open-source operating system kernel.&lt;/p&gt;

&lt;p&gt;Let's break that down.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;operating system (OS)&lt;/strong&gt; is software that manages a computer's resources and allows applications to run. Examples include Windows, macOS, and Linux-based operating systems.&lt;/p&gt;

&lt;p&gt;The **kernel **is the core part of an operating system. It helps software communicate with the computer's hardware and manages resources such as the CPU and memory.&lt;/p&gt;

&lt;p&gt;For example, when you open an application, it needs memory and processing power to work. The kernel helps manage those resources.&lt;/p&gt;

&lt;p&gt;Linus Torvalds began developing Linux in 1991. Linux became open-source software, allowing developers to study its source code, modify it, and share it according to its licence.&lt;/p&gt;

&lt;p&gt;Over time, developers combined the Linux kernel with other software and tools to build complete operating systems for different purposes.&lt;/p&gt;

&lt;p&gt;These are called &lt;strong&gt;Linux distributions&lt;/strong&gt;, also known as Linux distros.&lt;/p&gt;

&lt;p&gt;Let's look at some popular distributions and what they are used for.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What Are Linux Distributions?
&lt;/h2&gt;

&lt;p&gt;A Linux distribution combines the Linux kernel with other software and tools to create a usable operating system.&lt;/p&gt;

&lt;p&gt;Think of distributions as different versions of Linux, each designed to meet different needs.&lt;/p&gt;

&lt;p&gt;Here are some popular examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Popular Linux distributions and their uses
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Ubuntu&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu is a popular Linux distribution that is relatively easy to learn, great for beginners&lt;/li&gt;
&lt;li&gt;It is used on personal computers, servers, and cloud platforms such as AWS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Debian&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debian is a Linux distribution known for its stability.&lt;/li&gt;
&lt;li&gt;It is commonly used for servers and can also be used on personal computers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Red Hat Enterprise Linux (RHEL)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RHEL is designed for businesses that need a professionally supported operating system.&lt;/li&gt;
&lt;li&gt;It is used to run business applications and servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Fedora&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fedora often introduces newer software and technologies.&lt;/li&gt;
&lt;li&gt;It is used by developers and people who want to explore modern Linux features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Amazon Linux&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Linux is provided by AWS and is designed for use in the AWS cloud.&lt;/li&gt;
&lt;li&gt;For example, you can use it to run applications on an Amazon EC2 virtual server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Kali Linux&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kali Linux includes tools used for security testing and ethical hacking.&lt;/li&gt;
&lt;li&gt;Security professionals use it to test systems they have permission to assess&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Which distribution should a beginner start with?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ubuntu is a good starting point because it is beginner-friendly and has plenty of learning resources. As you progress in DevOps, you can explore Amazon Linux and other distributions.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Why Do We Use Linux?
&lt;/h2&gt;

&lt;p&gt;You might be wondering, why do so many people and companies use Linux?&lt;/p&gt;

&lt;p&gt;Linux has several advantages that make it useful for everyday computing, servers, and cloud infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open source&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux is open source, meaning people can study its source code, modify it, and share it according to its licence.&lt;/li&gt;
&lt;li&gt;This allows developers around the world to contribute to its development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stability and reliability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imagine a website that needs to be available day and night. The server running that website needs an operating system that can support it reliably.&lt;/li&gt;
&lt;li&gt;Linux is widely used on servers because it can run for long periods when properly configured and maintained.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security and permissions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux allows administrators to control who can access files and perform certain actions.&lt;/li&gt;
&lt;li&gt;For example, not every user should be allowed to change important system files. Linux permissions help control that access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Efficient resource management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux can run on small devices, personal computers, and powerful servers.&lt;/li&gt;
&lt;li&gt;It can also run without a graphical desktop, which is useful when managing servers remotely reducing unnecessary overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imagine having to perform the same task on 20 servers manually. That could take a lot of time.&lt;/li&gt;
&lt;li&gt;Linux provides tools such as Bash that allow you to write scripts to automate repetitive tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloud compatibility&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud platforms such as AWS and Azure allow you to create virtual machines running Linux.&lt;/li&gt;
&lt;li&gt;This means you can use Linux to host websites, run applications, and manage cloud infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
These advantages make Linux useful across many areas of technology. But why is it particularly important for DevOps engineers?&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why Do DevOps Engineers Need Linux?
&lt;/h2&gt;

&lt;p&gt;DevOps brings software development and IT operations together to help teams build, test, release, and operate software more reliably.&lt;/p&gt;

&lt;p&gt;Linux is important in this work because many applications and infrastructure tools run on Linux-based systems.&lt;/p&gt;

&lt;p&gt;Let's look at some practical examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Managing servers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A DevOps engineer may need to connect to a remote Linux server, check disk space, inspect files, or investigate why an application is not responding.&lt;/p&gt;

&lt;p&gt;For example, these Linux commands are useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; - lists files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt; - shows disk space usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;free -h&lt;/code&gt;- shows memory usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning these commands helps you understand what is happening on a server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Troubleshooting applications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine that you deploy an application to a Linux server, but the application is not responding.&lt;/p&gt;

&lt;p&gt;You may need to check whether the application is running, inspect its logs, check the port it uses, verify file permissions, or investigate network connectivity.&lt;/p&gt;

&lt;p&gt;Linux knowledge helps you investigate these problems instead of guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Writing automation scripts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps engineers use tools such as Bash to automate repetitive tasks.&lt;/p&gt;

&lt;p&gt;For example, you could write a script to check whether a service is running or automate part of an application deployment.&lt;/p&gt;

&lt;p&gt;Instead of repeating the same commands manually, you can create a reusable process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Working with Docker and containers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker is used to package applications and their dependencies into containers.&lt;/p&gt;

&lt;p&gt;Many containers use Linux-based environments. Understanding Linux processes, filesystems, permissions, and networking helps you troubleshoot container-related problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Working with Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes manages containerised applications across a group of machines called a cluster.&lt;/p&gt;

&lt;p&gt;Many Kubernetes worker nodes run Linux. Linux knowledge is useful when investigating application failures, resource problems, and networking issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Managing cloud infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you create a Linux virtual machine on AWS or Azure, you may need to connect using SSH, install software, configure services, and secure the machine.&lt;/p&gt;

&lt;p&gt;Cloud platforms provide the infrastructure, but Linux knowledge helps you manage the operating system running on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Using CI/CD pipelines&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous integration and continuous delivery (CI/CD) pipelines automate activities such as building, testing, and deploying software.&lt;/li&gt;
&lt;li&gt;Many pipeline jobs execute shell commands in Linux environments. Understanding Linux makes it easier to read pipeline scripts, diagnose failed jobs, and automate deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. Working with Terraform and Ansible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Terraform and Ansible are tools commonly used in DevOps.&lt;/p&gt;

&lt;p&gt;Terraform helps provision infrastructure, such as creating a virtual machine. Ansible can then configure that machine by installing software and setting up services.&lt;/p&gt;

&lt;p&gt;Understanding Linux helps you troubleshoot the systems these tools manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key lesson&lt;/strong&gt;: Linux is not just about learning commands. It helps you understand the systems on which applications run and gives you practical skills for troubleshooting and automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Linux is more than a collection of commands. It is a foundation for understanding how computers run applications, manage resources, and support modern infrastructure.&lt;/p&gt;

&lt;p&gt;As I continue my DevOps learning journey, I'm starting with the fundamentals because understanding the foundation makes it easier to understand the tools built on top of it.&lt;/p&gt;

&lt;p&gt;My goal is not simply to memorise commands. I want to understand what they do, when to use them, and how they help solve real-world problems.&lt;/p&gt;

&lt;p&gt;This is just the beginning, and I look forward to sharing more as I continue learning.&lt;/p&gt;

&lt;p&gt;One step at a time, one concept at a time. 🌱&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Linux distribution did you start with, and which one do you use today?&lt;/strong&gt; I'd love to learn from your experience.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #DevOps #CloudComputing #LinuxForBeginners
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>cloudcomputing</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
