Mô tả:
Linux Process Management
Giới thiệu
Tiến trình (process) là một chương trình đơn chạy trên
không gian địa chỉ ảo của nó. Cần phân biệt tiến trình
với lệnh vì một dòng lệnh trên shell có thể sinh ra
nhiều tiến trình.
Ví dụ: dòng lệnh sau
netstat –n | grep 8080 | more
sẽ sinh ra 3 tiến trình khác nhau.
Kiểm soát tiến trình là khả năng giao tiếp liên tiến trình
được xử lý bởi Kernel
Các loại tiến trình chính
Tiến trình với đối thoại (Interactive processes) : là tiến trình
khởi động và quản lý bởi shell, kể cả tiến trình foreground
hoặc background.
Tiến trình batch (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
Daemon processes
Là các tiến trình chạy dưới background. Đa số các server cho
các dịch vụ chạy theo phương thức 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
client để trả lời sau các port xác định. Hầu hết các dịch vụ
Internet như mail, Web, DNS … chạy theo nguyên tắc này. Các
chương trình đượ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, inetd … Ký tự
“d” cuối được phát âm rời ra như “đê “ trong Tiếng Việt.
Kiểm tra tiến trình
Cách đơn giản nhất để kiểm tra hệ thống tiến trình đang
chạy là sử dụng lệnh ps (process status). Lệnh ps có nhiều
tùy chọn (option) và phụ thuộc một cách mặc định vào
người login vào hệ thống.
$ ps
PID TTY STAT TIME COMMAND
41 v01 S 0:00 -bash
134 v01 R 0:00 ps
Các lệnh liên quan đến
process
kill - Kill một tiến trình số PID
killall - Gửi tín hiệu đến một tiến trình bằng tên
nice - Thiết lập độ ưu tiên của 1 tiến trình mới
pstree - Hiển thị cây các tiến trình đang chạy.
renice – thay đổi thứ tự ưu tiên của tiến trình đang chạy.
skill – Thông báo trạng thái của tiến trình
snice - Thông báo trạng thái của tiến trình
top - Hiển thị tải của hệ thống
Lệnh ps
Để hiển thị tất cả các process, ta có thể sử dụng lệnh ps
–a.
Một user thường 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 của
mình tạo ra.
Chỉ có superuser mới có quyền điều khiển tất cả các
tiến trình của hệ thống Linux
Lệnh ps –ax cho phép hiển thị tất cả các tiến trình
Ta có thể xem các tiến trình đang chạy cùng với dòng
lệnh đầy đủ để khởi động tiến trình này bằng lệnh
ps –axl.
Dừng một tiến trình- kill
Trong nhiều trường hợp, một tiến trình có thể bị treo,
một chương trình server cần nhận cấu hình mới, card
mạng cần thay đổi địa chỉ IP …, khi đó chúng ta phải
dừng tiến trình.
Linux có lệnh kill để thực hiện các công tác này. Trước
tiên bạn cần phải biết PID của tiến trình cần dừng
thông qua lệnh ps.
Chỉ có super-user mới có quyền dừng tất cả các tiến
trình, còn người sử dụng chỉ được dừng các tiến trình
của mình.
Lệnh kill
kill -signal PID_của_ tiến_trình
Tham số -signal là gửi tín hiệu dừng đến chương trình. Tùy theo
mục đích ta có thể gửi tín hiệu dừng khác nhau đến tiến trình.
Một tiến trình có thể sinh ra các tiến trình con trong quá trình
hoạt động của mình. Nếu dừng tiến trình cha, các tiến trình con
cũng sẽ dừng theo, nhưng không tức thì. Vì vậy phải đợi một
khoảng thời gian và sau đó kiểm tra lại xem tất cả các tiến trình
con có dừng đúng hay không.
Dừng nhiều tiến trình - killall
Lệnh killall dùng để dừng nhiều tiến trình bằng tên của
tiến trình đó.
Cách dùng :
killall –SIGNAL tên_tiến_trình_cần_kill
Ví dụ: killall -9 vi ; lệnh này sẽ kill hết tất cả các tiến trình
vi đang chạy trong hệ thống
Các tín hiệu - Signal
SIGHUP 1 Hangup (POSIX)
SIGINT 2 Terminal interrupt (ANSI)
SIGQUIT 3 Terminal quit (POSIX)
SIGILL 4 Illegal instruction (ANSI)
SIGTRAP 5 Trace trap (POSIX)
SIGIOT 6 IOT Trap (4.2 BSD)
SIGBUS 7 BUS error (4.2 BSD)
SIGFPE 8 Floating point exception (ANSI)
Signals (tiếp theo)
SIGKILL 9 Kill(can't be caught or ignored) (POSIX)
SIGUSR1 10 User defined signal 1 (POSIX)
SIGSEGV 11 Invalid memory segment access (ANSI)
SIGUSR2 12 User defined signal 2 (POSIX)
SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
SIGALRM 14 Alarm clock (POSIX)
SIGTERM 15 Termination (ANSI)
SIGSTKFLT 16 Stack fault
Signals (tiếp theo)
SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
SIGCONT 18 Continue executing, if stopped (POSIX)
SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)
SIGTSTP 20 Terminal stop signal (POSIX)
SIGTTIN 21 Background process trying to read, from TTY (POSIX)
SIGTTOU 22 Background process trying to write, to TTY (POSIX)
SIGURG 23 Urgent condition on socket (BSD)
Signals (tiếp theo)
SIGXCPU 24 CPU limit exceeded (4.2 BSD)
SIGXFSZ 25 File size limit exceeded (4.2 BSD)
SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
SIGPROF 27 Profiling alarm clock (4.2 BSD)
SIGWINCH 28 Window size change (4.3 BSD, Sun)
SIGIO 29 I/O now possible (4.2 BSD)
SIGPWR 30 Power failure restart (System V)
nice
Thiết lập độ ưu tiên của 1 tiến trình mới
nice [OPTION] [COMMAND [ARG]...]
COMMAND
-n, --adjustment=ADJUST increment priority
by ADJUST first
--help display this help and exit
--version: output version information and exit
Ví dụ:
[root@alibaba
root]# nice -19
/home/natuan/server2
ADJUST mặc định là 10. Khoảng thay đổi từ -20 (trật tự cao nhất)
đến 19 (thấp nhất).
pstree
Hiển
chạy.
thị cây các tiến trình đang
renice
Thay
đổi thứ tự ưu tiên của tiến
trình đang chạy.
renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
skill
Thông
trình
báo trạng thái của tiến
skill [signal to send] [options] process selection criteria
Ví dụ: skill -KILL -v pts/*
skill –l : liệt kê các tín hiệu kill
Các tín hiệu thường dùng là HUP, INT, KILL, STOP,
CONT
Các tín hiệu có thể dùng tương đương nhau theo 3
cách -SIGKILL -KILL -9 ( 3 tín hiệu này đều là 1)
snice
-
Thông báo trạng thái của tiến
trình
Tương tự như skill
Lệnh top
Hiển thị sự hoạt động của các tiến trình, đặc biệt là các thông
tin về tài nguyên hệ thống cũng như việc sử dụng tài nguyên
đó của từng tiến trình.
11:09am up 46 days, 17:44, 2 users, load average: 0.08, 0.03, 0.01
63 processes: 61 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 0.1% user, 0.0% system, 0.0% nice, 99.8% idle
Mem:
126644K av, 121568K used, 5076K free, 0K shrd,
25404K buff
Swap: 136544K av, 9836K used, 126708K free 36040K cached
PID
27568
1
2
USER
tuanna
root
root
PRI
11
0
8
NI
0
0
0
SIZE RSS SHARE STAT %CPU %MEM
1052 1052
836 R
0.1 0.8
124
72
68 S
0.0 0.0
0
0
0 SW
0.0 0.0
TIME
0:00
0:25
0:00
COMMAND
top
init
kevent
- Xem thêm -