0
0
Lập trình
Admin Team
Admin Teamtechmely

Trở Thành Siêu Anh Hùng Dòng Lệnh Linux

Đăng vào 3 ngày trước

• 5 phút đọc

Giới Thiệu

Bạn có cảm thấy choáng ngợp trước hàng gigabyte tệp log? Hay bối rối trước các cấu hình phức tạp? Trong thế giới DevOps và SRE, dòng lệnh không chỉ là công cụ mà còn là siêu năng lực của bạn. Việc thành thạo thao tác văn bản là chìa khóa để gỡ lỗi, tự động hóa và quản trị hệ thống.

Hôm nay, chúng ta sẽ tham gia vào một khóa huấn luyện thực hành: Trại Huấn Luyện Các Siêu Anh Hùng Dòng Lệnh Linux. Bạn sẽ sử dụng các công cụ huyền thoại như grep, sed, awk, và find để phân tích dữ liệu, phát hiện thông tin quan trọng và cứu hệ thống khỏi hỗn loạn.

Sẵn sàng kiếm cho mình chiếc áo choàng chưa? Bắt đầu thôi nào! 🦸‍♀️

Chuẩn Bị Nhiệm Vụ: Xây Dựng Căn Cứ

Đầu tiên, mỗi siêu anh hùng đều cần một căn cứ hoạt động. Mở terminal của bạn và tạo phòng thí nghiệm.

bash Copy
# Tạo và vào thư mục huấn luyện
mkdir ~/textlab
cd ~/textlab

Tiếp theo, tạo tệp thông tin chính (myfile.txt) mà chúng ta sẽ làm việc.

bash Copy
cat << EOF > myfile.txt
Dòng 1: Đây là một tệp thử nghiệm. Khởi tạo hệ thống...
Dòng 2: Quyền truy cập quản trị viên đã được cấp. Cẩn thận với các tác nhân xấu.
Dòng 3: Sử dụng bộ nhớ: 500MB. Hệ thống ổn định.
Dòng 4: Nhập log lỗi: Phát hiện hành vi truy cập trái phép.
Dòng 5: Địa chỉ IP: 192.168.1.100. Máy chủ mục tiêu.
Dòng 6: Mật khẩu: secret123. KHÔNG CHIA SẺ.
Dòng 7: Cuối tệp. Nhiệm vụ quan trọng.
EOF

Cuối cùng, hãy mô phỏng một số hoạt động của kẻ thù bằng cách tạo các tệp log.

bash Copy
mkdir ~/textlab/logs
echo "lỗi: đĩa đầy. Hệ thống bị xâm phạm!" > ~/textlab/logs/log1.log
echo "LỖI: mạng bị ngắt. Thông tin liên lạc bị gián đoạn!" > ~/textlab/logs/log2.log
echo "cảnh báo: bộ nhớ thấp. Ổn định hệ thống bị đe dọa!" >  ~/textlab/logs/log3.log

Chiến Dịch: Thao Tác Văn Bản - Những Thử Thách

Với thiết lập hoàn tất, đã đến lúc đối mặt với các thử thách.

1. Giải Mã Thông Tin

Nhiệm Vụ: Hiển thị dòng 5 từ myfile.txt để tìm địa chỉ IP mục tiêu.

Phương pháp 1: Dao sed
sed (Trình Biên Tập Dòng) hoàn hảo cho sự chính xác phẫu thuật.

bash Copy
sed -n '5p' ~/textlab/myfile.txt

Cách hoạt động: Cờ -n yêu cầu sed im lặng, và 5p chỉ rõ prints duy nhất dòng 5.

Phương pháp 2: Kết Hợp headtail
Kết hợp hai công cụ để tạo ra một dòng lệnh cổ điển.

bash Copy
head -n 5 ~/textlab/myfile.txt | tail -n 1

Cách hoạt động: head lấy 5 dòng đầu tiên, và tail lấy dòng cuối cùng của kết quả đó. Đơn giản và hiệu quả!


2. Săn Lùng Mục Tiêu

Nhiệm Vụ: Một tác nhân xấu đã thay đổi "Quản trị viên" thành "root". Khôi phục lại sự phá hoại!

Trước tiên, hãy mô phỏng sự phá hoại: sed -i 's/Administrator/root/' ~/textlab/myfile.txt

Bây giờ, sửa chữa lại:

bash Copy
sed -i 's/root/Administrator/' ~/textlab/myfile.txt

Cách hoạt động: Lệnh sed -i thực hiện chỉnh sửa tại chỗ. Cú pháp s/find/replace/ substitutes "root" trở lại "Administrator" trực tiếp trong tệp. Nhiệm vụ hoàn thành.


3. Xóa Thông Tin Nhạy Cảm

Nhiệm Vụ: Một mật khẩu đã bị lộ! Ngay lập tức xóa dòng chứa "Mật khẩu" khỏi tệp.

bash Copy
sed -i '/Password/d' ~/textlab/myfile.txt

Cách hoạt động: Một lần nữa, chúng ta sử dụng sed -i để chỉnh sửa tại chỗ. Kịch bản '/Password/d' tìm bất kỳ dòng nào chứa mẫu và deletes nó. Bằng chứng đã biến mất.


4. Tình Báo Hệ Thống

Nhiệm Vụ: Có cái nhìn tổng quát nhanh về việc sử dụng bộ nhớ bằng cách trích xuất cột thứ 6 từ danh sách tiến trình.

bash Copy
ps aux | awk '{print $6}'

Cách hoạt động: ps aux liệt kê tất cả tiến trình đang chạy. Chúng ta sử dụng | để chuyển kết quả khổng lồ đó đến awk. awk là một ngôn ngữ mạnh mẽ để xử lý dữ liệu dạng cột. {print $6} yêu cầu nó in ra chỉ cột thứ 6, đó là Kích thước Bộ Nhớ Thực Tế (RSS) - bộ nhớ vật lý mà mỗi tiến trình đang sử dụng.


5. Lưu Trữ Bằng Chứng

Nhiệm Vụ: Tìm tất cả các tệp log lớn (.log > 1MB) và lưu trữ chúng để phân tích sau.

Trước tiên, hãy làm cho một trong những log của chúng ta đủ lớn:

bash Copy
for i in {1..100000}; do echo "dòng lấp đầy $i" >> ~/textlab/logs/log1.log; done

Bây giờ, tìm và lưu trữ nó:

bash Copy
find ~/textlab/logs -name "*.log" -size +1M -exec tar -czvf ~/textlab/archived_logs.tar.gz {} +

Cách hoạt động:

  • find ~/textlab/logs: Tìm kiếm thư mục mục tiêu.
  • -name "*.log": Tìm các tệp có đuôi .log.
  • -size +1M: Lọc các tệp lớn hơn 1 Megabyte.
  • -exec tar ... {} +: Thực thi lệnh tar trên tất cả các tệp được tìm thấy ({}). czvf chỉ định tar create một g*z ipped, **v erbose archive đến tệp đã chỉ định **f*ile.

6. Tìm Kiếm Mẫu

Nhiệm Vụ: Một báo động đang reo! Đếm số lần xuất hiện không phân biệt chữ hoa chữ thường của từ "lỗi" trong log1.log để đánh giá mức độ nghiêm trọng.

bash Copy
grep -oi "error" ~/textlab/logs/log1.log | sort | uniq -c

Dòng Lệnh Tối Ưu:

  1. grep -oi "error": Tìm tất cả các occurrences của "error" (không phân biệt chữ hoa chữ thường) và in mỗi cái trên một dòng riêng.
  2. | sort: Sắp xếp danh sách lỗi. Đây là một bước chuẩn bị quan trọng cho uniq.
  3. | uniq -c: Đếm số unique dòng đã sắp xếp và in ra số count.

Dòng lệnh này ngay lập tức cho bạn biết có bao nhiêu loại lỗi mà bạn đang xử lý - một người bạn tốt nhất của SRE trong thời gian gián đoạn.

Tại Sao Những Kỹ Năng Này Là Siêu Năng Lực Của Bạn

Bạn không chỉ thực thi một số lệnh; bạn đã đào tạo trong các nghệ thuật cốt lõi của quản trị hệ thống.

  • Gỡ Lỗi Sự Cố: grep | sort | uniq -c là công cụ của bạn để tìm kim trong đống cỏ khô của các tệp log.
  • Kiểm Tra An Ninh: grep "password" hoặc find / -name "*.bak" giúp bạn tìm các tệp không an toàn và bí mật.
  • Tự Động Hóa: sed là động cơ đứng sau vô số kịch bản sửa đổi tệp cấu hình ngay lập tức.
  • Tự Tin: Biết những công cụ này nghĩa là không có hệ thống, container, hay phiên bản đám mây nào là một hộp đen.

Hãy tiếp tục thực hành, giữ sự tò mò, và sớm thôi bạn sẽ là người mà mọi người gọi khi các máy chủ gặp sự cố.

Bạn có những mẹo nào yêu thích về xử lý văn bản dòng lệnh không? Chia sẻ chúng trong phần bình luận bên dưới!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào