Introduction to Linux: Essential Prerequisites for Microservices Course

by Gautham Pai

This comprehensive guide covers essential Linux concepts and commands that serve as prerequisites for a Microservices course. By familiarizing yourself with these fundamentals, you'll be well-prepared to dive into the world of microservices architecture.

The UNIX Philosophy

The UNIX philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the UNIX operating system. Key aspects include:

  • Writing simple, short, clear, modular, and extensible code
  • Designing programs to work together
  • Utilizing text interfaces because they are universal

For more in-depth information, explore these resources:

Linux Distributions

Linux comes in various distributions, each tailored for specific use cases. Two major families of distributions are:

Redhat Based Distributions

Examples include Fedora, RHEL (Red Hat Enterprise Linux), and CentOS. These distributions use the yum package manager for software installation and updates.

# Installing software using yum
sudo yum install package_name

Debian Based Distributions

Examples include Debian and Ubuntu. These distributions use the apt-get package manager.

# Installing software using apt-get
sudo apt-get install package_name

Ubuntu offers LTS (Long Term Support) editions, which provide extended support and are ideal for stable, long-running systems.

Absolute and Relative Paths

Understanding file system navigation is crucial in Linux:

  • Absolute paths start from the root directory (/) and provide the complete path to a file or directory.
  • Relative paths are specified in relation to the current working directory.

Examples:

# Absolute path
/home/user/documents/file.txt

# Relative path (assuming current directory is /home/user)
documents/file.txt

Basic Linux Commands

Here are some fundamental Linux commands:

# Display a line of text
echo "Hello, Linux!"

# List directory contents
ls
ls -l  # Detailed listing
ls -a  # Show hidden files

# Print working directory
pwd

# Display file contents
cat file.txt

# Comments in bash scripts
# This is a comment
ls # Comments can also come at the end of a command like this

Working with Files

Creating and manipulating files is a common task in Linux:

# Create an empty file
touch newfile.txt

# Create a file with content
echo "Hello" > file.txt
echo "World" >> file.txt  # Append to file

# Create a file using HEREDOC syntax
cat << EOF > script.sh
#!/bin/bash
echo "This is a bash script"
EOF

# Remove a file
rm file.txt

# Copy a file
cp source.txt destination.txt

# Move or rename a file
mv oldname.txt newname.txt

Working with Directories

Managing directories is essential for organizing your file system:

# Create a directory
mkdir new_directory

# Remove an empty directory
rmdir empty_directory

# Remove a directory and its contents recursively
rm -rf directory_name

# Change directory
cd /path/to/directory
cd  # Change to home directory
cd ~  # Another way to change to home directory
cd /home/username  # Change to a specific user's home directory

# List hidden files (those starting with a dot)
ls -a

Working with Processes

Managing processes is crucial for system administration:

# List running processes
ps aux

# Display real-time process statistics
top

# Kill a process
kill process_id
# Or use Ctrl+C to terminate a running process in the terminal

# Check the exit status of the last command
echo $?

Working with Networks

Network management is vital for system connectivity:

# Display network interface configuration
ifconfig

# Test network connectivity
ping google.com

# Display network statistics and active connections
netstat -nltp

# Securely connect to a remote server
ssh username@remote_host

Understanding Network CIDR

CIDR (Classless Inter-Domain Routing) notation is a compact method for specifying IP addresses and their associated routing prefix. Use the CIDR Calculator to understand and work with IP ranges.

Working with Services

Systemd is the init system and service manager for many Linux distributions:

# Start a service
sudo systemctl start service_name

# Stop a service
sudo systemctl stop service_name

# Restart a service
sudo systemctl restart service_name

# Enable a service to start on boot
sudo systemctl enable service_name

Working with Users

User management and permissions are critical for system security:

# Run a command with superuser privileges
sudo command

# Switch to the root user
sudo su -

# Add a new user
sudo adduser username

# Modify user permissions
sudo usermod -aG groupname username

Commands Useful During Piping

Piping allows you to chain commands together, passing the output of one command as input to another:

# Search for a pattern in a file
cat file.txt | grep "pattern"

# Replace text in a stream
echo "Hello, World" | sed 's/World/Linux/'

# Process text and extract specific fields
echo "Name,Age,City" | awk -F',' '{print $2}'

# Display the first few lines of a file
cat file.txt | head -n 5

# Display the last few lines of a file
cat file.txt | tail -n 5

# Build command lines from standard input
echo "file1.txt file2.txt" | xargs rm

# Use backslash to continue long commands on the next line
echo "This is a very long command that \
continues on the next line"

Command Line Text Editors

Familiarity with text editors is essential for file manipulation:

  • nano: A simple, user-friendly editor ideal for beginners.
  • vim: A powerful, modal editor with a steeper learning curve but offering extensive capabilities.

Variables and Environment Variables

Variables store data for use in shell scripts and commands:

# Define and use a variable
MY_VAR="Hello"
echo $MY_VAR

# Display the value of an environment variable
echo $PATH
echo $HOME

# Set an environment variable
export MY_ENV_VAR="sample value"

Short and Long Switches

Commands often support both short and long options:

# Short switch
ls -l

# Long switch
ls --long

Exiting Shells

To exit a shell or terminal session, you can use:

  • Ctrl+D: Sends an EOF (End of File) signal
  • exit: Command to close the current shell

Getting Help

When you need assistance with a command:

# Display command help
ls --help

# Access the manual page for a command
man ls

Resources

For further learning, check out these comprehensive resources:

By mastering these Linux concepts and commands, you'll have a solid foundation for your journey into microservices architecture. Remember that practice is key to becoming proficient in Linux administration and usage.

Test Your Knowledge

No quiz available

Tags