Bài giảng Phần mềm mã nguồn mở và Linux - Quản lý tiến trình

Tóm tắt Bài giảng Phần mềm mã nguồn mở và Linux - Quản lý tiến trình: ...uyền root mới có thể giảm giá trị biểu diễn độ ưu tiên của tiến trình. Một người sử dụng thông thường chỉ có thể làm giảm độ ưu tiên của tiến trình thông qua việc tăng giá trị biểu diễn độ ưu tiên. n  Lệnh nice cho phép thay đổi độ ưu tiên của một tiến trình ngay khi bắt đầu thực hiện lện...con của nó) n  Không thể có nhiều hơn 1 tác vụ chạy ở chế độ hiện (foreground) n  Có thể có nhiều hơn 1 tác vụ chạy ở chế độ ngầm (background) Background Foreground Stop $ command $ command & fg kill Ctrl-C fg bg Ctrl-Z stop Kết thúc Kết thúc Ví dụ $ emacs & [1] 7...s] ¨  Tìm kiếm trong file hoặc trong đầu vào chuẩn các dòng có chứa các ký tự hoặc xâu thỏa mãn một số điều kiện nào đó. n  Các tùy chọn ¨  -c : chỉ đưa ra tổng số dòng thỏa mãn điều kiện ¨  -I : chỉ đưa ra tên file ¨  -v : chỉ đưa ra các dòng mà điều kiện tìm kiếm không thỏa mã...

pdf27 trang | Chia sẻ: havih72 | Lượt xem: 248 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Phần mềm mã nguồn mở và Linux - Quản lý tiến trình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Quản lý tiến trình 
TS Hà Quốc Trung 
Giới thiệu 
n  Một tiến trình = thực thi của một chương trình được thực 
thi 
n  Mỗi tiến trình sẽ tương ứng với một tập các thông tin 
sau: 
¨  Một định danh (pid) 
¨  Một tiến trình cha (ppid) 
¨  Người sở hữu (uid) và nhóm (gid) 
¨  Câu lệnh khởi tạo tiến trình 
¨  Một đầu vào chuẩn (stdin), một đầu ra chuẩn (stdout), một kênh 
báo lỗi chuẩn (stderr) 
¨  Thời gian sử dụng CPU (CPU time) và mức độ ưu tiên 
¨  Thư mục hoạt động hiện tại của tiến trình 
¨  Bảng các tham chiếu đến các file được tiến trình sử dụng. 
n  Các tiến trình được sắp xếp để chia sẻ thời gian sử 
dụng CPU 
Các kiểu tiến trình (1) 
n  Các tiến trình hệ thống 
¨  Thường thuộc về quyền root 
¨  Không có giao diện tương tác 
¨  Thường được chạy dưới dạng các tiến trình ngầm 
(daemon) 
¨ Đảm nhiệm các nhiệm vụ chung, phục vụ mọi người 
sử dụng. 
¨  Ví dụ: 
n  lpsched: Quản lý các dịch vụ in ấn 
n  cron: tự động thực hiện một lệnh/chương trình vào một thời 
gian xác định trước. 
n  inetd: quản lý các dịch vụ mạng. 
Các kiểu tiến trình (2) 
n  Các tiến trình của người sử dụng 
¨  Thực hiện các nhiệm vụ của một người dùng cụ thể 
n  Thực hiện dưới dạng một shell tương ứng với một sự đăng 
nhập. 
n  Thực hiện dưới dạng một lệnh thông qua shell 
¨  Thường được thực hiện, quản lý bằng một terminal 
¨  Ví dụ: 
n  cp 
n  vi 
n  man 
n   
Lệnh ps 
n  Hiển thị các tiến trình 
¨  Theo ngầm định, lệnh ps hiển thị các tiến trình thuộc về người 
sử dụng terminal. 
¨  Sử dụng tùy chọn aux để hiển thị tất cả các tiến trình đang chạy 
trong máy. 
$ ps 
 PID TTY TIME CMD 
2803 pts/1 00:00:00 bash 
2965 pts/1 00:00:00 ps 
$ ps aux 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
root 1 0.1 0.1 1104 460 ? S 15:26 0:03 init[3] 
... 
ttanh 951 0.0 0.3 1728 996 pts/0 S 16:09 0:00 bash 
ttanh 953 0.0 1.9 6860 4916 pts/0 S 16:09 0:00 emacs 
ttanh 966 0.0 0.3 2704 1000 pts/0 R 16:23 0:00 ps aux 
... 
Trạng thái của tiến trình 
n  S: đang ngủ 
n  R: đang chạy 
n  T: dừng 
n  Z:không xác định 
Đang chạy 
Đang ngủ 
Kết thúc Kết thúc tiến trình 
Ctrl-C hoặc kill 
Phục hồi 
fg 
K
hở
i t
ạo
 ti
ến
 tr
ìn
h 
H
ủy
 b
ỏ 
tiế
n 
trì
nh
Lệnh kill 
n  Gửi một tín hiệu đến một tiến trình (định danh 
của tiến trình được xác định dưới dạng một 
tham số của lệnh). 
¨  Theo ngầm định, tín hiệu gửi đi là tín hiệu 15 
(SIGTERM – kết thúc tiến trình) 
¨  Tùy chọn -9: gửi tín hiệu 9 (SIGKILL – hủy tiến trình) 
¨  Tùy chọn –l: liệt kê tất cả các tín hiệu có thể sử dụng. 
n  Lệnh killall: dùng để kết thúc tất cả các tiến trình 
của một câu lệnh thông qua việc truyền tên của 
câu lệnh dưới dạng một tham số. 
n  Quyền hủy tiến trình thuộc về người sở hữu tiến 
trình 
Độ ưu tiên của các tiến trình 
n  Tất cả các tiến trình đều có độ ưu tiên ban đầu được 
ngầm định là 0 
n  Mức độ ưu tiên của một tiến trình dao động trong 
khoảng từ -19 đến +19 
¨  Chỉ người sử dụng có quyền root mới có thể giảm giá trị biểu 
diễn độ ưu tiên của tiến trình. Một người sử dụng thông thường 
chỉ có thể làm giảm độ ưu tiên của tiến trình thông qua việc tăng 
giá trị biểu diễn độ ưu tiên. 
n  Lệnh nice cho phép thay đổi độ ưu tiên của một tiến 
trình ngay khi bắt đầu thực hiện lệnh tương ứng với tiến 
trình. 
¨  $ nice [-n Value] [Command [Arguments ...]] 
n  Lệnh renice cho phép thay đổi độ ưu tiên của một tiến 
trình sau khi đã chạy. 
Lệnh top 
n  Hiển thị và cập nhật các thông tin sau của các 
tiến trình đang chạy: 
¨  Phần trăm sử dụng CPU 
¨  Phần trăm sử dụng bộ nhớ trong 
n  $ top [–d] 
¨  Tùy chọn –d cho phép xác định thời gian định kỳ cập 
nhật thông tin (tính theo giây). 
n  Lệnh top cho phép người sử dụng tương tác và 
quản lý các tiến trình (thay đổi độ ưu tiên, gửi 
các tín hiệu, ) 
Chạy ở chế độ hiện (foreground và 
chạy ở chế độ ngầm (background) (1) 
n  Quá trình chạy ở chế độ hiện sẽ tiến hành theo 
những bước như sau: 
¨  Thực hiện quá trình « fork », nhân bản tiến trình cha 
(trong trường hợp thực thi các lệnh, đó sẽ là tiến trình 
shell) 
¨  Thực hiện quá trình « wait », đưa tiến trình cha vào 
trạng thái ngủ (sleep). 
¨  Thực hiện quá trình « exec », thực thi tiến trình con. 
¨  Sau khi tiến trình con thực thi xong, một tín hiệu 
« đánh thức » sẽ được gửi đến tiến trình cha. 
¨  Do quá trình chạy như trên => trong quá trình thực 
hiện tiến trình con, người sử dụng không thể tương 
tác với tiến trình cha. 
Chạy ở chế độ hiện (foreground và 
chạy ở chế độ ngầm (background) (2) 
n  Quá trình chạy ở chế độ ngầm cho phép thực thi 
tiến trình cha và tiến trình con một cách độc lập. 
n  Ví dụ: $ emacs& 
n  Sau khi thực hiện lệnh trên, emacs sẽ chạy ở 
chế độ ngầm, người sử dụng có thể tiếp tục sử 
dụng console để thực thi các lệnh khác 
Quản lý tác vụ 
n  Một tác vụ = việc thực hiện một câu lệnh. Một tác vụ có thể liên 
quan đến một nhóm các tiến trình (một tiến trình cha và tập các tiến 
trình con của nó) 
n  Không thể có nhiều hơn 1 tác vụ chạy ở chế độ hiện (foreground) 
n  Có thể có nhiều hơn 1 tác vụ chạy ở chế độ ngầm (background) 
Background Foreground 
Stop 
$ command $ command & 
fg kill 
Ctrl-C 
fg 
bg 
Ctrl-Z stop 
Kết 
thúc 
Kết 
thúc 
Ví dụ 
$ emacs & 
[1] 756 
$ stop 756 
# or $ stop %1 
$ bg 756 
# or $ bg %1 
$ kill -9 756 
# or $ kill %1 
Các cách thực hiện song song 
các câu lệnh 
n  cmd 1;cmd2 
n  cmd 1 && cmd2 
n  cmd1 | cmd2 
Các kiểu thực thi 
n  Thực thi nhiều lệnh độc lập 
¨  Sử dụng ký tự ; để thực thi nhiều lệnh liên tiếp, các 
lệnh này hoạt động độc lập với nhau. 
¨ $cp public/* perso; rm -r public 
n  Thực thi nhiều lệnh phụ thuộc nhau 
¨  Sử dụng ký hiệu && để thực thi nhiều lệnh liên tiếp, 
các lệnh này phụ thuộc nhau, lệnh sau chỉ được thực 
hiện nếu lệnh trước không gặp lỗi. 
¨ $cp public/* perso && rm -r public 
Cơ chế đường ống 
n  Cơ chế đường ống giữa 
hai tiến trình cho phép 
định hướng lại đầu ra của 
tiến trình thứ nhất trở 
thành đầu vào của tiến 
trình thứ hai 
n  Cơ chế đường ống được 
thiết lập bằng cách sử 
dụng ký tự: | 
¨  $ cmd1 | cmd2 
Chuyển hướng các kênh chuẩn 
n  Mỗi tiến trình sở hữu: 
¨  Một đầu vào chuẩn (ngầm định là bàn phím) 
¨  Một đầu ra chuẩn (ngầm định là terminal) 
¨  Một kênh báo lỗi chuẩn (ngầm định là terminal) 
n  Chuyển hướng đầu vào chuẩn (<) 
$ tee < test.txt 
n  Chuyển hướng đầu ra chuẩn (>, >>) 
$ ls > /dev/lp 
$ ls >> test.txt 
n  Chuyển hướng kênh báo lỗi 
$ rm prog.c 2> /dev/null 
$ gcc prog.c 2>> erreur.txt 
tee command 
Lọc thông tin 
n  $cat tên_file1 [] 
¨ Hiển thị nội dung 1 hoặc nhiều file 
n  $head -n tên_file 
¨ Hiển thị n dòng đầu tiên của 1 file 
n  $tail -n tên_file 
¨ Hiển thị n dòng cuối cùng của 1 file 
n  $wc tên_file 
¨ Hiển thị số dòng, số từ, số ký tự trong 1 file 
thông qua các tùy chọn –l, -w, -c 
grep : Tìm kiếm các dòng 
$grep [-options] expreg [files] 
¨  Tìm kiếm trong file hoặc trong đầu vào chuẩn các 
dòng có chứa các ký tự hoặc xâu thỏa mãn một số 
điều kiện nào đó. 
n  Các tùy chọn 
¨  -c : chỉ đưa ra tổng số dòng thỏa mãn điều kiện 
¨  -I : chỉ đưa ra tên file 
¨  -v : chỉ đưa ra các dòng mà điều kiện tìm kiếm không 
thỏa mãn 
¨  -i : không phân biệt chữ hoa, chữ thường 
¨  -n : chỉ đưa ra số thứ tự của dòng 
¨  -w : thực hiện tìm kiếm với quá trình so sánh được 
thực hiện đối với từng từ của chuỗi nhập vào (các từ 
được phân cách nhau bằng các ký tự không phải là 
chữ cái, không phải là chữ số và không phải là dấu 
gạch dưới _) 
Một số ký tự đặc biệt 
n  grep sử dụng một số ký tự đặc biệt trong câu 
lệnh: 
. Biểu diễn 1 ký tự bất kỳ 
* Lặp lại ký tự ở vị trí trước 
^ bắt đầu 1 dòng 
$ kết thúc 1 dòng 
[...] xác định danh sách hoặc một khoảng các ký tự cần 
tìm kiếm 
[^..] các ký tự không tìm kiếm 
¨  Chú ý: để tránh nhầm lẫn, nên đặt các ký tự biểu diễn 
điều kiện trong ngoặc kép. 
Ví dụ 
n  $grep “^t" /etc/passwd 
¨  Tìm trong file /etc/passwd tất cả các dòng bắt đầu 
bằng ký tự “t” 
n  $grep [^t] /etc/passwd 
¨  Tìm tất cả các dòng không bắt đầu bằng ký tự “t” 
n  $grep “tuananh" /etc/passwd 
¨  Tìm tất cả các dòng có chứa xâu “tuananh” 
n  $ls -l /etc | grep "^d" 
¨  Hiển thị tất cả các thư mục con của /etc 
cut : Xác định các cột 
$cut -options [files] 
n  Tùy chọn 
¨  -c xác định các ký tự 
¨  -f xác định các trường 
¨  -d 
n  Ví dụ 
¨  $cut -c5 file #hiển thị ký tự thứ 5 
¨  $cut -c5-10 file #hiển thị ký tự thứ 5 đến ký tự thứ 10 
¨  $cut -d: -f1 /etc/passwd #hiển thị tên tất cả người sử 
dụng của hệ thống 
Thay đổi nội dung file 
n  split 
¨ Cắt một file ra thành nhiều file nhỏ hơn 
¨ Ví dụ: 
n  split -10 /etc/passwd smallpasswd 
n  tr 
¨ Thay thế một chuỗi bằng một chuỗi khác có 
cùng độ dài 
¨ Ví dụ: 
n  $cat /etc/passwd | tr ":" "#" 
sort: sắp xếp nội dung 
n  $sort -options tên_file 
n  Các tùy chọn 
¨  -b: bỏ qua các dấu cách ở đầu mỗi trường 
¨  -d : sắp xếp chỉ dựa vào các ký tự trong bảng chữ cái 
và chữ số (ký tự, chữ số, dẫu cách) 
¨  -r : đảo ngược thứ tự sắp xếp 
¨  -f : không phân biệt chữ thường chữ hoa 
¨  -t x : ký tự x được sử dụng làm ký hiệu ngăn cách 
giữa các trường 
¨  -u : xóa các dòng trùng nhau. 
¨  -n sắp xếp dựa vào các chữ số 
Ví dụ 
n  carnet.txt 
 maurice:29:0298334432:Crozon 
marcel:13:0466342233:Marseille 
robert:75:0144234452:Paris 
yvonne:92:0133444335:Palaiseau 
n  $sort -n -t : +1 -2 carnet.txt 
¨  Thực hiện quá trình sắp xếp từ trường thứ 2 đén trường thứ 3 
(các trường được đánh số từ 0) 
n  $sort -t : +3 -4 +0 -1 carnet.txt 
¨  Thực hiện quá trình sắp xếp đầu tiên dựa trên trường thứ 4, sau 
đó thực hiện tiếp quá trình sắp xếp dựa trên trường thứ nhất 
So sánh các file 
n  $cmp file1 file2 
¨ So sánh file1 và file2 
n  $diff file1 file2 
¨ Tìm sự khác nhau giữa file1 và file2 (các file 
dưới dạng văn bản) 
¨ Kết quả hiển thị dưới dạng các dòng 

File đính kèm:

  • pdfbai_giang_phan_mem_ma_nguon_mo_va_linux_quan_ly_tien_trinh.pdf