Skip to content
Open
3 changes: 3 additions & 0 deletions 2026/day-01/learning-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
My name is Om Sanjay Deshmukh, and I am a second-year IT Engineering student at Pillai HOC College of Engineering and Technology.
My primary goal over the next 90 days is to become job-ready in DevOps by building strong technical and professional skills. I am actively focusing on Docker, Kubernetes, and CI/CD pipelines, as these tools are in high demand across modern organizations. Alongside technical expertise, I am also working on improving my communication skills and building a strong, professional LinkedIn profile.
Due to my college schedule, I dedicate 1.5 to 2 hours on weekdays to consistent learning and hands-on practice. On weekends, I invest 4 to 5 hours in deeper study, project work, and skill enhancement. I strongly believe that consistent effort, practical implementation, and continuous learning will help me achieve my goal of securing a DevOps internship and becoming industry-ready
24 changes: 24 additions & 0 deletions 2026/day-02/linux-architecture-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## Linux Architecture Notes

### Process

In Linux, a **process** is a program that is currently running or waiting to run.
Each process exists in **one state at a time**, such as running, sleeping, or zombie.

The state of a process can be checked using Linux commands like **ps**, **top**, and **systemctl**.

Process states are represented by the following codes:

- **Running (R)** – The process is currently executing or ready to execute.
- **Sleeping (S)** – The process is waiting for an event (input, I/O, or request).
- **Zombie (Z)** – The process has finished execution but is not yet removed.

---

### Commands I Use Daily

- **ls** – Lists directories and files.
- **cat** – Displays the content of a file.
- **vim** – Used to edit files.
- **touch** – Creates a new empty file.
- **mkdir** – Creates a new directory.
47 changes: 47 additions & 0 deletions 2026/day-03/linux-commands-cheatsheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Linux Commands Practice.


---


## Process management.
Process management commands in Linux are used to view, monitor, control, and manage running processes.

1. **ps** = Used to displays a sanpshot of currently running processes.
2. **top** = To monitor the CPU and memory.
3. **systemctl** = Used for services like Docker,Jenkins and Nginx whether it is running.
4. **kill** = Terminates a process.
5. **job** = Displays background and stopped jobs.

---


## Common File System Commands.

1. **ls** – Lists files and directories.
2. **pwd** – Shows the current directory path.
3. **cd** – Changes directory.
4. **mkdir** – Creates a new directory.
5. **rmdir** – Deletes an empty directory.
6. **touch** – Creates a new empty file.
7. **rm** – Deletes files or directories.
8. **cp** – Copies files or directories.
9. **mv** – Moves or renames files.
10. **df** – Displays disk space usage.
11. **du** – Shows directory size.



## Networking troubleshooting.

1. **ping** - Check connectivity between system and host.
2. **ip a** - Display IP and netwok interfacs.
3. **ip route** - Show routing table.
4. **ifconfig** - Display network interfase.
5. **netstat** - Shows network connection,port and routing table.
6. **ss** - Same as netstat.
7. **traceroute** - show path to take to reach destination.
8. **nslookup** - Used in troubleshoot DNS.
9. **dig** - Same as nslookup.
10. **curl** - Used to test web services and APIs.
11. **wget** - Downloads files from the internet and checks connectivity.
2 changes: 1 addition & 1 deletion 2026/day-04/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This is hands-on. Keep it simple and focused on fundamentals.
## Expected Output
By the end of today, you should have:

- A markdown file named:
- A markdown file named:
`linux-practice.md`

or
Expand Down
56 changes: 56 additions & 0 deletions 2026/day-04/linux-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Linux Practice – Processes, Services, Logs

---

## Process Checks

**input**
om@Om-Deshmukh:~$ ps
**ouput**
om@Om-Deshmukh:~$ ps
PID TTY TIME CMD
655 pts/0 00:00:00 bash
1965 pts/0 00:00:00 ps

**input**
top
**ouput**
top - 09:38:51 up 32 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 41 total, 1 running, 40 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 s
MiB Mem : 7785.2 total, 7016.5 free, 534.9 used, 385.1 buff
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 7250.3 avai

PID USER PR NI VIRT RES SHR S %CPU %MEM
1 root 20 0 21920 12116 9044 S 0.0 0.2

**input**
systemctl status
**ouput**
Om-Deshmukh
State: running
Units: 368 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Tue 2026-02-03 09:05:59 UTC; 34min ago
systemd: 255.4-1ubuntu8.12
CGroup: /
├─init.scope


**input**
systemctl list-units
**ouput**
UNIT >
sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-MSFT1000:00-a773ed0>
sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-MSFT1000:00-c4b741f>

**input**
om@Om-Deshmukh:~$ journalctl -u docker
**ouput**
Dec 07 13:02:25 Om-Deshmukh systemd[1]: Starting docker.service - Doc>
Dec 07 13:02:25 Om-Deshmukh dockerd[771]: time="2025-12-07T13:02:25.8>
Dec 07 13:02:25 Om-Deshmukh dockerd[771]: time="2025-12-07T13:02:25.8>
Dec 07 13:02:25 Om-Deshmukh dockerd[771]: time="2025-12-07T13:02:25.8>
Dec 07 13:02:25 Om-Deshmukh dockerd[771]: time="2025-12-07T13:02:25.9>

2 changes: 2 additions & 0 deletions 2026/day-05/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,5 @@ Use hashtags:

Happy Learning
**TrainWithShubham**


97 changes: 97 additions & 0 deletions 2026/day-05/linux-troubleshooting-runbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
## STEP 1: System ka base check kiya.

om@Om-Deshmukh:~$ uname -a
Linux Om-Deshmukh 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
om@Om-Deshmukh:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.3 LTS
Release: 24.04
Codename: noble


## STEP 2: Disk sahi kaam kar rahi hai ya nahi

mkdir /tmp/runbook-demo
mkdir: cannot create directory ‘/tmp/runbook-demo’: File exists
om@Om-Deshmukh:~$ cp /etc/hosts /tmp/runbook-demo/hosts-copy && ls -l /tmp/runbook-demo
total 4
-rw-r--r-- 1 om om 419 Feb 3 10:34 hosts-copy
om@Om-Deshmukh:~$ ps -C dockerd -o pid,pcpu,pmem,comm
PID %CPU %MEM COMMAND
2519 0.4 1.0 dockerd

## STEP 3: Docker service alive hai ya nahi

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
598bb49b59f2 nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp demo-nginx


STEP 4: Active service create ki


## STEP 5: Docker error aaya — troubleshoot kiya

om@Om-Deshmukh:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
598bb49b59f2 nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp demo-nginx



## STEP 6: Performance check ki

om@Om-Deshmukh:~$ ps -C dockerd -o pid,pcpu,pmem,comm
PID %CPU %MEM COMMAND
2519 0.4 1.0 dockerd



om@Om-Deshmukh:~$ free -h
total used free shared buff/cache available
Mem: 7.6Gi 566Mi 6.5Gi 3.7Mi 683Mi 7.0Gi
Swap: 2.0Gi 0B 2.0Gi


## STEP 7: Disk space verify ki

om@Om-Deshmukh:~$ df -h
Filesystem Size Used Avail Use% Mounted on
none 3.9G 0 3.9G 0% /usr/lib/modules/6.6.87.2-microsoft-standard-WSL2
none 3.9G 4.0K 3.9G 1% /mnt/wsl
drivers 476G 125G 352G 27% /usr/lib/wsl/drivers



om@Om-Deshmukh:~$ sudo du -sh /var/lib/docker
332M /var/lib/docker



## STEP 8: Network ka real test kiya


om@Om-Deshmukh:~$ curl http://localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>

## STEP 9: Logs dekhe (sabse important)


om@Om-Deshmukh:~$ sudo journalctl -u docker -n 50
Feb 03 10:18:10 Om-Deshmukh systemd[1]: docker.service: Deactivated su>
Feb 03 10:18:10 Om-Deshmukh systemd[1]: Stopped docker.service

sudo docker logs demo-nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-en
26 changes: 26 additions & 0 deletions 2026/day-06/file-io-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Creating and Updating file with linux commands

---

touch notes.txt


echo "I’m a passionate learner with a strong interest in Linux, DevOps, and Cloud technologies." > notes.txt
echo "I enjoy working hands-on with tools and solving real-world technical problems." >> notes.txt


echo "Currently focused on DevOps practices, Git & GitHub, cloud, and system administration." | tee -a notes.txt


echo "I believe in learning by doing and staying consistent every day." >> notes.txt
echo "My goal is to grow into a skilled DevOps professional." >> notes.txt
echo "I want to build, automate, and manage reliable systems." >> notes.txt
echo "Linux commands and cloud tools are my daily practice." >> notes.txt
echo "Step by step improvement is my learning strategy." >> notes.txt


cat notes.txt

head -n 2 notes.txt

tail -n 2 notes.txt
61 changes: 61 additions & 0 deletions 2026/day-07/day-07-linux-fs-and-scenarios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Day 07 – Linux File System Hierarchy & Scenario-Based Practice

---


## Scenario 1: Service Not Starting
systemctl status myapp
To check whether the service is running, stopped, or failed after reboot.


journalctl -u myapp -n 50
To view the recent logs and identify the reason for the failure.



journalctl -u myapp -b
To check service logs from the current boot to diagnose reboot-related issues.


systemctl is-enabled myapp
To verify whether the service is configured to start automatically on boot.


## Scenario 2: High CPU Usage

Step 1: top

Why: Shows live CPU usage and running processes in real time.


Step 2: htop

Why: Provides an interactive, easy-to-read view of CPU usage with process details.


Step 3: ps aux --sort=-%cpu | head -10

Why: Lists the top CPU-consuming processes and helps identify the PID.


## Scenario 3: Finding Service Logs


Step 1: journalctl -u docker -n 50

Why: Displays the last 50 log entries for the Docker service managed by systemd.


Step 2: journalctl -u docker -f

Why: Follows Docker logs in real time to observe live activity and errors.


Step 3: systemctl status docker

Why: Shows service status along with recent log messages for quick context.


Step 4: journalctl -u docker -b

Why: Displays Docker logs from the current boot to diagnose startup issues.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
51 changes: 51 additions & 0 deletions 2026/day-08/day-08-cloud-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Day 08 – Cloud Server Setup: Docker, Nginx & Web Deployment

---


## Commands Used

- sudo apt install nginx -y

- sudo systemctl start nginx

- sudo systemctl enable nginx

- systemctl status nginx

- curl http://localhost

- sudo cat /var/log/nginx/access.log

- sudo tail -f /var/log/nginx/access.log

- journalctl -u nginx -n 50

## Challenges Faced

**Service & log location confusion**
At first, it wasn’t clear where Nginx logs are stored (/var/log/nginx vs journalctl), which is common for beginners.

**Placeholder & IP mistakes**
Using placeholders like EC2-PUBLIC-IP and private IPs caused connection errors when trying to access the server from your local machine.

**SSH key issues**
Problems included missing .pem files, wrong file paths, and incorrect permissions, leading to Permission denied (publickey) errors.

**File permission problems on the server**
Log files copied with sudo were owned by root, so the ubuntu user couldn’t read them until ownership was fixed with chown.

**Local vs remote command confusion**
Some commands needed to be run on the EC2 server, while others (like scp) had to be run on the local machine, which caused errors initially.

## What I Learned
I
- learned how to install and verify Nginx on an EC2 server, how to check and understand access logs, and how to download logs securely using SSH and SCP.
- During this, I faced issues with IP addresses, SSH keys, and file permissions, and I learned how to troubleshoot them step by step instead of guessing.



---



Loading