<?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: Angellicah</title>
    <description>The latest articles on DEV Community by Angellicah (@angellicah_2ed8aa8f01f176).</description>
    <link>https://dev.to/angellicah_2ed8aa8f01f176</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%2F3951197%2Fb9a782a5-035a-42ba-8998-316540fdcbb9.jpg</url>
      <title>DEV Community: Angellicah</title>
      <link>https://dev.to/angellicah_2ed8aa8f01f176</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/angellicah_2ed8aa8f01f176"/>
    <language>en</language>
    <item>
      <title>LINUX FUNDAMENTALS FOR DATA ENGINEERING.</title>
      <dc:creator>Angellicah</dc:creator>
      <pubDate>Sat, 06 Jun 2026 21:27:55 +0000</pubDate>
      <link>https://dev.to/angellicah_2ed8aa8f01f176/linux-fundamentals-for-data-engineering-28dm</link>
      <guid>https://dev.to/angellicah_2ed8aa8f01f176/linux-fundamentals-for-data-engineering-28dm</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;Data engineering is the backbone of modern data-driven organizations. Data engineers &lt;em&gt;design&lt;/em&gt;, &lt;em&gt;build&lt;/em&gt;, and &lt;em&gt;maintain&lt;/em&gt; &lt;em&gt;systems&lt;/em&gt; that collect, process, and store vast amounts of data. While programming languages such as &lt;strong&gt;Python&lt;/strong&gt; and &lt;strong&gt;SQL&lt;/strong&gt; often receive significant attention in data engineering discussions, Linux remains one of the most essential tools in a data engineer's toolkit.&lt;/p&gt;

&lt;p&gt;Most data platforms, cloud servers, databases, big data frameworks, and ETL pipelines run on Linux-based systems. Therefore, understanding Linux fundamentals is a necessity for any aspiring data engineer.&lt;/p&gt;

&lt;p&gt;This article explores the key Linux concepts every data engineer should master, including &lt;em&gt;file system navigation&lt;/em&gt;, &lt;em&gt;file management&lt;/em&gt;, &lt;em&gt;permissions&lt;/em&gt;, &lt;em&gt;process management&lt;/em&gt;, &lt;em&gt;networking&lt;/em&gt;, &lt;em&gt;shell scripting&lt;/em&gt;, and &lt;em&gt;automation&lt;/em&gt;. Practical examples are provided throughout to demonstrate how Linux is used in real-world data engineering tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHY LINUX MATTERS IN DATA ENGINEERING
&lt;/h3&gt;

&lt;p&gt;Linux dominates the server and cloud computing ecosystem. Technologies frequently used in data engineering and are typically deployed on Linux servers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache Hadoop&lt;/li&gt;
&lt;li&gt;Apache Spark&lt;/li&gt;
&lt;li&gt;Apache Kafka&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a data engineer, you may need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access remote servers&lt;/li&gt;
&lt;li&gt;Monitor data pipelines&lt;/li&gt;
&lt;li&gt;Schedule automated jobs&lt;/li&gt;
&lt;li&gt;Manage data files&lt;/li&gt;
&lt;li&gt;Troubleshoot system issues&lt;/li&gt;
&lt;li&gt;Deploy applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  UNDERSTANDING THE LINUX FILE SYSTEM
&lt;/h3&gt;

&lt;p&gt;Unlike Windows, Linux uses a hierarchical directory structure beginning with the root directory (/).&lt;/p&gt;

&lt;p&gt;Common directories include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Directory&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Root directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Configuration files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Log files and variable data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Temporary files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User programs and utilities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Essential command binaries&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To &lt;em&gt;view the current directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example Output:&lt;/p&gt;

&lt;p&gt;/home/student&lt;/p&gt;

&lt;p&gt;To &lt;em&gt;list files&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For &lt;em&gt;detailed information&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To &lt;em&gt;view hidden files&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -la&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These commands are frequently used when locating datasets, scripts, logs, and configuration files.&lt;/p&gt;

&lt;h3&gt;
  
  
  NAVIGATING DIRECTORIES
&lt;/h3&gt;

&lt;p&gt;Directory navigation is one of the first Linux skills every data engineer should learn.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Move into a directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd data&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Move back one level&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Return to home directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Move to root directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Suppose a dataset is stored in:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/home/student/datasets/sales&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can access it using:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/datasets/sales&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Efficient navigation saves time when managing large data projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  CREATING AND MANAGING FILES
&lt;/h3&gt;

&lt;p&gt;Data engineers often create scripts, configuration files, and data storage directories.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create a new directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir project_data&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create nested directories&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir -p project_data/raw/2025&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create an empty file&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Copy a file&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp sales.csv backup_sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Move&lt;/em&gt; or &lt;em&gt;rename&lt;/em&gt; a file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mv sales.csv monthly_sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Delete a file&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Delete&lt;/em&gt; a &lt;em&gt;directory&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm -r project_data&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Creating a project structure for a data pipeline:&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;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 
data_pipeline/&lt;span class="o"&gt;{&lt;/span&gt;raw,processed,scripts,logs&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output structure:&lt;/p&gt;

&lt;p&gt;data_pipeline/&lt;br&gt;
├── raw&lt;br&gt;
├── processed&lt;br&gt;
├── scripts&lt;br&gt;
└── logs&lt;/p&gt;

&lt;p&gt;This organization improves maintainability and scalability.&lt;/p&gt;
&lt;h3&gt;
  
  
  VIEWING AND MANIPULATING FILE CONTENTS
&lt;/h3&gt;

&lt;p&gt;Data engineers regularly inspect datasets and log files.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Display file contents&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;View large files&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;less data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Display first 10 lines&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;head data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Display last 10 lines&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Monitor logs continuously&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail -f pipeline.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Monitoring an ETL process:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail -f etl_job.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command helps identify errors in real time.&lt;/p&gt;
&lt;h3&gt;
  
  
  SEARCHING FOR FILES AND DATA
&lt;/h3&gt;

&lt;p&gt;Data environments often contain thousands of files.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find a file&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -name "sales.csv"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Search for text inside files&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep "ERROR" pipeline.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Count occurrences&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep -c "ERROR" pipeline.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Finding failed records in a log&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep "FAILED" ingestion.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;FAILED: Record 1024&lt;br&gt;
FAILED: Record 2048&lt;br&gt;
FAILED: Record 3050&lt;/p&gt;

&lt;p&gt;This allows quick troubleshooting.&lt;/p&gt;
&lt;h3&gt;
  
  
  LINUX PERMISSIONS AND OWNERSHIP
&lt;/h3&gt;

&lt;p&gt;Linux uses permissions to control file access.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;View permissions&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example Output:&lt;/p&gt;

&lt;p&gt;-rw-r--r-- 1 student student 2450 sales.csv&lt;/p&gt;

&lt;p&gt;Permission categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner&lt;/li&gt;
&lt;li&gt;Group&lt;/li&gt;
&lt;li&gt;Others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Permission symbols:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&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;Write&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;Execute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Change permissions&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod 755 script.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make script executable&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x script.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Change ownership&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chown user:user file.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Allowing an ETL script to execute&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x etl.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Without execute permission, the script cannot run.&lt;/p&gt;
&lt;h3&gt;
  
  
  PROCESS MANAGEMENT
&lt;/h3&gt;

&lt;p&gt;Data pipelines frequently run as Linux processes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;View running processes&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps aux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Monitor system activity&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;top&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find process ID&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pgrep python&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Terminate process&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill PID&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Force termination&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill -9 PID&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Suppose a Spark job becomes unresponsive.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find it&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps aux | grep spark&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stop it&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill PID&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This prevents resource wastage.&lt;/p&gt;
&lt;h3&gt;
  
  
  DISK USAGE MONITORING
&lt;/h3&gt;

&lt;p&gt;Large datasets consume significant storage.&lt;/p&gt;

&lt;p&gt;Check disk space:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Check directory size:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;du -sh datasets/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Determining storage&lt;/em&gt; used by data files:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;du -sh raw_data/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;15G raw_data/&lt;/p&gt;

&lt;p&gt;This helps monitor storage requirements.&lt;/p&gt;
&lt;h3&gt;
  
  
  NETWORKING FUNDAMENTALS
&lt;/h3&gt;

&lt;p&gt;Data engineers often work with remote servers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check IP address&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ip addr&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Test connectivity&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ping google.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Connect to remote server&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh user@server-ip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Transfer files&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scp data.csv user@server:/home/user/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Uploading a processed dataset:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scp processed.csv admin@192.168.1.10:/data/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This enables data sharing between systems.&lt;/p&gt;
&lt;h3&gt;
  
  
  PACKAGE MANAGEMENT
&lt;/h3&gt;

&lt;p&gt;Linux distributions use package managers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;&lt;/em&gt;:&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;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;strong&gt;Red Hat/CentOS&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo yum install python3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Installing PostgreSQL client:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install postgresql-client&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This allows database interaction directly from the terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  SHELL SCRIPTING FOR AUTOMATION
&lt;/h3&gt;

&lt;p&gt;Automation is a core responsibility of data engineers.&lt;/p&gt;

&lt;p&gt;Example shell script:&lt;/p&gt;

&lt;p&gt;!/bin/bash&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;echo&lt;/span&gt; &lt;span class="s2"&gt;"Starting Data Pipeline"&lt;/span&gt;

python extract.py
python transform.py
python load.py

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Pipeline Completed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Save as&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipeline.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make executable&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x pipeline.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Run&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./pipeline.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduces manual work&lt;/li&gt;
&lt;li&gt;Improves consistency&lt;/li&gt;
&lt;li&gt;Enables scheduling&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SCHEDULING JOBS WITH CRON
&lt;/h3&gt;

&lt;p&gt;Data pipelines often run automatically.&lt;/p&gt;

&lt;p&gt;Open cron editor:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;crontab -e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run script every day at midnight:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0 0 * * * /home/student/pipeline.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cron Format&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Minute Hour Day Month Weekday&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Execute data ingestion daily:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;30 2 * * * /home/student/scripts/ingest.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This runs at 2:30 AM every day.&lt;/p&gt;

&lt;h3&gt;
  
  
  WORKING WITH COMPRESSED FILES
&lt;/h3&gt;

&lt;p&gt;Large datasets are commonly compressed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Compress&lt;/em&gt; file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gzip data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Decompress&lt;/em&gt; file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gunzip data.csv.gz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create archive&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar -cvf archive.tar data/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Extract archive&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar -xvf archive.tar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Receiving compressed logs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gunzip logs.gz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then analyze them using Linux tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  USEFUL COMMANDS FOR DATA ENGINEERS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Count lines in a file&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wc -l sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sort data&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sort sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Remove duplicates&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;uniq sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Display specific columns&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cut -d',' -f1,3 sales.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Combine commands&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat sales.csv | grep Nairobi | wc -l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This counts records containing "Nairobi".&lt;/p&gt;

&lt;h3&gt;
  
  
  PRACTICAL ASSIGNMENT EXAMPLE
&lt;/h3&gt;

&lt;p&gt;During this Linux fundamentals assignment, several commands were used to create and manage a data engineering workspace.&lt;/p&gt;

&lt;p&gt;Creating project directories:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir -p data_engineering/{raw,processed,scripts,logs}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creating a sample dataset:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch raw/sales_data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Viewing data:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;head raw/sales_data.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creating a pipeline script:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano scripts/process_data.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Making it executable:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x scripts/process_data.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Running the pipeline:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./scripts/process_data.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Monitoring logs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail -f logs/pipeline.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These activities simulate real-world data engineering operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  BEST PRACTICLES FOR DATA ENGINEERS USING LINUX
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Organize files using structured directories.&lt;/li&gt;
&lt;li&gt;Use meaningful file names.&lt;/li&gt;
&lt;li&gt;Automate repetitive tasks with scripts.&lt;/li&gt;
&lt;li&gt;Monitor system resources regularly.&lt;/li&gt;
&lt;li&gt;Secure files using proper permissions.&lt;/li&gt;
&lt;li&gt;Maintain backups of critical data.&lt;/li&gt;
&lt;li&gt;Use version control systems such as Git.&lt;/li&gt;
&lt;li&gt;Document scripts and workflows.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Following these practices improves reliability and maintainability.&lt;/p&gt;

&lt;h3&gt;
  
  
  CONCLUSION
&lt;/h3&gt;

&lt;p&gt;Linux is a foundational skill for data engineering. Whether managing datasets, monitoring ETL pipelines, deploying applications, or automating workflows, Linux provides the essential tools required to operate efficiently in modern data environments.&lt;/p&gt;

&lt;p&gt;Mastering Linux fundamentals such as file management, permissions, process control, networking, automation, and shell scripting significantly enhances a data engineer's productivity and effectiveness. As organizations continue to rely on cloud platforms and distributed data systems, Linux expertise will remain one of the most valuable technical skills in the data engineering profession.&lt;/p&gt;

&lt;p&gt;For aspiring data engineers, investing time in learning Linux is about building the operational foundation necessary for handling real-world data challenges at scale.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>dataengineering</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
