Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions 2026/day-01/learning-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
in simple understanding devops means complete end to end process desigining and deploying applications.consists of two words dev +ops
dev means development in which code ,plan and features are included but in operations (ops) the code si deployed on servers where continous monitoring happens
15 changes: 15 additions & 0 deletions 2026/day-02/linux-architecture-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
* process states
1 running- means the process is currently in execution
2 sleep -process waiting for its execution
3 stopped - proces is paused by user or other
4 zombie - hwne process is terminianted but in process table and wiating for exit
5 dead - when process is completely terminated and nt present in process table
* 5 commands that i will use daily
cd - to navigate between dir
mkdir - create a new dir
vim - for text editor
touch - for creating new file
man - for description
pwd - to check current working directory
systemctl - to know logs of system

30 changes: 30 additions & 0 deletions 2026/day-03/linux-commands-cheatsheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
* Basic commands
cd - to navigate between dir
mv - to move or rename file
cp -copy file
pwd - current directory
ls - lsit all files
ls -a - list hidden files
ls -l - list the permissions of file
mkdir - make dir
touch - create file
whoami - display user name
cat - edit file
* adding user or group
useradd - add user in environment
useradd -m - add suer in home dir also
groupadd - add new group
usermod - to modify the permissions
chown - change owership
chgrp - change group ownership
ssh-keygen = genrate new keys
su - to with users
* file permissions
chmod - change permissions
* to know about systems
systemctl - to manage service on linux like start,stop,restart,reload

* network commands
ipcongig - to check all ip address
ping - send ICMP requests
dig - Dns lookups in nslookups
15 changes: 15 additions & 0 deletions 2026/day-04/linux-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Process checks
ps - snapshot of current process
top - this provides dynamic view of running system
pgrep - looks htrough the currently running process and lists the process IDs
pgrep [options] pattern

Service checks
systemctl - gives log for system and controls systemd
systemctl list-units - units are a managed resource this command helps to check the acitve services,sockets,mounts

Log checks
journalctl -u ssh - print logs of the specific service
tail -n - 50 this shows the last 50 entries

Mini troubleshooting steps
77 changes: 77 additions & 0 deletions 2026/day-05/linux-troubleshooting-runbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@


## Target Service
ssh (OpenSSH Server)

## Environment
- Kernel: Linux 6.14.0-1018-aws (x86_64)
- OS: Ubuntu 24.04.3 LTS (Noble Numbat)
- System uptime low, clean boot state

## Filesystem Sanity Check
Commands:
- mkdir /tmp/runbook-demo
- cp /etc/hosts /tmp/runbook-demo/hosts-copy

Observations:
- Temporary directory created successfully
- File copy succeeded with normal permissions
- Filesystem is writable and healthy

## CPU & Memory
Commands:
- top- this provide the list fo processes
- free -h - this display the storage in human readable format

Observations:
- CPU is 99% idle, load average near zero
- No high CPU processes observed
- Memory usage is low with ~510MB available
- No swap usage or memory pressure

## Disk & IO
Commands:
- df -h- This display file system usage in 1000 powers
- du -sh /var/log

Observations:
- Root filesystem only 36% utilized
- /var/log size is ~35MB
- No disk space or IO concerns

## Network
Commands:
- ss -tulpn
- ping -c 3 localhost

Observations:
- sshd listening on port 22 (IPv4 and IPv6)
- Localhost connectivity is healthy
- No packet loss or latency issues

---

## Logs Reviewed
Commands:
- journalctl -u ssh -n 50
- tail -n 50 /var/log/auth.log

Observations:
- SSH service starts cleanly after reboot
- Successful key-based logins observed
- No authentication errors or service crashes
- Log entries appear normal and expected

---

## Quick Findings
- System resources are healthy
- SSH service is stable and responsive
- No indicators of CPU, memory, disk, or network issues
- Logs show normal operational behavior

---

## If This Worsens (Next Steps)
1. Restart ssh service gracefully using systemctl and monitor logs
2. Investigate failed login attempts and review firewall or security group rules
39 changes: 39 additions & 0 deletions 2026/day-06/file-io-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
root@Asus:/mnt/c/users/# cd documents
root@Asus:/mnt/c/users/documents# touch name.txt
root@Asus:/mnt/c/users/documents# cat "hello my name is " > name.txt
cat: 'hello my name is ': No such file or directory
root@Asus:/mnt/c/users/documents# man cat
root@Asus:/mnt/c/users/documents# man touch
root@Asus:/mnt/c/users/documents# mv name.txt notes.txt
root@Asus:/mnt/c/users/documents# echo "hello my name si :" > notes.txt
root@Asus:/mnt/c/users/documents# echo "hi everyone" >> notes.txt
root@Asus:/mnt/c/users/documents# echo "I am student of batch 10 " >> notes.txt
root@Asus:/mnt/c/users/documents# cat notes.txt
hello my name si :
hi everyone
I am student of batch 10
root@Asus:/mnt/c/users/documents# head notes.txt
hello my name si :
hi everyone
I am student of batch 10
root@Asus:/mnt/c/users/documents# man head
root@Asus:/mnt/c/users/documents# head -n 2 notes.txt
hello my name si :
hi everyone
root@Asus:/mnt/c/users/documents# tail -n 2 notes.txt
hi everyone
I am student of batch 10
root@Asus:/mnt/c/users/documents# tee "hello" >notes.txt
hello
my name is
i am student of batch 10
^C
root@Asus:/mnt/c/users/documents# cat notes.txt
hello
my name is
i am student of batch 10
root@Asus:/mnt/c/users/documents# tee hello
hello
hello
i am
i am
2 changes: 1 addition & 1 deletion 2026/day-07/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Write at least 4 commands in order.
- Then check: What do the logs say?
- Finally check: Is it enabled to start on boot?

**Commands to explore:** `systemctl status myapp`, `systemctl is-enabled myapp`, `journalctl -u myapp -n 50`
**Commands to explore:** `systemctl status myapp`, ` myapp`, `journalctl -u myapp -n 50`systemctl is-enabled

**Resource:** Review Day 04 (Process and Services practice)

Expand Down
51 changes: 51 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,51 @@
### Part 1: Linux File System Hierarchy
- '/' (root) - This contains the boot files of system
- '/home' - this conatisn file configurations and users
- `/root' - This is subdirectory inside '/' which has full user access
- 'etc' - this contains editable configurations files
- '/var/log' - This contains the log of system
- '/tmp' - these are created for short term uses and they got deleted when system reboots

### Part 2: Scenario-Based Practice
**Scenario 1: Service Not Starting**
Step 1: systemctl status
Why: This will display the status
s
Step 2: journalctl
why :this will display recent logs

Step 3: systemctl start my-app
Why: this will again start the application

step 4: systemctl is-enabled
why : to check is service is enabled

**Scenario 2: High CPU Usage**
step 1: top
why : this will display the top processes executing / htop has interactive display

step 2: htop
why : htop has interactive display where i can scroll also

step 3 : ps aux --sort=-%cpu | head -10
why : this will sort the process and then print first 10 processes

**Scenario 3: Finding Service Logs**
step 1 : journalctl -u docker.io
why : this will display the logs of docker

step 2 :journalctl -u docker.service -n 50
why : this will show last 50 lines

step 3: journalctl -u docker.service -f
why : this will show me the docker logs in real time

**Scenario 4: File Permissions Issue**
step 1 : ls -l
why : firstly check the permsission of file

Step 2 : chmod u+x file_name.sh
why : then give execute perimission to user

step 3: ls-l
why :rwxr--r-- this means owner got permission to execute
37 changes: 37 additions & 0 deletions 2026/day-08/day-08-cloud-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## Commands Used
step 1: connecting with instance using ssh
command : ssh -i "keyname"ubuntu@"public_dns"

step 2: update ubunut
command : sudo apt update

step 3: install nginx
command : sudo apt install nginx

step 4 :then to confirm if its starting
command : systemctl status nginx

step 5: check server logs
command : journalctl -u nginx

step 6: chekc nginx logs

command : var/log/nginx
this gives me two files
access.log
error.log

step 7: then copy the nginx logs and saev into a new file into home directory
cp access.log ~/nginx-log.txt

step 8 : then i download this using scp in my local machine
scp -i "keyname"ubuntu@"instanceip":"file_path" .
scp -secure copy it gets downloaded form remote server to local machine and . is used for current folder

## Challenges Faced
i got challanges during cp as i got confused between home directory then i see the linux hirarchy and then i faced challenges in scp as i am running this on instance as then i search about this command and run on my windows termianl

## What I Learned
i get used to ssh and got easy in connecting instance to my server
i learn about the scp command
i learn about creating inbound rules to check service on web
4 changes: 4 additions & 0 deletions 2026/day-08/nginx-logs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
115.70.62.21 - - [10/Feb/2026:10:32:37 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
115.70.62.21 - - [10/Feb/2026:10:32:37 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://16.26.213.32/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
146.190.26.148 - - [10/Feb/2026:10:33:08 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
146.190.26.148 - - [10/Feb/2026:10:33:09 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://16.26.213.32/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
Binary file added 2026/day-08/nginx-webpage.png.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2026/day-08/ssh-connection.png.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion 2026/day-09/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ Create `day-09-user-management.md`:
**User can't access directory?**
- Check group: `groups username`
- Check permissions: `ls -ld /path`

cd
---

## Submission
Expand Down
30 changes: 30 additions & 0 deletions 2026/day-09/day-09-user-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Day 09 Challenge
## Users & Groups Created
- Users: tokyo, berlin, professor, nairobi
- Groups: developers, admins, project-team

## Group Assignments
tokyo:x:1001:
berlin:x:1002:
professor:x:1003:
developers:x:1004:tokyo,berlin
admins:x:1005:berlin,professor
nairobai:x:1006:
project-team:x:1007:nairobai,tokyo

## Directories Created
drwxrwsr-x 2 root developers 4096 Feb 11 10:43 dev-project
drwxrwxr-x 2 root project-team 4096 Feb 11 10:51 team-workspace

## Commands Used
useradd -m : for creating users in home also
addgroup : for creating group
usermod -aG : for adding user to group
mkdir - for creating directory
chown :group_name directory : for changing ownership of group only
chmod 775 directory

## What I Learned
i learned about creating groups and users
i learned about giving permissions and adding users to the groups
i learned about changing ownerships and groups
30 changes: 30 additions & 0 deletions 2026/day-10/day-10-file-permissions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Day 10 Challenge

## Files Created
devops.txt
notes.txt
script.sh

## Permission Changes
before
-rw-rw-r-- 1 ubuntu ubuntu 0 Feb 12 10:15 devops.txt
-rw-rw-r-- 1 ubuntu ubuntu 60 Feb 12 10:16 notes.txt
-rw-rw-r-- 1 ubuntu ubuntu 21 Feb 12 10:16 sript.sh

after
-r--r--r-- 1 ubuntu ubuntu 0 Feb 12 10:15 devops.txt
-rw-r----- 1 ubuntu ubuntu 60 Feb 12 10:16 notes.txt
-rwxrw-r-- 1 ubuntu ubuntu 21 Feb 12 10:16 script.sh

## Commands Used
touch
cat
chmod
head
tail
vim

## What I Learned
i learned about creating file
editing file
permissions of files
Binary file added 2026/day-10/files.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions 2026/day-14/day-14-networking.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
### OSI Model vs TCP/IP Stack
The OSI (Open Systems Interconnection) model is a conceptual framework that standardizes the functions of a telecommunication or computing system into seven distinct layers: Physical, Data Link, Network, Transport, Session, Presentation, and Application. Each layer serves a specific purpose and interacts with the layers directly above and below it.
The TCP/IP (Transmission Control Protocol/Internet Protocol) stack, on the other hand, is a more practical and widely used model that consists of four layers: Link, Internet, Transport, and Application. The TCP/IP stack is designed to be simpler and more efficient for real-world networking.
- **Link Layer**: Corresponds to the OSI's Physical and Data Link layers. It handles the physical transmission of data over a network and manages the hardware addressing (MAC addresses)and DNS resolution for local network communication.
- **Internet Layer**: Corresponds to the OSI's Network layer. It is responsible for logical addressing (IP addresses) and routing of data packets across networks.
- **Transport Layer**: Corresponds to the OSI's Transport layer. It manages end-to-end communication, error checking, and flow control. This is where TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) operate.
- **Application Layer**: Corresponds to the OSI's Session, Presentation, and Application layers. It provides protocols for specific applications, such as HTTP/HTTPS for web traffic, DNS for domain name resolution, and FTP for file transfers.

### Hands-on Checklist
- **Identity:** `hostname -I` (or `ip addr show`) — shows th e IP address(es) assigned to the host.
- **Reachability:** `ping <target>` — tests the reachability of a target host and measures the round-trip time for messages sent from the originating host to a destination computer.
- **Path:** `traceroute <target>` (or `tracepath`) — displays the route and measures transit delays of packets across an IP network.
- **Ports:** `ss -tulpn` (or `netstat -tulpn`) — lists all listening ports and the associated services.
- **Name resolution:** `dig <domain>` or `nslookup <domain>` — queries DNS servers to resolve domain names to IP addresses.
- **HTTP check:** `curl -I <http/https-url>` — retrieves the HTTP headers from the specified URL, showing the HTTP status code and other metadata.
- **Connections snapshot:** `netstat -an | head` — provides a snapshot of current network connections, showing the state of each connection (e.g., ESTABLISHED, LISTENING).

### Mini Task: Port Probe & Interpret
i have tested on port no 80 its succesfull
(test.png)
## Reflection (add to your markdown)
- Which command gives you the fastest signal when something is broken?
curl -I as it will shows me the HTTP status code and headers.
- What layer (OSI/TCP-IP) would you inspect next if DNS fails? If HTTP 500 shows up?
applica1tion layer for both cases, as DNS is part of the application layer in the TCP/IP stack, and HTTP 500 is an error code that indicates a server-side issue, which also falls under the application layer.
- Two follow-up checks you’d run in a real incident.
dns failure, I would check the DNS server configuration and logs to identify any issues.
Ports `ss -tulpn` to check if the DNS service is running and listening on the correct port (usually port 53).
Binary file added 2026/day-14/ports.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2026/day-14/test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading