Tải bản đầy đủ (.pdf) (21 trang)

phần bài làm thực hành lab 4 quản lý tiến trình trong linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.73 MB, 21 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>BỘ CÔNG THƯƠNG</b>

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINHKhoa: Cơng Nghệ Thơng Tin</b>

<b>LAB REPORTLESSON 4:</b>

Student’s Name : Phạm Gia Khánh

Class Code: 420300213707 Subject: Hệ Thống Máy TínhInstructor: Gv. Võ Cơng MinhFaculty: Cơng Nghệ Thông TinCompleted Date : 27/03/2023

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>PHẦN BÀI LÀM THỰC HÀNH</b>

<b>LAB 4: QUẢN LÝ TIẾN TRÌNH TRONG LINUX</b>

<b>Thời lượng: 3 tiếtNội dung:</b>

- 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

<b>Quản lý tiến trình (Process Management)</b>

<b>1.</b> 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ở <b>Terminal</b> rồi gõ lệnh <b>top</b>.

<b>PID: ID tiến trình của từng nhiệm vụ.</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>USER: 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ụ.</b>

<b>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.</b>

<b>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</b>

<b>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ụ.</b>

<b>COMMAN: tên lệnh được thực thi.Lệnh: Lệnh dùng để sinh ra nhiệm vụ.2.</b> 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)

<b>ps -eljH | pstree | more</b>

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>PPID: ID của tiến trình cha.</b>

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 Sps -eljH |more

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

- <b>Z - Zombie (tiến trình đã kết thúc nhưng vẫn cịn trong bảng tiến trình).</b>

- <b>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ự </b>

kiện I/O (Input/Output).

e. Xem các process của user hiện hànhps

hoặcps -l

f. Mở một terminal mới (tty3), login vào bằng tài khoản user1. Chạy vi.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Mở 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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- <b>TTY - terminal nơi tiến trình được thực thi.</b>

ps -af //hiển thị các process đang chạy trên các terminal và chủ nhân

<b>3.Sử dụng lệnh kill và killall</b>

a. Xem danh sách các <b>SIGNAL</b> của lệnh kill

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>kill -l</b>

b. Xem ý nghĩa của 4 SIGNAL thường dùng (đọc manual)

<b>1. SIGINT (signal interrupt): Đây là tín hiệu được gửi bởi bàn phím khi người dùng</b>

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àyvà dừng lại ngay lập tức.

<b>2. SIGTERM (signal terminate): Tín hiệu này được sử dụng để yêu cầu tiến trình</b>

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.

<b>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</b>

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.

<b>4. SIGUSR1 (signal user-defined 1): Tín hiệu này được sử dụng để yêu cầu tiến trình</b>

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

<b>find / -name "cron*"</b>

o Khi lệnh đang thực thi, nhấn Ctrl_Z để dừng tiến trình.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

o 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ì?)

<b>PID: 2644</b>

<b>Trạng thái: “T” (tạm dừng)</b>

o Chấm dứt hoạt động của tiến trình find bằng lệnh sau có được khơng?

<b> kill-SIGTERM <PID_find>: lệnh này khơng thể chấm dứt hoạt </b>

độ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?

<b> kill -SIGINT <PID_find>: lệnh này không thể chấm dứt hoạt động của tiến trình </b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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 ?

<b> kill -SIGKILL <PID_find>: lệnh này chấm dứt hoạt động của tiến trình find</b>

(kiểm tra lại bằng lệnh <b>ps </b>)

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: <b>kill -SIGKILL 2289</b>.

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 tồn bộ các tiến trình phát sinh sau chuỗi lệnh trênps -aljH | grep tty2

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Để kill tất cả các bash shell hiện tại (trong 1 terminal) , dùng lệnhkill -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 <b>kill -SIGKILL 3920 </b>để 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ùngkillall -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.

<b>4.</b> 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 :

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

o 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 đã hồn tất, nhấn Ctrl + X để lưu và thố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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>+ B2: Sử dụng lệnh: “wmic process where name="ProcessName" CALL</b>

<b>setpriority PriorityLevelID”</b>

-

Thay thế <b>ProcessName </b>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.

<b>Sử dụng Taskmanager thay đổi độ ưu tiên MS Word</b>

<b>+ B1: mở Task Manager</b>

+ B2: Ở tab <b>Processes</b> click chuột phải vào tiến trình MS Word. Rồi chọn <b>Go todetails.</b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Ở tab <b>Details</b>, click chuột phải vào <b>WINWORD.EXE</b> rồi chọn <b>Set Priority</b>, độ ưu tiênhiện tại là <b>Above normal</b>, 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:

- <b>Sử dụng câu lệnh: findstr /s /i /m "Windows" C:\*.txt</b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="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.<b>/s</b>

+ : Không phân biệt chữ hoa chữ thường trong việc tìm kiếm.<b>/i</b>

+ <b>/m</b>: 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ở <b>Task Manager</b>, ở tab <b>Processes </b>click chuột phải rồi chọn <b>Go to details.</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>-</b> B2: Click chuột phải vào <b>Taskmgr.exe</b> -> <b>Set Priority</b> -> <b>High</b> -> <b>Change Priority.</b>

Như vậy độ ưu tiên đã được thay đổi.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Sử dụng <b>Comman Prompt</b>:

<b>Dùng câu lệnh : wmic process where name="Taskmgr.exe" CALL setpriority 128</b>

Đ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:

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="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:

//task manager //priority


×