PHẦN BÀI LÀM THỰC HÀNHLAB 4: QUẢN LÝ TIẾN TRÌNH TRONG LINUXThời lượng: 3 tiếtNội dung:- Xem thông tin về tiến trình process bằng GUI và CMD- Liên lạc giữa các tiến trình- Độ ưu tiên của
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
Khoa: Công Nghệ Thông Tin
Instructor : Gv Võ Công Minh
Faculty : Công Nghệ Thông Tin
Completed Date : 27/03/2023
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Điểm lab report:
Trang 3PHẦN BÀI LÀM THỰC HÀNH
LAB 4: QUẢN LÝ TIẾN TRÌNH TRONG LINUX
Thời lượng: 3 tiết
Nội dung:
- Xem thông tin về tiến trình (process) bằng GUI và CMD
- Liên lạc giữa các tiến trình
- Độ ưu tiên của các tiến trình
- Tham khảo thêm các câu lệnh console trong lab 2
Quản lý tiến trình (Process Management)
1. Sử dụng lệnh top để xem thông tin về các tiến trình, và thông tin chung của hệ thống
- Mở Terminal rồi gõ lệnh top
PID: ID tiến trình của từng nhiệm vụ.
Trang 4USER: Tên người dung sở hữu tiến trình.
PR: Ưu tiên lập lịch của một nhiệm vụ.
NI: Giá trị của một nhiệm vụ Số Am cho thấy mức độ ưu tiên cao hơn VIRT: Lượng bộ nhớ ảo đang được sử dụng.
RES: Lượng bộ nhớ thường trú đang được sử dụng.
SHR: Lượng bộ nhớ chia sẻ đang được sử dụng
S: Trạng thái của một tác vụ (R = đang chạy, S = đang ngủ).
%CPU: Phần trăm CPU hiện tại đang được sử dụng bởi một tác vụ/
TIME+: Thời gian CPU của một tác vụ.
COMMAN: tên lệnh được thực thi.
Lệnh: Lệnh dùng để sinh ra nhiệm vụ.
2. Sử dụng lệnh ps để xem thông tin về các tiến trình
a Xem tất cả các process : (dạng cây)
ps -eljH | pstree | more
b Xem tiến trình cha (tổ tiên) của lệnh ps vừa thực thi : xem cột PID, PPID
Trang 5PPID: ID của tiến trình cha.
c Kiểm tra một số dịch vụ đã chạy chưa ? ( như cron, atd , sshd,
…) ps -e |grep cron
d Xem trạng thái của process (running, sleeping,…) : xem cột S
ps -eljH |more
Trang 6- Z - Zombie (tiến trình đã kết thúc nhưng vẫn còn trong bảng tiến trình).
- I - các tiến trình hệ thống và các tiến trình đang chờ tương tác từ người dùng hoặc các sự
kiện I/O (Input/Output)
e Xem các process của user hiện hành
Trang 7Mở một terminal mới (tty4), login vào bằng tài khoản user2 Chạy top.
Trên terminal của root, dùng lệnh:
ps -a //hiển thị các process đang chạy trên các terminal hay
Trang 8- TTY - terminal nơi tiến trình được thực thi.
ps -af //hiển thị các process đang chạy trên các terminal và chủ nhân
3 Sử dụng lệnh kill và killall
a Xem danh sách các SIGNAL của lệnh kill
Trang 9kill -l
b Xem ý nghĩa của 4 SIGNAL thường dùng (đọc manual)
1 SIGINT (signal interrupt): Đây là tín hiệu được gửi bởi bàn phím khi người dùng
nhấn Ctrl+C Tín hiệu này được sử dụng để yêu cầu tiến trình dừng lại hoặc hủy bỏ.Thông thường, các tiến trình như lệnh đang chạy trong terminal sẽ nhận tín hiệu này
và dừng lại ngay lập tức
2 SIGTERM (signal terminate): Tín hiệu này được sử dụng để yêu cầu tiến trình
dừng lại hoặc kết thúc một cách bình thường Điều này cho phép tiến trình kết thúccác tác vụ cần thiết trước khi dừng lại Đối với các tiến trình đang chạy dịch vụ, tínhiệu này được sử dụng để yêu cầu tiến trình dừng lại hoặc khởi động lại
3 SIGKILL (signal kill): Tín hiệu này được sử dụng để buộc tiến trình dừng lại một
cách tập trung mà không cần thông báo cho tiến trình để nó kết thúc các tác vụ cầnthiết Tín hiệu này là tuyệt đối và không thể bị bỏ qua hoặc xử lý bởi tiến trình
4 SIGUSR1 (signal user-defined 1): Tín hiệu này được sử dụng để yêu cầu tiến trình
thực hiện một tác vụ cụ thể, phụ thuộc vào cài đặt của tiến trình Nó thường được sửdụng để kích hoạt các tính năng bổ sung hoặc thực hiện các tác vụ đặc biệt của tiếntrình
c Chạy lệnh sau và thực hiện theo yêu cầu
find / -name "cron*"
o Khi lệnh đang thực thi, nhấn Ctrl_Z để dừng tiến trình
Trang 10o Kiểm tra bằng lệnh ps -l xem lệnh còn hoạt động không ? (Tiến trình ứng với lệnh find
có PID nào? Ở trạng thái gì?)
PID: 2644
Trạng thái: “T” (tạm dừng)
o Chấm dứt hoạt động của tiến trình find bằng lệnh sau có được không?
kill -SIGTERM <PID_find>: lệnh này không thể chấm dứt hoạt
động của tiến trình find
(kiểm tra lại bằng lệnh ps)
o Chấm dứt hoạt động của tiến trình find bằng lệnh sau có được không?
kill -SIGINT <PID_find>: lệnh này không thể chấm dứt hoạt động của tiến trình
Trang 11(kiểm tra lại bằng lệnh ps)
o Chấm dứt hoạt động của tiến trình find , bằng lệnh sau có được không ?
kill -SIGKILL <PID_find>: lệnh này chấm dứt hoạt động của tiến trình find
(kiểm tra lại bằng lệnh ps )
d Dùng kill huỷ terminal hiện tại : Terminal hiện tại tương ứng với tiến trình bash, vậynên huỷ terminal hiện tại có nghĩa là hủy tiến trình bash => kết quả là sẽ kết thúc bash,
và quay lại tiến trinh login (thấy xuất hiện dấu nhắc login)
Hãy viết lệnh hủy tiến trình bash bằng lệnh kill?
Dùng lệnh: kill -SIGKILL 2289
Sau đó của sổ Terminal sẽ đóng lại
e Dùng killall huỷ tất cả các bash shell hiện tại trong 1 terminal :
o Trên terminal tty1 , login vào hệ thống với user1
o Dùng lệnh su, chuyển sang dùng quyền của user2
o Tiếp tục , dùng lệnh su, chuyển sang dùng quyền của user3
o Xem toàn bộ các tiến trình phát sinh sau chuỗi lệnh trên
ps -aljH | grep tty2
Trang 12Để kill tất cả các bash shell hiện tại (trong 1 terminal) , dùng lệnh
kill -SIGKILL <PID_của shell gốc trên cùng>
1 Dùng lệnh ps để xem PID của shell gốc trên cùng(shell đang sử dụng)
2 Dùng lệnh kill -SIGKILL 3920 để kill tất cả bash shell trong 1 terminal
Để kill tất cả các bash shell hiện tại trên tất cả các terminal, dùng
killall -SIGKILL bash
Sau khi thực hiện lệnh thì tất cả các bash shell trên terminal sẽ đóng lại
4. Tìm hiểu dịch vụ lập lịch cron:
a Lập lịch để mỗi phút ghi một chuỗi vào file test , Thao tác như sau :
Trang 13o Dùng quyền của root, mở file /etc/crontab bằng vi (sudo vi /etc/crontab) hoặc nano
Nhập vào cuối file dòng sau :
* * * * * root echo “hello” >> /test.txt
Khi đã hoàn tất, nhấn Ctrl + X để lưu và thoát khỏi trình soạn thảo nano Nếu được yêu cầu, hãy nhập "Y" để xác nhận lưu lại file
o Kiểm tra bằng cách: chờ vài phút trôi qua, rồi mở file test.txt để xem Hoặc chỉnh lại
Trang 14đồng hồ hệ thống rồi xem lại file.
- Để càng lâu thì nó sẽ xuất ra càng nhiều dòng
Trang 15+ B2: Sử dụng lệnh: “wmic process where name="ProcessName" CALL
setpriority PriorityLevelID”
- Thay thế ProcessName trong lệnh trên với tên thực của tiến trình đang chạy.
- Thay thế PriorityLevelID trong l nh phía trên thông qua s (ví d ,ệ ố ụ “32768” )trong b ng bên dả ướ i cho m c đ u ái mu n đ t cho quy trình này.ứ ộ ư ố ặ
- VD muốn thay đổi độ ưu tiên của MS Word
Sử dụng Taskmanager thay đổi độ ưu tiên MS Word
+ B1: mở Task Manager
+ B2: Ở tab Processes click chuột phải vào tiến trình MS Word Rồi chọn Go to details.
Trang 16Ở tab Details, click chuột phải vào WINWORD.EXE rồi chọn Set Priority, độ ưu tiênhiện tại là Above normal, ta có thể thay đổi bằng cách click chuột vào độ ưu tiên muốnthay đổi(high,low, ).
Sử dụng lệnh findstr tìm chuỗi “Windows” trong các file txt có trong ổ đĩa C:
- Sử dụng câu lệnh: findstr /s /i /m "Windows" C:\*.txt
Trang 17- Giải thích :
+ : Tìm kiếm trong tất cả các thư mục con của đường dẫn được chỉ định./s
+ : Không phân biệt chữ hoa chữ thường trong việc tìm kiếm./i
+ /m: Chỉ liệt kê tên tệp chứa chuỗi khớp, không hiển thị nội dung tệp
Thay đổi độ ưu tiên của tiến trình từ Normal => High của Taskmanager
- B1: Mở Task Manager, ở tab Processes click chuột phải rồi chọn Go to details.
Trang 18- B2: Click chuột phải vào Taskmgr.exe -> Set Priority -> High -> Change Priority.
Như vậy độ ưu tiên đã được thay đổi
Trang 19Sử dụng Comman Prompt:
Dùng câu lệnh : wmic process where name="Taskmgr.exe" CALL setpriority 128
Đo lường thời gian và so sánh để thấy kết quả của thiết lập này?
- Sử dụng Dev C/C++ thực hiện chương trình sau:
Trang 20+ Độ ưu tiên: Normal, kết quả của chương trình trả về là: 0,438 (s).
+ Khi đổi độ ưu tiên thành High thì kết quả chương trình trả về là: 0,33 (s)
Nhận xét: Qua ví dụ trên ta có thể thấy thời gian thực thi nhanh hơn khi thay đổi độ
ưu tiên, điều này có thể cho thấy rằng thiết lập độ ưu tiên từ Normal sang High đã giúp cải thiện hiệu suất của chương trình
Tham khảo về Task Manager và Priority:
https://technet.microsoft.com/en-us/library/cc938567.aspx //task manager
https://technet.microsoft.com/en-us/library/cc938611.aspx //priority
http://woshub.com/process-priority-management-in-windows/