diff --git a/2026/day-01/learning-plan.md b/2026/day-01/learning-plan.md new file mode 100644 index 0000000000..fb5e6a5ac4 --- /dev/null +++ b/2026/day-01/learning-plan.md @@ -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 \ No newline at end of file diff --git a/2026/day-02/linux-architecture-notes.md b/2026/day-02/linux-architecture-notes.md new file mode 100644 index 0000000000..06c11f463f --- /dev/null +++ b/2026/day-02/linux-architecture-notes.md @@ -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 + diff --git a/2026/day-03/linux-commands-cheatsheet.md b/2026/day-03/linux-commands-cheatsheet.md new file mode 100644 index 0000000000..a1aeaa3628 --- /dev/null +++ b/2026/day-03/linux-commands-cheatsheet.md @@ -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 \ No newline at end of file diff --git a/2026/day-04/linux-practice.md b/2026/day-04/linux-practice.md new file mode 100644 index 0000000000..d6712b9ff8 --- /dev/null +++ b/2026/day-04/linux-practice.md @@ -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 diff --git a/2026/day-05/linux-troubleshooting-runbook.md b/2026/day-05/linux-troubleshooting-runbook.md new file mode 100644 index 0000000000..c929a8e720 --- /dev/null +++ b/2026/day-05/linux-troubleshooting-runbook.md @@ -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 \ No newline at end of file diff --git a/2026/day-06/file-io-practice.md b/2026/day-06/file-io-practice.md new file mode 100644 index 0000000000..5e4fec9f88 --- /dev/null +++ b/2026/day-06/file-io-practice.md @@ -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 \ No newline at end of file diff --git a/2026/day-07/README.md b/2026/day-07/README.md index 613b241332..379331d87c 100644 --- a/2026/day-07/README.md +++ b/2026/day-07/README.md @@ -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) diff --git a/2026/day-07/day-07-linux-fs-and-scenarios.md b/2026/day-07/day-07-linux-fs-and-scenarios.md new file mode 100644 index 0000000000..55426bfa15 --- /dev/null +++ b/2026/day-07/day-07-linux-fs-and-scenarios.md @@ -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 diff --git a/2026/day-08/day-08-cloud-deployment.md b/2026/day-08/day-08-cloud-deployment.md new file mode 100644 index 0000000000..a6bf643bdb --- /dev/null +++ b/2026/day-08/day-08-cloud-deployment.md @@ -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 \ No newline at end of file diff --git a/2026/day-08/nginx-logs.txt b/2026/day-08/nginx-logs.txt new file mode 100644 index 0000000000..1af14631a5 --- /dev/null +++ b/2026/day-08/nginx-logs.txt @@ -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" diff --git a/2026/day-08/nginx-webpage.png.png b/2026/day-08/nginx-webpage.png.png new file mode 100644 index 0000000000..4f42a70ace Binary files /dev/null and b/2026/day-08/nginx-webpage.png.png differ diff --git a/2026/day-08/ssh-connection.png.png b/2026/day-08/ssh-connection.png.png new file mode 100644 index 0000000000..c6432cf16e Binary files /dev/null and b/2026/day-08/ssh-connection.png.png differ diff --git a/2026/day-09/README.md b/2026/day-09/README.md index 67aea03d24..db303760e3 100644 --- a/2026/day-09/README.md +++ b/2026/day-09/README.md @@ -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 diff --git a/2026/day-09/day-09-user-management.md b/2026/day-09/day-09-user-management.md new file mode 100644 index 0000000000..2afbe99e5c --- /dev/null +++ b/2026/day-09/day-09-user-management.md @@ -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 diff --git a/2026/day-10/day-10-file-permissions.md b/2026/day-10/day-10-file-permissions.md new file mode 100644 index 0000000000..24f660fa4a --- /dev/null +++ b/2026/day-10/day-10-file-permissions.md @@ -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 diff --git a/2026/day-10/files.png b/2026/day-10/files.png new file mode 100644 index 0000000000..62e6352eac Binary files /dev/null and b/2026/day-10/files.png differ diff --git a/2026/day-14/day-14-networking.md b/2026/day-14/day-14-networking.md new file mode 100644 index 0000000000..9e8adefa1a --- /dev/null +++ b/2026/day-14/day-14-networking.md @@ -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 ` — 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 ` (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 ` or `nslookup ` — queries DNS servers to resolve domain names to IP addresses. +- **HTTP check:** `curl -I ` — 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). \ No newline at end of file diff --git a/2026/day-14/ports.png b/2026/day-14/ports.png new file mode 100644 index 0000000000..fd5913d08a Binary files /dev/null and b/2026/day-14/ports.png differ diff --git a/2026/day-14/test.png b/2026/day-14/test.png new file mode 100644 index 0000000000..e57048a455 Binary files /dev/null and b/2026/day-14/test.png differ