0

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 tra pwdls trướ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ả renamemove


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 -f thườ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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí