<?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: Grace N Muchiri</title>
    <description>The latest articles on DEV Community by Grace N Muchiri (@gracenimimi).</description>
    <link>https://dev.to/gracenimimi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3848816%2F50aaa407-bdfd-4527-bc63-f68762562b8d.png</url>
      <title>DEV Community: Grace N Muchiri</title>
      <link>https://dev.to/gracenimimi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gracenimimi"/>
    <language>en</language>
    <item>
      <title>Data Engineer's Guide to Linux: Why It Is Your Secret Weapon</title>
      <dc:creator>Grace N Muchiri</dc:creator>
      <pubDate>Mon, 06 Apr 2026 06:43:33 +0000</pubDate>
      <link>https://dev.to/gracenimimi/data-engineers-guide-to-linux-why-it-is-your-secret-weapon-34ce</link>
      <guid>https://dev.to/gracenimimi/data-engineers-guide-to-linux-why-it-is-your-secret-weapon-34ce</guid>
      <description>&lt;p&gt;If you are stepping into the world of data engineering, you will quickly realize that if SQL and Python are the languages spoken, then Linux is the room they are spoken in. Most modern infrastructure, from cloud servers to Docker containers run on Linux. This read is here to walk you through why Linux matters and help you manage the flow of data by navigating the terminal.&lt;/p&gt;

&lt;p&gt;Data engineering involves processing large amounts of data. While Windows and Mac are great for local development, they carry bloat. (GUI updates &amp;amp; background updates which enable smooth rendering of desktop icons). Since Linux is headless, it means that 100% of RAM &amp;amp; CPU goes towards processing queries &amp;amp; scripts, not rendering desktop icons. Other advantages of working with Linux include:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It gives you granular control over memory and CPU which is important when working with terabytes of data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automation. It has crontab which is the Linux scheduler. Here you can script repetitive tasks like moving files or checking logs using Bash&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is a cloud standard. AWS, Azure and Google Cloud are built on Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It has Security Features&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Linux as an operating system has four mandates&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hardware management&lt;/li&gt;
&lt;li&gt;File system management&lt;/li&gt;
&lt;li&gt;Process management&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this article we will briefly look at commands used in each of the four mandates&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware Management
&lt;/h2&gt;

&lt;p&gt;The commands for this mandate help you explore the advantage of "granular control over memory and CPU." &lt;/p&gt;

&lt;p&gt;The commands for this mandate help you explore the advantage of  “granular control over memory and CPU”. Below are a list of some of the commands used and what they achieve&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;lscpu&lt;/code&gt; - This displays info about the architecture of your CPU&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;free -h&lt;/code&gt;  - This shows how much space is available in your CPU. The -h flag stands for human readable (GB instead of bytes)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lsblk&lt;/code&gt; – Lists all blocked devices attached to the system&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt; – shows how much disk space is used Vs. what is available on mounted devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Process Management
&lt;/h2&gt;

&lt;p&gt;Everytime you run a script or python query, Linux interpret that as a process. Managing these processes ensures that one “stuck script” doesn’t lead to crashing of the whole server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ps aux&lt;/code&gt; – Shows a snapshot of every running process on the system&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;top&lt;/code&gt; or &lt;code&gt;htop&lt;/code&gt; – this is the primary command used to understand why your pipeline is slow. It gives you a colourful interactive list of what is running. Its is more like task manager in your windows&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill&amp;lt;PID&amp;gt;&lt;/code&gt; - Stops a hanging process or one that is consuming too many resources using its process ID (PID)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;amp;&lt;/code&gt; - adding this to your script ensures it is running in the background so you can keep usng your terminal ( python3 script.py &amp;amp;)&lt;/li&gt;
&lt;li&gt; Jobs – lists the processes you have running in the background of your current session&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;Linux is a multi-user system. Security and permission features ensure that user A cannot accidentally delete or alter files, folders, or even pipelines for user B. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;chmod&lt;/code&gt; – This command changes file permissions to show who can read, write, and execute&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chown&lt;/code&gt; – this command changes the ownership of the files or folder&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;passwd&lt;/code&gt; – allows you to make changes to your password&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whoami&lt;/code&gt; – this is a quick way to check which user account you are currently running on&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;history&lt;/code&gt; – shows a list of recently executed commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  File System Management
&lt;/h2&gt;

&lt;p&gt;File management involves mainly managing workflow. In this section, we will learn how to manage files: opening them, reading them, moving them from one folder to another, and even giving permissions to the files. We will use screenshots as a practical illustration. &lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting to the cloud server
&lt;/h3&gt;

&lt;p&gt;In this case, we use &lt;code&gt;ssh root@yourIpAdress&lt;/code&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.amazonaws.com%2Fuploads%2Farticles%2Fynfpc2l3xgpkwgyooeq8.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.amazonaws.com%2Fuploads%2Farticles%2Fynfpc2l3xgpkwgyooeq8.png" alt="Connecting to the cloud server" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding out which user account is running
&lt;/h3&gt;

&lt;p&gt;Here, you use the command &lt;code&gt;whoami&lt;/code&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.amazonaws.com%2Fuploads%2Farticles%2F0elkfk6m00r2an48aeuh.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.amazonaws.com%2Fuploads%2Farticles%2F0elkfk6m00r2an48aeuh.png" alt="Finding out which user account is running" width="297" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding a user successfully
&lt;/h3&gt;

&lt;p&gt;Since Linux is a multi-user this is how to add users&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.amazonaws.com%2Fuploads%2Farticles%2Fxwbfaiclnvsz1grpdwb1.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.amazonaws.com%2Fuploads%2Farticles%2Fxwbfaiclnvsz1grpdwb1.png" alt="Adding a user successfully" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Switching user to the newly created user
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fjbpkot4t20k67c5a3g9q.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.amazonaws.com%2Fuploads%2Farticles%2Fjbpkot4t20k67c5a3g9q.png" alt="Switching user to the newly created user" width="667" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a new folder in the homepage of the new user account
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fiv1fmik6qx093ocqinec.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.amazonaws.com%2Fuploads%2Farticles%2Fiv1fmik6qx093ocqinec.png" alt="Creating a new folder in the homepage of the new user account" width="661" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating subfolders
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Foh4mrs1osszmf2n0m8ns.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.amazonaws.com%2Fuploads%2Farticles%2Foh4mrs1osszmf2n0m8ns.png" alt="Creating subfolders" width="772" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating files in the subfolders
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fg3u6pbi9s984klxnmc14.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.amazonaws.com%2Fuploads%2Farticles%2Fg3u6pbi9s984klxnmc14.png" alt="Creating files in the subfolders" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Changing file permission to make it executable
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fngodv3clylh3zu17n0dp.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.amazonaws.com%2Fuploads%2Farticles%2Fngodv3clylh3zu17n0dp.png" alt=" Changing file permission to make it executable" width="800" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a backup file in a different folder
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2F240zc7z46brr7xmz8u5s.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.amazonaws.com%2Fuploads%2Farticles%2F240zc7z46brr7xmz8u5s.png" alt="Creating backup file in a different folder" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Moving files from one folder to another
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fu1ji8b5usjqkxg6ioaam.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.amazonaws.com%2Fuploads%2Farticles%2Fu1ji8b5usjqkxg6ioaam.png" alt="Moving files from one folder to another" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the images above, you have observed some of the most common file navigation commands used to create directories, move between directories, explore directories, view changes, and change permissions, etc. Some of the basic commands include:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ssh&lt;/code&gt; - used to connect to a cloud server&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; - change directory, move to a directory within the current working directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; - print current working directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt; - make a directory/folder&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;su&lt;/code&gt; - switch user&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whoami&lt;/code&gt; - gives you the current user&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; - list the files and folders in the current directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls -l&lt;/code&gt; - list the files and folders in the current directory and include the hidden files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt; - output the contents of the file in text&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vi&lt;/code&gt; - use vim to edit a file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nano&lt;/code&gt; - use nano to edit a file
Usually written as &lt;code&gt;nano file.py&lt;/code&gt; to mean open file.py for editing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo useradd -m user_name&lt;/code&gt;- used to add users&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo passwd&lt;/code&gt; - used to change the administrator's password&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;passwd&lt;/code&gt; - when entered, it prompts you to give the old password, then asks you to type the new password&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch&lt;/code&gt; - create a file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;man&lt;/code&gt; - This is a user manual to search for any command&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wget&lt;/code&gt; - used to download files online&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;head&lt;/code&gt; - prints the first 10 rows of a document without opening the whole doc. Useful for large files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mv&lt;/code&gt; - used to move files from one folder to another&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp&lt;/code&gt; - used to copy files from one folder to another. It is also used to rename files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep text&lt;/code&gt; - &lt;code&gt;grep&lt;/code&gt; is used to search for text in a file. &lt;code&gt;grep text&lt;/code&gt; will return instances of the word "text" in a document&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While there are more commands used in Linux, the read provides a beginner-friendly guide into understanding what Linux is all about and basic navigation.&lt;/p&gt;

&lt;p&gt;If you enjoyed the read, please like, share, and subscribe for more articles as we document my journey from a beginner to an expert in data engineering.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>dataengineering</category>
      <category>linux</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
