Lab 1 — Linux Fundamentals for DevOps
1. Mục tiêu
Trong công việc DevOps, Linux là nền tảng của hầu hết mọi thứ:
Developer
↓
Docker
↓
Kubernetes
↓
Cloud
↓
Linux
Kubernetes node, Docker host, CI/CD server, monitoring server... đều thường chạy trên Linux.
Sau lab này, bạn có thể:
- Hiểu Linux filesystem cơ bản.
- Di chuyển và thao tác với file/directory.
- Tìm kiếm file và nội dung.
- Đọc log.
- Sử dụng pipe
|và redirect>. - Biết một số command thường dùng khi troubleshooting server.
2. Chuẩn bị môi trường
Nếu đang sử dụng macOS, bạn có thể thực hành Linux thông qua một Ubuntu VM.
Kiểm tra hệ điều hành:
uname -a
Ví dụ:
Linux ubuntu 6.x.x-generic x86_64 GNU/Linux
Kiểm tra phiên bản Ubuntu:
cat /etc/os-release
Bạn cũng có thể dùng Docker để tạo môi trường Ubuntu tạm thời:
docker run -it --name linux-lab ubuntu:24.04
Sau khi vào container:
apt update
apt install -y curl vim procps
Tip: Nếu mục tiêu của bạn là học DevOps, nên có một Ubuntu VM riêng. Container rất tiện để học command nhưng không mô phỏng đầy đủ một Linux server.
3. Linux Filesystem
Khác với Windows, Linux sử dụng một filesystem duy nhất bắt đầu từ:
/
Một số thư mục quan trọng:
/
├── etc → File cấu hình
├── home → Home directory của user
├── var → Data thay đổi thường xuyên, đặc biệt là log
├── tmp → File tạm
├── usr → Application và system utilities
├── opt → Application bổ sung
└── root → Home của root user
Trong DevOps, bạn sẽ thường xuyên làm việc với:
/etc
/var/log
/opt
/home
/tmp
Ví dụ:
cd /var/log
Xem nội dung:
ls
4. Làm việc với Directory
Xem thư mục hiện tại
pwd
Ví dụ:
/home/devops
pwd = Print Working Directory.
Liệt kê file
ls
Xem chi tiết:
ls -l
Bao gồm file ẩn:
ls -la
Một command rất hay dùng:
ls -lah
Trong đó:
-l → detailed
-a → hidden files
-h → human-readable
Di chuyển
cd /var/log
Quay về thư mục home:
cd ~
Quay về thư mục trước đó:
cd -
Lên một cấp:
cd ..
Tip:
cd -cực kỳ tiện khi phải chuyển qua lại giữa hai directory.
5. Tạo và xóa Directory
Tạo directory:
mkdir devops-lab
Tạo nhiều cấp:
mkdir -p project/backend/logs
Xóa directory rỗng:
rmdir devops-lab
Xóa directory có nội dung:
rm -r devops-lab
⚠️ Cẩn thận với rm
rm -rf
có nghĩa là:
-r → recursive
-f → force
Lệnh này có thể xóa rất nhiều dữ liệu mà không hỏi lại.
Kinh nghiệm thực tế: Trước khi chạy
rm -rf, hãy kiểm trapwdvàlstrước. Rất nhiều lỗi nghiêm trọng trên server bắt đầu từ việc xóa nhầm directory.
6. Làm việc với File
Tạo file:
touch app.log
Ghi nội dung:
echo "Application started" > app.log
Xem file:
cat app.log
Thêm nội dung:
echo "Application stopped" >> app.log
Điểm khác biệt:
> → ghi đè
>> → thêm vào cuối
Ví dụ:
echo "A" > test.txt
echo "B" > test.txt
Kết quả:
B
Trong khi:
echo "A" > test.txt
echo "B" >> test.txt
Kết quả:
A
B
7. Copy và Move
Copy:
cp app.log backup.log
Copy directory:
cp -r project project-backup
Đổi tên:
mv app.log application.log
Di chuyển:
mv application.log /tmp/
Trong Linux, mv được sử dụng cho cả rename và move
8. Đọc Log
Trong DevOps, đọc log là công việc hàng ngày.
Xem toàn bộ nội dung:
cat app.log
Xem vài dòng đầu:
head app.log
Xem vài dòng cuối:
tail app.log
Đặc biệt hữu ích:
tail -f app.log
-f = follow.
Nó sẽ tiếp tục theo dõi file khi có log mới.
Ví dụ:
tail -f app.log
Các log của app sẽ được hiển thị theo thời gian thực giống như xem log ở terminal.
Kinh nghiệm thực tế: Khi debug application,
tail -fthường là một trong những command đầu tiên bạn sử dụng.
9. Tìm kiếm File
Tìm file:
find . -name "*.log"
Ví dụ:
./logs/app.log
./logs/error.log
./backup/app.log
Tìm trong /var/log:
find /var/log -name "*.log"
10. Tìm kiếm nội dung với grep
Giả sử:
app.log
có:
INFO Application started
INFO Database connected
ERROR Database connection failed
INFO Retry connection
ERROR Connection timeout
Tìm tất cả ERROR:
grep "ERROR" app.log
Không phân biệt chữ hoa/thường:
grep -i "error" app.log
Đếm số dòng:
grep -c "ERROR" app.log
Đây là command cực kỳ quan trọng trong DevOps.
11. Pipe |
Pipe cho phép đưa output của command này làm input cho command khác.
Ví dụ:
cat app.log | grep ERROR
Có thể hiểu:
cat app.log
↓
output
↓
grep
↓
ERROR
Một ví dụ thực tế hơn:
ps aux | grep nginx
Nghĩa là:
Liệt kê process
↓
Chỉ giữ process chứa "nginx"
Sau này khi làm Kubernetes, bạn sẽ thường gặp kiểu:
kubectl get pods | grep backend
12. Redirect Output
Ghi output vào file:
ls -lah > files.txt
Sau đó:
cat files.txt
Thêm output:
date >> files.txt
Có thể kết hợp:
grep ERROR app.log > errors.txt
Kết quả:
app.log
↓
grep ERROR
↓
errors.txt
13. Bài thực hành
Tạo project:
mkdir -p ~/linux-lab/logs
cd ~/linux-lab
Tạo log:
touch logs/app.log
Thêm dữ liệu:
echo "INFO Application started" >> logs/app.log
echo "INFO Database connected" >> logs/app.log
echo "ERROR Database connection failed" >> logs/app.log
echo "INFO Retry connection" >> logs/app.log
echo "ERROR Connection timeout" >> logs/app.log
Kiểm tra:
cat logs/app.log
Tìm ERROR:
grep "ERROR" logs/app.log
Đếm ERROR:
grep -c "ERROR" logs/app.log
Lưu ERROR vào file:
grep "ERROR" logs/app.log > logs/errors.log
Kiểm tra:
cat logs/errors.log
14. Bài tập nâng cao
Giả sử có file:
access.log
với nội dung:
200 GET /api/todos
200 GET /api/todos
500 POST /api/todos
404 GET /api/users
200 GET /api/todos
500 POST /api/todos
Hãy thực hiện:
Bài 1
Tìm tất cả request 500.
grep "500" access.log
Bài 2
Đếm số request 500.
grep -c "500" access.log
Bài 3
Lưu chúng vào:
errors.log
Bài 4
Theo dõi log realtime:
tail -f access.log
Sau đó mở terminal khác:
echo "500 POST /api/todos" >> access.log
Quan sát terminal đang chạy tail -f.
15. Một số command cần nhớ
Bạn chưa cần nhớ hàng trăm command. Trước mắt hãy thành thạo nhóm này:
| Command | Mục đích |
|---|---|
pwd |
Xem directory hiện tại |
ls |
Liệt kê file |
cd |
Di chuyển |
mkdir |
Tạo directory |
touch |
Tạo file |
cp |
Copy |
mv |
Move/Rename |
rm |
Xóa |
cat |
Đọc file |
less |
Đọc file lớn |
head |
Xem đầu file |
tail |
Xem cuối file |
tail -f |
Theo dõi log realtime |
find |
Tìm file |
grep |
Tìm nội dung |
echo |
In/ghi text |
> |
Ghi đè |
>> |
Append |
| |
Pipe |
16. Tư duy quan trọng nhất của Lab này
Đừng học Linux theo kiểu:
"Tôi phải thuộc tất cả command."
Thay vào đó, hãy học theo vấn đề.
Ví dụ:
Tôi cần tìm file log.
- Nghĩ tới
find
Đây chính là cách sử dụng Linux trong thực tế.
17. Kết quả cần đạt
Sau Lab 1, bạn không cần trở thành Linux expert.
Nhưng bạn phải có thể tự làm được:
✓ Di chuyển filesystem
✓ Tạo/xóa/copy/move file
✓ Đọc log
✓ Theo dõi log realtime
✓ Tìm file
✓ Tìm nội dung trong file
✓ Redirect output
✓ Kết hợp command bằng pipe
✓ Hiểu /etc, /var/log, /home, /tmp
✓ Biết cách tiếp cận một vấn đề trên Linux
Và đặc biệt, hãy nhớ nguyên tắc:
Problem
↓
Xác định mình cần tìm gì
↓
Chọn command phù hợp
↓
Kết hợp command nếu cần
↓
Kiểm tra kết quả
Đây là nền tảng troubleshooting mà chúng ta sẽ sử dụng xuyên suốt các lab Ansible → Docker → Kubernetes → CI/CD → Monitoring sau này.
All rights reserved