Course Overview
Linux is at the core of nearly all open-source projects. If you want to become a developer, then Linux is the engine that will run nearly all of your code. Your view of Linux will be different than a Linux System admin who must make sure that system availability is as close to 100% as possible. As a developer, you will be required to make Linux bend to your will, which is means you will have great power over the system. With great power comes great responsibility. You must be able to use Linux to accomplish your task, while not adversely affecting system reliability, security or operational efficiency. In this course you will learn how to make Linux deliver essential services and in the same motion, maintain the Linux system integrity. Successful students can generally expect their work efficiency to increase dramatically.
Outline: Linux Essentials for Developers (LED)
1. Navigating Linux - As a developer, you must understand the file structure. Your project will work only if you place files in the right place. Expect an epic fail if you do not follow the rules, so let’s start with housekeeping. Ignore this chapter at your own peril.
- Using Shell Command cd, tree, and other tools to explore directories
- The POSIX File system
- Why POSIX is critical for a developer to learn and follow
- The POSIX directory structure
- Text files vs. executables
- File naming convention - do and do nots
- The dot files
2. Essential linux tools (Each of these will appear as a chaper in the course documentation)
- vim - Edit files
- tmux essentials - massively reduce keystrokes
- htop - Is your code killing system performance? Here is a great way to know that answer
- tail -f - Let the logs tell you what is failing
- watch
- bash shortcuts
- Choosing a linux cheat sheet - We have several, choose the one that best helps you learn the essentials
3. SSH
- Understanding private and public key files
- The ~/.ssh files (config, rsa files)
- ssh-copy-id
- ssh-keygen
- ssh server config files
- How to ssh to other hosts.
- Essential scp commands (scp copy files from host to host)
4. Managing Files in Linux (find, cd, rm, tar, grep, egrep, ln)
- Find, Create, Delete, or Edit Files and directories
- Search Text Using Regular Expressions (grep and egrep)
- Apply Filters to Text Streams (grep and egrep)
- IO redirection (>, >>, 2>, &1)
- Pipes (|)
- Link Files (ln)
- Archive and Restore Files (tar skills)
5. Managing User and Group Accounts
- Create User and Group Accounts
- Configure User Profiles
- Administer User and Group Accounts
6. Managing Linux Permissions and Ownership (chown and chmod)
- Modify File and Directory Permissions
- Modify Default Permissions
- Modify File and Directory Ownership
- Set Special Permissions and Attributes
7. Repository essentials (apt, yum, snap)
- Understanding dependencies
- Using repositories to control software on your system
8. Managing processes and Kernel Services - (ps, top, htop, kill, pkill, killall, watch)
- Monitor Processes and Resources
9. Working with the Bash Shell and Shell Scripts
- Perform Basic Bash Shell Operations
- Write a Bash Shell Script
- Customize the Bash Shell
- Redirect Standard Input and Output
- Use Control Statements in Shell Scripts
10. Managing Jobs and Processes
- systemd structure
- How to write systemd unit files
- Manage Jobs and Background Processes
- Schedule Jobs
11. Logging
- Using syslog
- journalctl
- tail -f"
12. Understanding Network Services
- Essential IP2 commands (ip -l ip -a, ip route, ss, netstat)
- Configure Routes
13. Diagnosing a Slow Network
- mtr
- iperf
- check MTU
- check virtual networking
14. Troubleshooing disk and memory
- df
- du
- free
- mount
- /etc/fstab