Lệnh top ps trong linux

Ở 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.
  •   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
    ...
    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.

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

Chủ Đề