Buổi 3. Shell Scripting, quản lí tiến trình, nhật ký hệ thống

📝 ĐỀ BÀI

1.Cài đặt CentOS

Câu 1

Thực hiện cài đặt CentOS 6 (hoặc CentOS 7, 8) vào máy tính cá nhân (hoặc máy ảo) của bạn (KHÔNG cần chụp màn hình minh hoạ)

Link file ISO CentOS 8open in new window

2. Quản trị với shell scripting

Câu 2.1

Thực hiện các lệnh bên dưới và cho biết kết quả của chúng (Chụp màn hình minh hoạicons8screenshotpng)

$ hostname
$ hostname -I
$ whoami
$ df -H
$ ps -eo pid,%mem,%cpu,comm --sort -rss
  • hostname : Kiểm tra host hiện tại

    db0997500f9efdc0a48f.jpeg

  • hostname -I : Hiển thị tất cả địa chỉ IPv4 mạng của host ()

    91cff89660589206cb49.jpeg

  • whoami (Who Am I): hiển thị ra người dùng đang thao tác

    c9aa14fc8c327e6c2723.jpeg

  • df -H : Kiểm tra thông tin tất cả ổ cứng

    57c59f93075df503ac4c.jpeg

  • ps -eo pid,%mem,%cpu,comm --sort -rss | head -n 3 : Giải thích bên dưới

    36faeaac7262803cd973.jpeg

    💡 GIẢI THÍCH

    • ps (Process Status) : công cụ quản lí tiến trình

    • -eo : Hiển thị tất cả tiến trình có chọn lọc

    • pid (Process ID) : Mã tiến trình

    • %mem,%cpu : Sử dụng bộ nhớ và vi xử lý tiến trình (%)

    • comm : đường dẫn của tiến trình

    • --sort : sắp xếp tiến trình

    • -rss (resident set size) : đi chung với vsz, hiển thị dung lượng bộ nhớ được phân bổ cho tiến trình trong RAM

    • | head -n 3 : sử dụng ống dẫn (pipe) để hiển thị 3 dòng đầu tiên

Câu 2.2

Viết shell script có tên info.sh thực hiện tất cả lệnh ở 2.1 (Chụp màn hình minh hoạicons8screenshotpng)

  • Sử dụng gedit + <file> để tạo file như sau :

  • Sử dụng lệnh bash + <file> để thực thi file :

Câu 2.3

Viết shell script có tên backup.sh thực hiện :

  • In ra ngày giờ hiện tại

  • Nén toàn bộ thư mục /home thành tập tin /tmp/<YYYY-MM-DD>.tar (YYYY-MM-DD là ngày hiện tại, ví dụ : 2020-04-22.tar)

  • In thông tin đầy đủ của tập tin /tpmn/<YYYY-MM-DD>.tar

  • In ra thông tin thông báo "Sao lưu thành công!!!!"

  • Thực thi backup.sh để kiểm tra (Chụp màn hình minh hoạicons8screenshotpng)

  • Sử dụng gedit + <file> để tạo file như sau :

  • Sử dụng lệnh bash + <file> để thực thi file :

3. Lên lịch công việc định kỳ với cron

💡 KIẾN THỨC

Cron là một tiện ích trong Linux cho phép máy tính thiết lập thời gian biểu để thực hiện công việc một cách định kỳ. Một file crontab chứa danh sách các lệnh sẽ được thực thi, kèm theo thông tin về thời điểm lặp lại việc thực thi. Để hiệu chỉnh file crontab với trình soạn thảo nano, ta dùng lệnh sau :

$ export EDITOR=nano
$ crontab -e

Câu 3.1

Chạy lệnh date mỗi phút một lần, sau đó khi kết quả vào cuối tập tin /tmp/date.txt (Chụp màn hình minh hoạicons8screenshotpng)

Dùng lệnh export EDITOR=<tên editor>, để thay đổi trình chỉnh sửa mặc định

💡 GIẢI THÍCH

  • crontab -e : chỉnh sửa file crontab

  • crontab -l : xem file crontab

    68981e4e0d87ffd9a696.jpeg

  • crontab -r : xoá file crontab

==> Sau một phút tự động sẽ cập nhật giờ trong file /tmp/data.txt :

c7ef2b2638efcab193fe.jpeg

121d92d4811d73432a0c.jpeg

Câu 3.2

Thực thi backup.sh2.3 vào 23:00 giờ ngày 10,20 và 30 hằng tháng (Chụp màn hình minh hoạicons8screenshotpng)

c93589fd9a34686a3125.jpeg

==> Cứ mỗi 23h ngày 10,20,30 hằng tháng tự động sẽ thực thi file backup.sh

4. Thao tác với tiến trình

Câu 4.1

Mở trình duyệt Firefox. Sau đó dùng lệnh ps -aux hoặc pgrep tìm PID của Firefox.

Tiếp theo, dùng lệnh kill để tạm dừng tiến trình Firefox (Chụp màn hình minh hoạicons8screenshotpng). Điều gì xảy ra khi bạn dịch chuyển cửa sổ Firefox hoặc nhấn chọn menu của nó ngay lúc này ?

  • Sử dụng lệnh pgrep để tìm ID tiến trình :

    69041d6b7ba289fcd0b3.jpeg

  • Sử dụng lệnh kill -s STOP <PID> sẽ tạm dừng tiến trình :

    💡 CHÚ Ý

    Ngay lập tức ta không thể thao tác được gì từ Firefox

Câu 4.2

Dùng lệnh kill để phục hồi trạng thái trước đó của Firefox và quan sát kết quả (Chụp màn hình minh hoạicons8screenshotpng)

Sử dụng lệnh sau đây để khôi phục tiến trình vừa dùng :

$ kill -s CONT <PID>

Ảnh chụp Màn hình 2021-04-12 lúc 12.50.48.png

💡 CHÚ Ý

Ngay lập tức ta có thể thao tác Firefox lại bình thường

Câu 4.3

Dùng lệnh kill để huỷ tiến trình Firefox (Chụp màn hình minh hoạicons8screenshotpng)

Sử dụng lênh sau đây để thoát tiến trình ngay lập tức :

$ kill -s KILL <PID>

Ảnh chụp Màn hình 2021-04-12 lúc 12.52.22.png

💡 CHÚ Ý

Tiến trình Firefox ngay lập tức sẽ bị tắt đi.

5. Tập tin log

Câu 5.1

Tìm thông tin về người dùng, thời gian của lần đăng nhập sau cùng vào hệ thống (Chụp màn hình minh hoạicons8screenshotpng)

Sử dụng lệnh last để hiển thị thông tin nhật ký đăng nhập trên máy:

💡 FACT

Nhưng ta có thể sử dụng lệnh last kèm theo ống dẫn head -n -1 để hiển thị thời gian đăng nhập cuối cùng như sau :

6c47c620b3e941b718f8.jpeg

Câu 5.2

Tạo một người dùng mới

Sử dụng lệnh adduser hoặc useradd để tạo người dùng mới (dùng tài khoản root) (Mình tạo tên newUser)

Câu 5.3

Tìm thời gian người dùng ở 5.2 được tạo ra (Chụp màn hình minh hoạicons8screenshotpng)

Thông tin tạo người dùng nằm trong file /var/log/secure, sử dụng lệnh cat để in ra (dùng tài khoản root)

💡 FACT

Ta nên kèm theo ống dẫn để tìm kiếm nhanh hơn như sau :

b2ad08ca7d038f5dd612.png

Cập nhật lúc :
Tác giả: Zenfection, Zenfection