Ở phần trước chúng ta đã tìm hiểu về permission và các câu lệnh liên quan, ở phần này, chúng ta sẽ đi tìm hiểu về Processes và cách quản lý process bằng lệnh trong Linux. Ở phần này chúng ta sẽ được tìm hiểu về các lệnh sau:
- ps
- top
- jobs
- bg
- fg
- kill, killall
- shutdown
Một process hoạt động thế nào?
Khi hệ thống khởi động, kernel sẽ khởi tạo một vài hành vi của riêng nó dưới một process và khởi động một chương trình gọi là
➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
4. ➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
4 theo đó sẽ khởi chạy một loạt các shell script [nằm ở ➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
6] được gọi là init script, sẽ khởi động tất cả các service hệ thống.Rất nhiều service này được implement dưới dạng daemon program, chương trình chạy background mà không can thiệp tới giao diện người dùng. Vì thế kể cả khi chúng ta không đăng nhập thì hệ thống cũng ở trạng thái busy một lúc để khởi chạy.
Chương trình có thể khởi chạy một chương trình khác được diễn giải trong cơ chế process gọi là process cha sinh ra process con.
Kernel sẽ duy trì thông tin về mỗi một process. Ví dụ: mỗi process được gán cho một giá trị là PID [process ID]. PID được gán theo thứ tự tăng dần và
➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
4 luôn có PID là ➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
8. Kernel cũng theo dõi thông tin bộ nhớ gán cho mỗi process, cũng như tính sẵn sàng của process để có thể tiếp tục thực thi.Cũng như file thì process cũng có owner và user ID, …
Theo dõi process
Câu lệnh phổ biến để theo dõi các process là
➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
9. ➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
9 có rất nhiều tùy chọn, cách dùng cơ bản nhất là:➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
Chúng ta có thể thấy là mặc định thì
➜ ~ ps
PID TTY TIME CMD
4486 pts/1 00:00:00 zsh
4845 pts/1 00:00:00 ps
9 sẽ không show quá nhiều thông tin, chỉ show thông tin của terminal session hiện tại.- Kết quả list ra 2 processes cùng với thông tin PID.
2 là viết tắt của teletype, để chỉ terminal đang chạy process đó.PID TTY STAT TIME COMMAND 2058 ? Ss 0:00 /lib/systemd/systemd --user 2059 ? S 0:00 [sd-pam] 2064 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login 2066 ? Ss 0:00 /sbin/upstart --user 2144 ? S 0:00 upstart-udev-bridge --daemon --user 2154 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract= 2166 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge 2193 ? Ssl 0:11 /usr/bin/ibus-daemon --daemonize --xim --address unix 2199 ? Sl 0:00 /usr/lib/gvfs/gvfsd ...
3 đế chỉ thời gian chiếm CPU của process tương ứng.PID TTY STAT TIME COMMAND 2058 ? Ss 0:00 /lib/systemd/systemd --user 2059 ? S 0:00 [sd-pam] 2064 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login 2066 ? Ss 0:00 /sbin/upstart --user 2144 ? S 0:00 upstart-udev-bridge --daemon --user 2154 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract= 2166 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge 2193 ? Ssl 0:11 /usr/bin/ibus-daemon --daemonize --xim --address unix 2199 ? Sl 0:00 /usr/lib/gvfs/gvfsd ...
Với thêm options
PID TTY STAT TIME COMMAND
2058 ? Ss 0:00 /lib/systemd/systemd --user
2059 ? S 0:00 [sd-pam]
2064 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
2066 ? Ss 0:00 /sbin/upstart --user
2144 ? S 0:00 upstart-udev-bridge --daemon --user
2154 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract=
2166 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge
2193 ? Ssl 0:11 /usr/bin/ibus-daemon --daemonize --xim --address unix
2199 ? Sl 0:00 /usr/lib/gvfs/gvfsd
...
4, chúng ta sẽ nhìn thấy tất cả các tiến trình bất kể terminal nào. PID TTY STAT TIME COMMAND
2058 ? Ss 0:00 /lib/systemd/systemd --user
2059 ? S 0:00 [sd-pam]
2064 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
2066 ? Ss 0:00 /sbin/upstart --user
2144 ? S 0:00 upstart-udev-bridge --daemon --user
2154 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract=
2166 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge
2193 ? Ssl 0:11 /usr/bin/ibus-daemon --daemonize --xim --address unix
2199 ? Sl 0:00 /usr/lib/gvfs/gvfsd
...
Chúng ta có thể thấy cột
PID TTY STAT TIME COMMAND
2058 ? Ss 0:00 /lib/systemd/systemd --user
2059 ? S 0:00 [sd-pam]
2064 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
2066 ? Ss 0:00 /sbin/upstart --user
2144 ? S 0:00 upstart-udev-bridge --daemon --user
2154 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract=
2166 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge
2193 ? Ssl 0:11 /usr/bin/ibus-daemon --daemonize --xim --address unix
2199 ? Sl 0:00 /usr/lib/gvfs/gvfsd
...
5 mới xuất hiện, viết tắt của state để chỉ trạng thái của process tương ứng, chúng ta có các dạng state sau:Trạng tháiÝ nghĩaRRunning. Process đang chạy hoặc sẵn sàng để chạySSleeping. Process đang đợi một event để tiếp tục chạyDProcess đang đợi I/OTStopped. Process đang trong quá trình dừng chạyZZombie process. Đây là các tiến trình con đã bị chấm dứt nhưng chưa được giải phóng bởi process cha