สวัสดีค่าา กลับมาอีกแล้วกับซีรี่ส์ DevOps พังแล้วพังอีกพังต่อ

ก่อน EP นี้จะเริ่ม ขอเล่าให้ฟังหน่อยนึง ตอนที่เราฝึก HYROX ครั้งแรก โค้ชทีนบอกว่าต้องปูพื้นฐาน strength ก่อน ก่อนจะไปซ้อม compromised running หรือ sled push ได้ ถ้า base strength ไม่มา ไม่ว่าจะซ้อม sport-specific ยังไงก็พังกลางทาง

Linux กับ Terminal ก็เหมือนกันค่ะ มันคือ base strength ของ DevOps ถ้าไม่แม่น terminal ก็จะสะดุดตลอดใน EP ต่อๆไป เพราะเกือบทุกอย่างใน DevOps ทำผ่าน command line ทั้งนั้น

EP นี้เลยจะมาปูพื้นฐาน Linux กันให้แน่นก่อนเลยนะ


ทำไมต้อง Linux

ถ้าถามว่า server ส่วนใหญ่ในโลกรันระบบปฏิบัติการอะไร คำตอบคือ Linux ประมาณ 90%+ ของ server บนโลก รวมถึง cloud ยักษ์ใหญ่ทั้ง AWS, GCP, Azure ก็รัน Linux เป็นหลัก

ส่วน Windows อยู่บนเครื่องเราที่บ้าน ส่วน macOS ก็ดีนะ แต่ถ้าทำ DevOps จริงๆ ต้องพูด Linux ให้เป็น

ข่าวดี: ถ้าใช้ macOS อยู่ terminal ของ Mac มันก็ Unix-based เหมือนกัน คำสั่งส่วนใหญ่ใช้ได้เลย ส่วนถ้าใช้ Windows ก็ลง WSL2 (Windows Subsystem for Linux) ไว้จะได้ฝึกได้

Linux distro ไหนดี

Linux มีหลาย distro มาก แต่สำหรับ DevOps ที่ใช้กันเยอะที่สุดคือ

  • Ubuntu เหมาะสำหรับมือใหม่ community ใหญ่ หาวิธีแก้ปัญหาได้ง่าย
  • Debian stable มากๆ นิยมใช้บน server จริง
  • Amazon Linux ถ้าใช้ AWS จะเจอตัวนี้บ่อย

แนะนำให้เริ่มที่ Ubuntu ก่อนเลยค่ะ ง่ายที่สุด


ทำความรู้จักกับ File System

Linux มองทุกอย่างเป็น file รวมถึง hardware ด้วยนะ ส่วน structure ของ folder มันจะต่างจาก Windows อยู่นิดนึง

/ ← root ทุกอย่างเริ่มจากที่นี่ ├── home/ │ └── chao/ ← home directory ของ user ชื่อ chao │ ├── Documents/ │ └── Downloads/ ├── etc/ ← config files ทั้งหมด ├── var/ ← logs, databases ├── usr/ ← programs ที่ user ติดตั้ง ├── bin/ ← คำสั่งพื้นฐานของระบบ └── tmp/ ← ไฟล์ชั่วคราว

สิ่งที่ต้องจำไว้คือ / คือ root ซึ่งต่างจาก Windows ที่เริ่มที่ C:\ และ path ใน Linux ใช้ / ไม่ใช่ \


คำสั่งพื้นฐานที่ต้องรู้ก่อนนอน

ลิสต์นี้คือ minimum viable terminal ที่ถ้ารู้แล้วชีวิตจะดีขึ้นมาก จะแบ่งออกเป็นกลุ่มให้จำง่ายขึ้น

นำทางไปมา (Navigation)

# ดูว่าตอนนี้อยู่ที่ไหน
pwd

# ลิสต์ไฟล์ใน directory ปัจจุบัน
ls
ls -la    # แบบละเอียด รวม hidden files ด้วย

# เปลี่ยน directory
cd /home/chao/Documents
cd ..     # ขึ้นไป directory บน
cd ~      # กลับ home directory

จัดการไฟล์และ folder

# สร้าง directory
mkdir my-project
mkdir -p a/b/c    # สร้างทีเดียวหลายชั้น

# สร้างไฟล์เปล่า
touch notes.txt

# copy
cp notes.txt notes-backup.txt
cp -r my-project/ my-project-backup/    # copy ทั้ง folder

# move / rename
mv notes.txt important-notes.txt

# ลบ (ระวังมาก ไม่มี Trash)
rm notes.txt
rm -rf my-project/    # ลบ folder พร้อม content ทั้งหมด ⚠️

⚠️ rm -rf คือคำสั่งที่อันตรายที่สุดใน Linux ลบแล้วหายเลย ไม่มี undo เคยมีวิศวกรที่บริษัทดังพิมพ์ผิดแล้วลบ production server ทั้งหมดมาแล้ว ใช้ระวังดีๆ

ดูและแก้ไขเนื้อหาไฟล์

# ดูเนื้อหาไฟล์
cat config.txt
less config.txt    # ดูแบบ scroll ได้ กด q เพื่อออก

# ดูแค่ 10 บรรทัดแรก/สุดท้าย
head -n 10 logfile.txt
tail -n 10 logfile.txt
tail -f logfile.txt    # follow แบบ real-time เหมาะดู live log

ค้นหา

# หาไฟล์
find /home -name "*.txt"

# หาข้อความในไฟล์
grep "error" logfile.txt
grep -r "TODO" ./src/    # ค้นทุกไฟล์ใน folder

Permissions ระบบสิทธิ์ที่ต้องเข้าใจ

นี่คือส่วนที่คนส่วนใหญ่งงตอนแรก แต่พอเข้าใจแล้วมันก็ไม่ได้ซับซ้อนมากค่ะ

ลอง run ls -la แล้วจะเห็นแบบนี้

-rwxr-xr-- 1 chao staff 1234 Jun 1 10:00 script.sh
drwxr-xr-x 2 chao staff  128 Jun 1 09:00 my-folder

ตรง -rwxr-xr-- มันหมายความว่าอะไร

- rwx r-x r-- │ │ │ │ │ │ │ └── others: อ่านได้อย่างเดียว │ │ └────── group: อ่านและ execute ได้ │ └────────── owner: อ่าน เขียน execute ได้ทุกอย่าง └───────────── ประเภท: - คือไฟล์, d คือ directory

สิทธิ์แต่ละตัวคือ

  • r (read) อ่านได้
  • w (write) เขียน/แก้ไขได้
  • x (execute) รันเป็น program ได้
# เปลี่ยน permission ด้วย chmod
chmod +x script.sh        # ให้ทุกคน execute ได้
chmod 755 script.sh       # rwxr-xr-x แบบตัวเลข
chmod 600 secret-key.pem  # rw------- เจ้าของอย่างเดียว

💡 chmod 600 สำคัญมากสำหรับ SSH key และ secret files ถ้า permission กว้างเกินไป SSH จะ error ทันทีว่า "permissions are too open"


Process Management

ใน Linux เราสามารถดูและจัดการ process ที่กำลังรันอยู่ได้

# ดู process ทั้งหมด
ps aux

# ดูแบบ real-time (เหมือน Task Manager)
top
htop    # สวยกว่า ต้องติดตั้งเพิ่ม

# หยุด process
kill 1234        # ส่ง signal ให้ process ID 1234
kill -9 1234     # force kill ไม่สน
pkill nginx      # kill ด้วยชื่อ process

Networking เบื้องต้น

# ทดสอบว่าเชื่อมต่อได้ไหม
ping google.com

# ดู IP ของเครื่อง
ip addr
ifconfig    # แบบเก่า

# เช็ค port ที่เปิดอยู่
ss -tlnp
netstat -tlnp

# ดึงข้อมูลจาก URL
curl https://api.example.com/users
wget https://example.com/file.zip    # download ไฟล์

SSH เชื่อมต่อ server ระยะไกล

SSH (Secure Shell) คือวิธีที่ DevOps Engineer เชื่อมต่อเข้า server ที่อยู่ที่อื่น เหมือน remote control แต่เป็น command line

# เชื่อมต่อ server
ssh username@192.168.1.100
ssh -i my-key.pem ubuntu@ec2-xx-xx-xx.compute.amazonaws.com

# copy ไฟล์ผ่าน SSH
scp file.txt username@server:/home/username/
scp -r my-folder/ username@server:/home/username/

ในชีวิตจริงเวลา deploy อะไรขึ้น cloud หรือเข้าไปดู log บน server คำสั่งแรกที่พิมพ์เสมอคือ ssh ค่ะ


Shell Scripting เริ่มต้น

พอรู้คำสั่งพื้นฐานแล้ว ขั้นต่อมาคือเอามารวมกันเป็น script เพื่อทำงานซ้ำๆ โดยอัตโนมัติ

#!/bin/bash
# ไฟล์ชื่อ deploy.sh

echo "เริ่ม deploy..."

# ดึง code ล่าสุด
git pull origin main

# ติดตั้ง dependencies
npm install

# รัน tests
npm test

# ถ้า test ผ่าน ค่อย restart server
if [ $? -eq 0 ]; then
    echo "Test ผ่านหมด กำลัง restart..."
    systemctl restart myapp
    echo "Deploy เสร็จแล้ว ✓"
else
    echo "Test fail! ยกเลิก deploy"
    exit 1
fi

แค่ไฟล์นี้ไฟล์เดียว แทนที่การพิมพ์คำสั่งทีละบรรทัดหลายครั้งต่อวัน นี่แหละคือ automation เริ่มต้น

🧠 เปรียบเหมือนการทำ workout program ไว้ล่วงหน้า แทนที่จะมาคิดทุกวันว่าวันนี้จะเล่นอะไรดี เขียนโปรแกรมไว้เลย แล้ว execute ตามนั้น ชีวิตง่ายขึ้นมากจริงๆ


Text Editor ที่ต้องรู้จัก: Vim

Vim คือ text editor ที่อยู่บนทุก Linux server ไม่ว่าจะลง distro ไหนก็มี Vim ให้ใช้เสมอ เลยต้องรู้ไว้บ้างนะ

Vim มี mode สองหลักๆ

  • Normal mode สำหรับ navigate และสั่งการ (mode เริ่มต้น)
  • Insert mode สำหรับพิมพ์ text กด i เพื่อเข้า
vim myfile.txt     # เปิดไฟล์

# ใน Normal mode:
i                  # เข้า Insert mode
Esc                # กลับ Normal mode
:w                 # save
:q                 # quit
:wq                # save แล้ว quit
:q!                # quit โดยไม่ save (ฉุกเฉิน 5555)

# ใน Normal mode ย้าย cursor:
h j k l            # ซ้าย ล่าง บน ขวา
gg                 # ไปบรรทัดแรก
G                  # ไปบรรทัดสุดท้าย

Joke อมตะของโปรแกรมเมอร์: "ฉันใช้ Vim มา 3 ปีแล้ว เพราะยังหาวิธีออกไม่ได้" 5555 จริงๆแล้วแค่กด :q! ก็ออกได้แล้วนะ


สรุป EP.2

ที่เรียนมาใน EP นี้ทั้งหมด

  • Linux คือ OS หลักของ server และ cloud ทั่วโลก
  • File system ของ Linux เริ่มจาก / ลงมา
  • คำสั่งพื้นฐาน: navigation, file management, ดู process, networking, SSH
  • Permission system: r w x สำหรับ owner / group / others
  • Shell scripting เอาคำสั่งมาเรียงเป็น script ทำ automation ได้
  • Vim พอใช้งานได้ในยามฉุกเฉิน

🏋️ การบ้าน: เปิด terminal แล้วลองสร้าง folder ชื่อ devops-practice เขียน shell script ที่ print "Hello DevOps" แล้วรันดู ถ้าทำได้แสดงว่าพร้อมไป EP.3 แล้วค่ะ