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.
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
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 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é.