Mục lục

Trong vai trò một System Admin, có rất nhiều trường hợp bạn cần kỹ năng tìm kiếm file hoặc 1 chuỗi nào đó trong rất nhiều file.

VD: Bạn cần kiểm tra và dọn dẹp các file log (có đuôi .log, .trc), khi một phân vùng trên hệ thống đã gần đầy 100%.

 

1. Tìm kiếm file theo tên

1. Đặt vấn đề

Bạn muốn tìm kiếm một file trong hệ thống, bạn chỉ biết tên của file đó. Ví dụ: bạn muốn tìm kiếm file log của Oracle database, bạn biết file log sẽ được đặt tên theo cú pháp alert<ORACLE_SID>.log.

2. Giải pháp

Tìm kiếm các file mà tên file chứa từ alert và kết thúc file là từ log. Tại ví dụ này tôi tìm kiếm trong toàn bộ các phân vùng (tìm trong thư mục /).

$ cd /
$ find . -name "alert*.log"

Kết quả trả ra bao gồm đường dẫn chi tiết đến file:

/u01/app/oracle/diag/rdbms/lab/lab/trace/alert_lab.log


Trong thực tế nếu bạn sử dụng user không có quyền truy cập vào một số directory khi tìm kiếm, bạn sẽ thấy rất nhiều cảnh báo warning hiển thị ra màn hình, ví dụ như:

find: `./var/cache/ldconfig': Permission denied
find: `./var/cache/hald': Permission denied
find: `./var/cache/rpcbind': Permission denied
find: `./var/log/sssd': Permission denied
find: `./var/log/gdm': Permission denied


Để loại bỏ các warning đó, bạn có thể sử dụng lệnh sau:

$ find . -name "alert*.log" 2>/dev/null

 

2. Tìm kiếm 1 chuỗi ký tự trong nội dung nhiều file

1. Đặt vấn đề

Trong quá trình quản trị, sẽ có rất nhiều công việc bạn cần đến kỹ năng này.

Đọc thêm  [Ebook] The Linux Command Line - Download PDF

Giả sử bạn có một tập các file sql để thực hiện cập nhật Cơ sở dữ liệu, bạn muốn tìm xem file nào chứa câu lệnh “insert”. Hoặc bạn muốn tìm xem những file log nào có chứa cụm từ cảnh báo lỗi “ERROR”. Trong hệ thống có rất nhiều file log, nếu chúng ta tìm thủ công từng file thì sẽ mất rất nhiều thời gian.

2. Giải pháp

Thực hiện tìm kiếm sử dụng xargs kết hợp find

$ find /home/oracle/scripts/ -name "*.sql" | xargs grep -i "insert"


Kết quả trả ra bao gồm tên file và phần nội dung chứa chuỗi ký tự đang tìm kiếm:

/home/oracle/scripts/upcode1.sql:insert into test select * from hr.employees;

Giải thích câu lệnh

  • /home/oracle/scripts/ : đường dẫn chúng ta tìm kiếm
  •  -name “*.sql” : Tìm tất cả các file có đuôi là .sql
  •  xargs grep -i “insert” : nội dung trong các file có chứa chuỗi “insert”

Chúng ta cũng có thể sử dụng phương án sau:

$ find /home/oracle/scripts/ -name "*.sql" -exec grep -i "insert" '{}' \; -print

Kết quả trả ra như sau:

insert into test select * from hr.employees; → đây là nội dung trong file chứa chuỗi ký tự đang tìm kiếm
/home/oracle/scripts/upcode1.sql → đây là tên file chứa nội dung trên

Giải thích câu lệnh:

  • find /home/oracle/scripts/ -name “*.sql”: Tìm các file có tên file cuối cùng là “.sql” trong thư mục /home/oracle/scripts/
  • Kết quả của câu lệnh trên sẽ được đưa vào lệnh -exec ‘{}’, tại đây mỗi file sẽ được thực thi câu lệnh grep -i “insert”
  • Ký tự \; để kết thúc của lệnh -exec
  • -print để hiển thị tên các file tìm được
Đọc thêm  Bí kíp Linux #9: Xác định các Process đang chiếm quá nhiều CPU và Memory

Tại một số trường hợp bạn chỉ muốn hiển thị tên của file (không cần hiển thị nội dung) , bạn làm như sau:

$ find /home/oracle/scripts/ -name "*.sql" -exec grep -qi "insert" '{}' \; -print

Nguồn: https://dangxuanduy.com/

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

KHOÁ DÀNH CHO NGƯỜI MỚI

KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)

CÁC KHOÁ NÂNG CAO:

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD

CÁC KHOÁ COMBO:

COMBO 1: ADMIN 1 + MULTITENANT 12c

COMBO 2: ADMIN 1 + DATA GUARD

COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

https://forms.gle/MtCAoRQFenP886y79

Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x