Linux is the go-to operating system for most DevOps tasks, such as server management, automation, and scripting. In this post, we'll cover some basic Linux concepts and commands that every DevOps engineer should know.
Linux Basics
Filesystem Hierarchy
The Linux filesystem hierarchy is a standardized way of organizing files and directories in a Linux system. Here are some of the most common directories:
/
(root): the top-level directory of the filesystem.
/bin
: contains essential binary files for the system./etc
: contains system-wide configuration files./home
: contains user home directories./lib
: contains shared library files./opt
: contains optional software packages./usr
: contains user binaries, libraries, documentation, and source code./var
: contains variable data files, such as logs and databases.
Users and Permissions
In Linux, each user has a username and a user ID (UID), which uniquely identifies them. Users are organized into groups, which can be used to assign permissions to files and directories.
Permissions are divided into three categories: read (r
), write (w
), and execute (x
). Each file or directory has permissions for the owner, the group, and others. For example, the following command sets the permissions of a file so that the owner can read and write to it, but others can only read it:
chmod 644 filename
Processes and Services
A process is a program that is currently running on a Linux system. You can view the list of running processes using the ps
command:
ps aux
Services are long-running processes that are managed by the system's init system (such as systemd or upstart). You can start, stop, and restart services using the systemctl
command. For example, the following command starts the Apache web server:
systemctl start apache2
Linux Commands
File and Directory Management
ls
: list directory contents.cd
: change the current directory.mkdir
: create a new directory.rm
: remove a file or directory.cp
: copy a file or directory.mv
: move or rename a file or directory.
Text Manipulation
cat
: display the contents of a file.grep
: search for a pattern in a file.sed
: perform text substitutions on a file.awk
: extract and manipulate data from a file.
System Management
ps
: list running processes.top
: display real-time system information.df
: display disk usage information.du
: display directory size information.ifconfig
: display network interface configuration.
Package Management
apt
: package manager for Debian-based distributions.yum
: package manager for Red Hat-based distributions.pacman
: package manager for Arch Linux.
Conclusion
In this post, we've covered some basic Linux concepts and commands that every DevOps engineer should know. Linux is a powerful and versatile operating system that can be used for a wide range of tasks, from server management to automation and scripting. If you're new to Linux, we recommend starting with a beginner-friendly distribution like Ubuntu or Fedora, and gradually building up your skills and knowledge from there. Good luck!