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
# 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
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
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
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 head
và tail
Kết hợp hai công cụ để tạo ra một dòng lệnh cổ điển.
bash
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
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
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
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
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
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ệnhtar
trên tất cả các tệp được tìm thấy ({}
).czvf
chỉ địnhtar
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
grep -oi "error" ~/textlab/logs/log1.log | sort | uniq -c
Dòng Lệnh Tối Ưu:
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.| sort
: Sắp xếp danh sách lỗi. Đây là một bước chuẩn bị quan trọng chouniq
.| 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ặcfind / -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!