Mảng trong shell script• Mảng: •Tập hợp các giá trị dữ liệu được lưu trủ qua một tên chung •Giống như biến: không cần khai báo trước khi sử dụng •Được tự động tạo ra qua lần dùng đầu tiê
Trang 1Âu Bửu Long
Trang 2Mảng trong shell script
• Mảng:
•Tập hợp các giá trị dữ liệu được lưu trủ qua một tên chung
•Giống như biến: không cần khai báo trước khi sử dụng
•Được tự động tạo ra qua lần dùng đầu tiên
•Giá trị có thể rỗng
•Có thể gán nhiều giá trị thông qua 1 câu lệnh
•Có thể thực hiện các phép toán và xử lý chuỗi trên nó
• Khai báo thông qua lần gán đầu tiên:
<array_name>[xx]=<value>
Trang 3Mảng …
Ví dụ:
Newarr=(giatri1 giatri2 giatri3)
echo ${Newarr[1]}
Newarr[2]=giatri2moi
echo Newarr[2]
Newarr[4]=15
Newarr[6]=5
Newarr[7]=`expr ${Newarr[4]} + $ {Newarr[6]}`
echo ${Newarr[@]:2:2}
Trang 4BT
Viết file script ~/<tên mình>.sh chấp nhận 1 tham số là số nguyên dương n, thực hiện khởi tạo mảng n+1 phần tử chứa các số nguyên từ
0 - n
Trang 5Tìm kiếm
Lệnh find:
• Tìm một file trong một cây
• Cấu trúc:
find [path] [expression]
• Các tùy chọn:
• –name
• –type
• -mtime
• –exec
• –ok
Trang 6Tìm kiếm…
Các tham số con cho tham số type
b Block special
c Character special
d Directory
f Regular file
l Symbolic link
Tham số mtime:
-mtime số_ngày
VD:
-mtime 5
-mtime +5
-mtime -5
Trang 7Tìm kiếm
Tham số ok và exec: thực hiện một công việc nào đó trên kết quả tìm kiếm.
VD:
find –name temp –type f –ok rm {} \;
find / –name “*a*” –type d –exec ls -l {} \;
Trang 8Viết đoạn script tìm các file theo một đuôi
nào đó và copy chúng sang một thư mục cho trước Nếu trùng lại thì file được copy là file mới nhất Nếu thư mục đích chưa được tạo thì
sẽ tự tạo.
Trang 9Các lệnh cơ bản về mạng
ifconfig
nslookup
traceroute
ping
route
Trang 10Bài tập:
Viết các script thực hiện các yêu cầu sau:
Thông báo tất cả các trạng thái liên quan đến hoạt động của mạng hiện tại: tình trạng gateway, DNS, IP máy,
Cho trước một file text chứa một danh sách các
IP (trong cùng mạng với máy hiện tại) mỗi IP nằm trên 1 dòng, Mỗi lần chạy script sẽ kiểm tra đường gateway hiện tại có ra được internet? Nếu không ra được internet thì sẽ tự động đổi cấu hình theo đường gateway mới là 1 trong các IP đã cho
Trang 11Hệ thống log trong linux
Ghi lại nhật ký về các sự kiện trong hệ thống:
Các sự kiện lúc boot
Các lỗi của hệ thống
Chứng thực, xác thực
Các dịch vụ khác
Trang 12Hệ thống log trong linux
Các file log chính được đặt trong thư mục /var/log/
dmesg
boot
kern.log
message
udev
auth.log
Trang 13Bài tập
Viết đoạn script kiểm tra xem 10 ip nào đã đăng nhập không thành công nhiều lần nhất vào hệ thống, sử dụng các lệnh xử lý như cut,
tr, grep, sort trên đầu vào là các file log
Trang 14Quản lý tiến trình
Các tiến trình trong hệ thống được tổ chức
theo dạng cây.
• Quá trình khởi động và khởi tạo các tiến trình:
• init:
•Được khởi tạo bởi kernel lúc vừa khởi động
•Cha của mọi tiến trình khác trong hệ thống.
•getty:
•Được khởi tạo bởi init
• Quản lý terminal.
•login: Quản lý đặng nhập
•shell: Sau khi đăng nhập hoàn tất
Trang 15Quản lý tiến trình
Một số lệnh liên quan:
ps: xem trạng thái của các tiến trình
top: xem thông tin và độ ưu tiên xử lý của các tiến trình
pstree: xem cây các tiến trình
kill: tắt một tiến trình thông qua ID
killall: tắt một tiến trình thông qua tên
Trang 16Dịch vụ cron
Dùng chạy định kỳ một công việc nào đó
Hệ thống cron gồm các thư mục trong đó ta
có thể đặt script cần chạy tương ứng:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
Các thư mục và file cấu hình của cron được tự động giám sát định kỳ mỗi phút và tự cập nhật quá trình chạy.
Trang 17Dịch vụ cron
Ta có thể chỉ định quá trình chạy cụ thể qua file cấu hình: /etc/crontab
Cấu trúc của mỗi dòng:
m(minute) h(hour) d(day) dom(day of month) mon(month) dow(day of week) user command
Có thể thay các giá trị thời gian bằng wildcard
*
VD:
30 0 * * * root rm
/home/someuser/tmp/*
Trang 18Bài tập
Kết hợp dịch vụ cron với một file script để kiểm tra hoạt động của mạng định kỳ.