§ 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 ($ hoặc #), 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.
Ví dụ :
#find / -name li* -print
#find / -name li* -print > timkiem.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.
13 trang |
Chia sẻ: vietpd | Lượt xem: 1793 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Tiến trình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TIẾN TRÌNH Nội dung Định nghĩa. Phân loại. Lệnh pstree và ps. Tiến trình tiền cảnh. Tiến trình hậu cảnh. Tạm dừng và đánh thức tiến trình. Lập lịch với lệnh at. Lập lịch với lệnh batch. Lệnh lịch với tiện ích crontab. 1. Định nghĩa. 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ĩ nhằm thực hiện một cơng việc nào đĩ. Một tiến trình khi thực hiện cĩ thể sinh ra nhiều tiến trình khác 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 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. 2. Phân loại. Phân biệt giữa tiến trình và chương trình: + Chương trình chỉ đơn thuần là một loạt các câu lệnh và nó phát sinh ra nhiều tiến trình khác nhau. + Tiến trình hơn chương trình ở chổ là biết sử dụng tài nguyên. Phân loại tiến trình: có 3 loại tiến trình. + Tiến trình tương tác (Interactive Processes) + Tiến trình thực hiện theo lô (Batch Processes) + Tiến trình ẩn trên bộ nhớ (Daemon Processes) 3. Lệnh pstree và ps. Lệnh pstree dùng để xem thơng tin cây tiến trình trong hệ thống. #pstree –np Lệnh ps dùng để xem thơng tin tiến trình -a : hiển thị tất cả các tiến trình. -ax : hiển thị tất cả các tiến trình kể cả tiến trình không gắn với thiết bị đầu cuối. -axl : xem tiến trình đang thực hiện cùng với đầy đủ dòng lệnh đã khởi tạo. -aux : cho biết user tạo ra tiến trình. Xem những tiến trình đang sử dụng tài nguyên CPU: #top 4. Tiến trình tiền cảnh. 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 ($ hoặc #), 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. Ví dụ : #find / -name li* -print #find / -name li* -print > timkiem.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. 5. Tiến trình hậu cảnh. Tiến trình hậu cảnh (background process): 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ô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 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. 6. Tạm dừng - đánh thức tiến trình. Tạm dừng tiến trình đang chạy và đưa vào hậu cảnh bằng phím Ctrl + Z Lệnh jobs $jobs [1] + Stopped find / -name pro –print > results.txt Lệnh bg #bg 1 find / -name pro –print > results.txt #jobs [1] + Running find / -name pro –print > results.txt Lệnh fg dùng để đưa một tiến trình từ hậu cảnh sang tiền cảnh #fg [số thứ tự tiến trình] Để hủy 1 tiến trình dùng lệnh kill hoặc pkill có cú pháp sau: #kill -9 #pkill -9 -9: là tín hiệu dừng tiến trình không điều kiện. 6. Tạm dừng và đánh thức (tt). 7. Lập lịch với lệnh at. Dùng để thực hiện một cơng việc tại một thời điểm định trước. Cú pháp: $at [time] … Ví dụ : $at 2:00 /etc/init.d/sendmail restart lp /var/logs/messages Muốn xĩa một cơng việc đã được lập dùng lệnh sau: #at –r [job_number] Bạn có thể dùng quy tắc chuyển hướng (redirect) để lập trình cho nhiều lệng cùng một lúc #at TIME trong đó, tập_lệnh là một tập tin dạng text chứa các lệnh. Sau khi lập lịch, nếu muốn hủy bỏ, ta có thể sử dụng lệnh : #atrm Để kiểm tra các tiến trình mà bạn đã nhập vào, dùng lệnh : #at –l 7. Lập lịch với lệnh at (tt). 8. Lập lịch với lệnh batch. Batch cho phép hệ thống dựa vào mức tải của mình để thực hiện cơng việc. Thơng thường dưới 20%. Ví dụ: $batch lp /usr/sales/reports/* 9. Lập lịch với tiện ích crontab. Cron cho phép lập lịch cĩ tính chu kỳ. Những cơng việc lập lịch định nghĩa trong một file. Dùng lệnh sau để tạo tập tin: #crontab [filename] Cú pháp của từng cơng việc trong file : Phút giờ ngày_của_tháng tháng_của_năm ngày_của_tuần lệnh Cấm khơng cho user thực hiện lệnh crontab: liệt kê danh sách các user vào trong nội dung tập tin: /etc/cron.deny Cho phép user thực hiện lệnh crontab: liệt kê danh sách các user vào trong nội dung tập tin: /etc/cron.alow Ví dụ: Tạo tập tin : kt 0 8 * * 1 ls / > /home/abc Dấu “*” có nghĩa là “với mọi” minute ( 0 – 59 ) hour ( 0 – 23 ) day of month ( 1 – 31 ) month of year ( 1-12 ) day of week ( 0 – 6, 0 is Sunday ) Command (rest of line) 9. Lập lịch với tiện ích (tt).