📌  相关文章
📜  linux 终端显示进程 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:44.805000             🧑  作者: Mango

Linux 终端显示进程 - Shell-Bash

在 Linux 系统中,可以使用 Shell 或 Bash 命令来显示当前正在运行的进程。这些命令可以帮助程序员快速了解系统的状态,诊断问题和调试程序。

以下是一些常用的 Shell 和 Bash 命令来了解 Linux 系统中正在运行的进程。

ps 命令

ps 命令是最基本的命令,可以列出当前用户的所有进程。命令如下:

ps -ef

-e 选项表示列出所有进程,-f 选项表示输出详细的信息。该命令会列出类似以下的信息:

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 07:53 ?        00:00:02 /usr/lib/systemd/systemd --system --deserialize 34
root          2      0  0 07:53 ?        00:00:00 [kthreadd]
root          3      2  0 07:53 ?        00:00:00 [rcu_gp]
root          4      2  0 07:53 ?        00:00:00 [rcu_par_gp]
root          6      2  0 07:53 ?        00:00:00 [kworker/0:0H-kblockd]
...

每一列的含义如下:

  • UID:进程的用户 ID。
  • PID:进程的 ID。
  • PPID:父进程的 ID。
  • C:CPU 占用率。
  • STIME:进程启动时间。
  • TTY:进程所在的终端。
  • TIME:进程已占用的 CPU 时间。
  • CMD:进程的命令。
top 命令

top 命令用于实时显示进程信息,包括 CPU 占用率、内存占用率等。可以使用以下命令来运行:

top

会输出类似以下的信息:

top - 08:33:23 up 3 min,  1 user,  load average: 0.05, 0.22, 0.14
Tasks: 202 total,   1 running, 201 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.4 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1755.5 total,   1525.1 free,     85.7 used,    144.7 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1596.1 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND     
   65 root      20   0 1163196 301084  37660 S  6.3 17.0   0:15.68 Xorg        
  333 root      20   0  321720  39168  30304 S  1.7  2.2   0:01.15 irq/105-nv
   62 root      20   0  126424   5540   4336 S  0.3  0.3   0:00.73 upowerd     
   54 root       0 -20       0      0      0 S  0.1  0.0   0:00.71 kworker/0:- 
    1 root      20   0  174732   8484   6644 S  0.0  0.5   0:02.98 systemd     
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd    
    3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp      
    4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp  
...

其中,一些比较重要的列和含义如下:

  • PID:进程的 ID。
  • USER:进程运行的用户。
  • %CPU:进程占用 CPU 的百分比。
  • %MEM:进程占用内存的百分比。
  • TIME+:进程已经运行的时间。
  • COMMAND:进程的名字。
pstree 命令

pstree 命令可以以树形结构显示进程之间的父子关系。以下是使用 pstree 命令输出结果的示例:

pstree

输出结果类似以下:

systemd─┬─abrt-watch-log
        ├─asl-logger───{asl-logger}
        ├─chronyd───2*[{chronyd}]
        ├─crond
        ├─dbus-daemon
        ├─gssproxy───2*[{gssproxy}]
        ├─irqbalance───{irqbalance}
        ├─lvmetad
        ├─master───6*[pickup]
        ├─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─sddm───sddm-helper───startkde─┬─dbus-daemon
        │                                ├─kdeinit5─┬─klauncher───2*[{klauncher}]
        │                                │          ├─kded5
        │                                │          ├─kinit───5*[{kinit}]
        │                                │          ├─klauncher───2*[{klauncher}]
        │                                │          ├─knotify5
        │                                │          ├─ksmserver───2*[{ksmserver}]
        │                                │          ├─kwin_x11─┬─kwin_x11───8*[{kwin_x11}]
        │                                │          │          └─2*[{kwin_x11_close}]
        │                                │          ├─plasmashell─┬─xbattmon───2*[{xbattmon}]
        │                                │          │             ├─xclock
        │                                │          │             ├─{plasmashell}
        │                                │          │             ├─{repolist-updat}
        │                                │          │             ├─{usr/bin/kuiser}
        │                                │          │             └─2*[{xembedsniproxy}]
        │                                │          ├─{dconf worker}
        │                                │          └─{kdeinit5}
        │                                ├─{sddm-helper}
        │                                └─{Xorg}
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─wpa_supplicant

其中,每行代表一个进程,父进程在上,子进程在下,缩进表示父子关系。

总结

以上是一些常用的 Shell 和 Bash 命令来查看运行的进程。使用这些命令可以更好地了解系统的运行状态,有助于程序员调试程序、诊断问题。