Richardo

New Member

Download miễn phí Bài giảng Chứng chỉ quản trị mạng Linux - Quản lý tiến trình





Khi thực hiện một chương trình từdấu nhắc shell ($ hay #), chương trình sẽthực hiện và không
xuất hiện dấu nhắc cho đến khi thực hiện xong chương trình. Do đó, chúng ta không thểthực
hiện các công việc khác trong khi chương trình này đang thực hiện. Chương trình hoạt động như
vậy gọi là chương trình tiền cảnh. Chúng ta thửchạy 1 chương trình có thời gian thực hiện lâu để
kiểm tra, ví dụliệt kê tất cảcác thưmục của hệthống bằng lệnh find / -name pro –print. Thực
hiện lệnh Vì kết quảrất lớn nên chúng ta có thểcho vào tập tin : find / -name pro –print >
results.txt. Khi chương trình chạy bạn phải chờrất lâu cho đến khi dấu nhắc xuất hiện trởlại.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

Hướng dẫn giảng dạy
Học phần 4 - Chứng chỉ quản trị mạng Linux Trang 135/271
BÀI 12
Quản Lý Tiến Trình
Tóm tắt
Lý thuyết: 5 tiết - Thực hành: 5 tiết.
Mục tiêu Các mục chính Bài tập bắt buộc
Bài tập làm
thêm
Giới thiệu cơ chế
quản lý và điều phối
tiến trình, thiết lập lịch
biểu hoạt động cho
các chương trình
trong hệ thống.
I. Định nghĩa
II. Xem thông tin tiến trình
III. Tiến trình tiền cảnh
(foreground process)
IV. Tiến trình hậu cảnh
(background process)
V. Tạm dừng và đánh thức tiến
trình.
VI. Hủy một tiến trình
VII. Chương trình lập lịch at
VIII. Chương trình lập lịch batch
IX. Chương trình lập lịch crontab
Bài tập 1.1
(quản lý tiến
trình)
Hướng dẫn giảng dạy
Học phần 4 - Chứng chỉ quản trị mạng Linux Trang 136/271
I. Định nghĩa
Bạn có thể kích hoạt một chương trình bằng tên của chương trình ấy, hay từ các tập tin có chứa
lệnh shell. Trong khi thực hiện, chương trình có thể tương tác với nhiều thành phần khác của hệ
thống. Chương trình có thể đọc và ghi vào tập tin, quản lý thông tin trong RAM, hay gửi thông tin
đến máy in, modem hay những thiết bị khác.
Tiến trình là một chương trình đơn chạy trên không gian địa chỉ ảo của nó, ở một khía cạnh nào
đó, tiến trình hơn chương trình ở chỗ là biết sử dụng tài nguyên của một hệ thống đang chạy,
trong khi chương trình chỉ đơn thuần là một loạt các câu lệnh. Một chương trình hay lệnh có thể
phát sinh ra nhiều tiến trình khác. Khảo sát lệnh nroff –man ps.1 | grep kill | more sẽ sinh ra
3 tiến trình khác nhau. Có 3 loại tiến trình chính trên Linux:
- Tiến trình tương tác (Interactive processes ) : là tiến trình khởi động và quản lý bởi shell, kể
cả tiến trình forceground hay background.
- Tiến trình thực hiện theo lô (Batch processes) : tiến trình không gắn liền đến bàn điều khiển (
terminal ) và được nằm trong hàng đợi để lần lượt thực hiện.
- Tiến trình ẩn trên bộ nhớ (Daemon processes) : là các tiến trình chạy ẩn bên dưới hệ thống
(background). Các tiến trình này thường được khởi tạo - một cách tự động - sau khi hệ thống
khởi động. Đa số các chương trình server cho các dịch vụ chạy theo cách này. Đây
là các chương trình sau khi được gọi lên bộ nhớ, đợi (thụ động) các yêu cầu từ các chương
trình khách (client) để trả lời sau các cổng xác định (cổng là khái niệm gắn liền với giao thức
TCP/IP BSD socket). Hầu hết các dịch vụ trên Internet như Mail, Web, Domain Name
Service … đều được thi hành theo nguyên tắc này. Các chương trình loại này được gọi là
các chương trình daemon và tên của nó thường kết thúc bằng ký tự “d” như named, inerd …
Một tiến trình khi thực hiện nếu sinh ra nhiều tiến trình con được gọi là tiến trình cha (Parent
Process). Khi tiến trình cha bị dừng thì các tiến trình con của nó cũng bị dừng theo.
Mỗi tiến trình mang một định danh gọi là PID (Process IDentification). Process Id là một con số
lớn hơn 0 và là duy nhất. Hệ thống dựa vào các PID này để quản lý các tiến trình. Khi khởi động,
Linux sẽ thực hiện một tiến trình sẵn có trong hệ thống mang tên Init (Vì là tiến trình đầu tiên
được thực hiện nên PID=1). Sau đó tiến trình này mới sinh ra các tiến trình khác; các tiến trình
khác có thể sinh ra các tiến trình khác nữa và cứ tiếp tục như thế tạo thành cây phân cấp các tiến
trình (xem hình cây tiến trình bên dưới). Như vậy, dừng tiến trình Init nghĩa là dừng toàn bộ hệ
thống.
Ví dụ: Xem tiến trình trong hệ thống.
$pstree –n -p
init(1)-+-keventd(2)
|-kapm-idled(3)
|-mdrecoveryd(9)
|-syslogd(629)
|-klogd(634)
|-rpc.statd(683)
Hướng dẫn giảng dạy
Học phần 4 - Chứng chỉ quản trị mạng Linux Trang 137/271
|-apmd(795)
|-sshd(851)---sshd(1064)---bash(1065)---pstree(1492)
|-xinetd(884)
|-sendmail(924)
|-crond(961)
Số trong dấu ( ) là chỉ số PID của tiến trình.
II. Xem thông tin tiến trình
Cách đơn giản nhất để kiểm tra những tiến trình đang chạy trong hệ thống là sử dụng lệnh ps
(process status). Lệnh ps có nhiều tùy chọn và phụ thuộc một cách mặc định vào người đăng
nhập vào hệ thống. Cú pháp lệnh #ps
Một số tùy chọn của lệnh ps cần tham khảo:
Tên lệnh và tùy
chọn
Mục đích
ps –ux Xem tất cả các tiến trình mà user kích hoạt
ps –T Xem những tiến trình được chạy tại
terminal hiện tại của user.
ps –aux Xem tất cả các tiến trình trong hệ thống
ps –u username Xem tất cả các tiến trình của user nào đó
(được chỉ định thông qua tham số
username)
Ví dụ: Lệnh ps kết quả hiển thị như sau:
PID TTY STAT TIME COMMAND
41 v01 S 0:00 –bash
134 v01 R 0:00 ps
Để hiển thị tất cả các tiến trình, ta có thể sử dụng lệnh ps –a. Bất cứ người dùng nào trong hệ
thống đều có thể thấy tất cả các tiến trình, nhưng chỉ có thể điều khiển được các tiến trình do
mình tạo ra. Tuy nhiên, đối với super-user thì có quyền điều khiển tất cả các tiến trình trong hệ
thống. Lệnh ps –ax cho phép hiển thị tất cả các tiến trình, kể cả những tiến trình không gắn với
thiết bị đầu cuối (tty). Chúng ta có thể coi các tiến trình đang thực hiện cùng với đầy đủ dòng lệnh
đã khởi tạo nó bằng lệnh ps –axl. Lệnh man ps cho phép coi các tham số tự chọn khác của lệnh
ps.
Hướng dẫn giảng dạy
Học phần 4 - Chứng chỉ quản trị mạng Linux Trang 138/271
III. Tiến trình tiền cảnh(foreground process)
Khi thực hiện một chương trình từ dấu nhắc shell ($ hay #), chương trình sẽ thực hiện và không
xuất hiện dấu nhắc cho đến khi thực hiện xong chương trình. Do đó, chúng ta không thể thực
hiện các công việc khác trong khi chương trình này đang thực hiện. Chương trình hoạt động như
vậy gọi là chương trình tiền cảnh. Chúng ta thử chạy 1 chương trình có thời gian thực hiện lâu để
kiểm tra, ví dụ liệt kê tất cả các thư mục của hệ thống bằng lệnh find / -name pro –print. Thực
hiện lệnh Vì kết quả rất lớn nên chúng ta có thể cho vào tập tin : find / -name pro –print >
results.txt. Khi chương trình chạy bạn phải chờ rất lâu cho đến khi dấu nhắc xuất hiện trở lại.
IV. Tiến trình hậu cảnh(background process)
Tiến trình hậu cảnh là tiến trình sinh ra độc lập với tiến trình cha. Khi chạy một chương trình
chiếm thời gian lâu chúng ta có thể cho phép chúng chạy ngầm định bên dưới và tiếp tục thực
hiện các công việc khác. Để tiến trình chạy dưới chế độ hậu cảnh chúng ta thêm dấu & vào sau
lệnh thực hiện chương trình
Ví dụ: $ find / -name pro –print > results.txt &
[1] 2489
Khi chạy chương trình hệ thống sẽ xuất hiện dấu $ ngay lập tức, chương trình này thực
đang thực hiện với mã số tiến trình là 2489 và đặt ở hậu cảnh [1], chúng ta có thể kiểm tra
chương trình này có hoạt động không bằng lệnh: ps –aux | grep find. Đơn giản hơn chúng ta
dùng lệnh jobs để xem các tiến trình đang có ở hậu cảnh:
$jobs
[1] + Running find / -name pro –print > results.txt &
Dòng trên cho biết có 1 tiến trình đang chạy ở hậu cảnh. Khi thực hiện xong chương trình thì màn
hình xuất hiện câu thông báo:
[1] Done find / -name pro –print.
Việc sử dụng các tiến trình chạy hậu cảnh giúp cho chúng đưa...
 
Top