• 本系列文章,将整理一系列Linux环境下进程相关的操作命令,包括进程启动、kill、挂起、查看、前后台进程切换等各种命令。
  • 本文为本系列的第一篇,进程的查看,主要关注如何查看进程的相关信息。

ps

  • process status,命令用于显示当前进程的状态,类似于 windows 的任务管理器。
  • 进程的相关信息,包括PID、内存、CPU、命令行、用户态/内核态、进程的虚拟大小、内存中页的数量、执行状态信息等;
  • ps的显示的结果是执行ps命令的那个时刻的那些进程;
  • 例子1:显示所有进程:
[qxhgd@localhost ~]$ ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.2 125588  4168 ?        Ss   03:41   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    03:41   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S    03:41   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    03:41   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    03:41   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    03:41   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    03:41   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    03:41   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    03:41   0:00 [watchdog/0]
  • 例子2:显示qxhgd用户发起的进程:
[qxhgd@localhost ~]$ ps -u qxhgdPID TTY          TIME CMD2366 ?        00:00:00 sshd2371 pts/0    00:00:00 bash2401 ?        00:00:00 sshd2406 ?        00:00:00 sftp-server2590 pts/0    00:00:00 ps
  • 例子3、查找涉及sshd的进程
[qxhgd@localhost ~]$ ps -ef | grep sshd
root       1323      1  0 03:41 ?        00:00:00 /usr/sbin/sshd -D
root       2362   1323  0 03:50 ?        00:00:00 sshd: qxhgd [priv]
root       2364   1323  0 03:50 ?        00:00:00 sshd: qxhgd [priv]
qxhgd      2366   2362  0 03:50 ?        00:00:00 sshd: qxhgd@pts/0
qxhgd      2401   2364  0 03:50 ?        00:00:00 sshd: qxhgd@notty
qxhgd      2645   2371  0 04:06 pts/0    00:00:00 grep --color=auto sshd

pstree

  • display a tree of processes,命令将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。
  • 一个例子:
[qxhgd@localhost] pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]├─abrt-watch-log├─abrtd├─agetty├─atd├─auditd─┬─audispd─┬─sedispatch│        │         └─{audispd}│        └─{auditd}...

pstack

  • pstack 是一个shell脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是 gstack 的一个链接,而gstack本身是基于gdb封装的shell脚本。
  • 一个例子,显示pid未2371的sshd的堆栈信息:
[qxhgd@localhost ~]$ ps -u qxhgdPID TTY          TIME CMD2366 ?        00:00:00 sshd2371 pts/0    00:00:00 bash2401 ?        00:00:00 sshd2406 ?        00:00:00 sftp-server2590 pts/0    00:00:00 ps
[qxhgd@localhost ~]$ pstack 2371
#0  0x00007f6fc200245c in waitpid () from /lib64/libc.so.6
#1  0x0000000000440b84 in waitchld.isra.10 ()
#2  0x0000000000441e3c in wait_for ()
#3  0x0000000000433b0e in execute_command_internal ()
#4  0x0000000000433d2e in execute_command ()
#5  0x000000000041e365 in reader_loop ()
#6  0x000000000041c9ce in main ()

pgrep

  • pgrep能查找当前正在运行的进程并列出符合条件的进程ID。
  • 例如显示sshd的PID:
[qxhgd@localhost ~]$ pgrep sshd
1323
2362
2364
2366
2401

top

  • top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器;
  • 和ps类似,但是不同的是,top显示的是实时的数据(默认3秒,刷新数据),人工不干预,则shell不会退出top命令;而ps显示的是执行ps当时的进程数据,执行完ps,shell上就结束ps命令了;
  • 几个常用的操作命令参数:
top //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
  • 一个例子:
[qxhgd@localhost ~]$ top
top - 04:12:48 up 31 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 238 total,   2 running, 236 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863076 total,   992972 free,   526040 used,   344064 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1176936 avail MemUSER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
qxhgd     20   0  162152   2408   1584 R  0.3  0.1   0:00.42 top
root      20   0  125588   4180   2620 S  0.0  0.2   0:01.94 systemd
root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
root      20   0       0      0      0 S  0.0  0.0   0:00.16 ksoftirqd/0
root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
root      20   0       0      0      0 R  0.0  0.0   0:00.58 rcu_sched
root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
root      rt   0       0      0      0 S  0.0  0.0   0:00.02 watchdog/0
root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns

top的变种

htop

  • Linux系统中的一个互动的进程查看器,与Linux传统的top比较的话,htop更人性化,可认为是top的升级版本;
  • 可以在垂直和水平方向上滚动,所以你可以看到系统上运行的所有进程,以及他们完整的命令行;
  • 可以不用输入进程的 PID 就可以对此进程进行相关的操作 (killing, renicing);
  • 安装方式:
#安装epel源
yum install epel-release
#安装htop
yum install -y htop
#安装完毕后命令行输入
htop
  • 一个执行的例子:

atop

  • atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了;
  • 所有的信息都是反映过去10s的状态信息;
  • 一个执行atop的例子:
[qxhgd@localhost ~]$ atop
ATOP - localhost                             2022/01/24  04:26:47                             -----------------                             10s elapsed
PRC |  sys    0.06s |  user   0.05s |  #proc    238  | #trun      2  |  #tslpi   375 |  #tslpu     0 |  #zombie    0  | clones     2  | no  procacct  |
CPU |  sys       1% |  user      0% |  irq       0%  | idle     99%  |  wait      0% |  steal     0% |  guest     0%  |               | curf 2.30GHz  |
CPL |  avg1    0.11 |  avg5    0.14 |  avg15   0.10  |               |  csw      529 |               |  intr     435  |               |numcpu     1  |
MEM |  tot     1.8G |  free  669.8M |  cache 572.2M  | dirty   2.2M  |  buff    2.1M |  slab   94.8M |  shmem  10.4M  | shrss   0.0M  | numnode    1  |
SWP |  tot     2.0G |  free    2.0G |  swcac   0.0M  |               |               |               |                | vmcom   2.0G  | vmlim   2.9G  |
NET |  transport    |  tcpi       8 |  tcpo       8  | udpi       0  |  udpo       0 |  tcpao      0 |  tcppo      0  | tcprs      4  | udpie      0  |
NET |  network      |  ipi        8 |  ipo       11  | ipfrw      0  |  deliv      8 |               |                | icmpi      0  | icmpo      0  |
NET |  eth0      0% |  pcki       8 |  pcko      12  | sp 1000 Mbps  |  si    0 Kbps |  so    3 Kbps |  erri       0  | erro       0  | drpo       0  |PID    SYSCPU     USRCPU     RDELAY     VGROW      RGROW     RUID         EUID        ST     EXC      THR    S     CPUNR      CPU     CMD        1/13021     0.04s      0.04s      0.00s    104.5M       2.9M     qxhgd        qxhgd       --       -        1    R         0       1%     atop1420     0.00s      0.01s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     smbd2366     0.01s      0.00s      0.00s        0B         0B     qxhgd        qxhgd       --       -        1    S         0       0%     sshd2942     0.01s      0.00s      0.02s        0B         0B     root         root        --       -        1    S         0       0%     kworker/0:21329     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     nmbd854     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        2    S         0       0%     vmtoolsd882     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     abrt-watch-log1738     0.00s      0.00s      0.00s        0B         0B     postfix      postfix     --       -        1    S         0       0%     qmgr1737     0.00s      0.00s      0.00s        0B         0B     postfix      postfix     --       -        1    S         0       0%     pickup861     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     rngd1482     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     smbd-notifyd1484     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     cleanupd1728     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     master872     0.00s      0.00s      0.00s        0B         0B     rtkit        rtkit       --       -        3    S         0       0%     rtkit-daemon6     0.00s      0.00s      0.03s        0B         0B     root         root        --       -        1    S         0       0%     ksoftirqd/09     0.00s      0.00s      0.07s        0B         0B     root         root        --       -        1    R         0       0%     rcu_sched525     0.00s      0.00s      0.00s        0B         0B     root         root        --       -        1    S         0       0%     kworker/0:1H

btop

  • btop,一个美观的系统资源监视器,显示处理器、内存、磁盘、网络和进程的使用情况和统计​​信息。btop是更轻、更快的C++ 版本,是bashtop和bpytop的延续。

ytop

  • ytop is a nice program if you want to see nice graphs showing CPU, memory and network utilization in a console. It does have a process list but it is not very powerful or useful as a process manager even though there are some keyboard shortcuts for basic process management available.

gtop

  • gtop 是一款用 JavaScript 编写的开源系统资源监控实用程序,它是 Linux 系统自带 top 工具的替代品。虽然 gtop 工具的曝光率和流行程度远不如 htop,但它还是非常值得系统管理员一试。

vtop

  • Command-line tools like “top” make it difficult to see CPU usage across multi-process applications (like Apache and Chrome), spikes over time, and memory usage. That’s why we created vtop.
  • Vtop is a free and open source activity monitor for the command line. It is written in node.js and can be easily extended.

Gotop

  • Gotop 是一个 TUI 图形活动监视器,使用 Go 语言编写。它是完全免费、开源的,受到了 gtop 和 vtop 的启发。

Ptop

  • 使用 Python 编写的 ptop。它同样是一个自由开源的、在 MIT 许可下发布的系统活动监视器。
  • ptop 同时兼容 Python2.x 和 Python3.x,因此可以使用 Python 的软件包管理器 pip 轻松安装。

Hegemon

  • Hegemon 是一个正在开发中的模块化系统监视器,以安全的 Rust 编写。
  • 它允许用户在单个仪表板中监控两种使用情况。分别是系统利用率和硬件温度。

GUI环境

  • ubuntu系统的gnome-system-monitor,类似于windows的进程管理器;

lsof

  • 功能为列举系统中已经被打开的文件(设备、目录、sockets等),如果没有指定任何选项或参数,lsof则列出所有活动进程打开的所有文件。
  • 两个例子:
 lsof -i:22 #查看打开22端口的进程COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsshd    1582 root    3u  IPv4  11989      0t0  TCP *:ssh (LISTEN)sshd    1582 root    4u  IPv6  11991      0t0  TCP *:ssh (LISTEN)sshd    2829 root    3r   IPv4  19635      0t0  TCP bogon:ssh->bogon:15264 (ESTABLISHED)[qxhgd@localhost ~]$ lsof -p 1 #查看pid为1的进程(init)打开的文件,其输出结果等同于上面的命令,他们都是init
COMMAND PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
systemd   1 root  cwd   unknown                      /proc/1/cwd (readlink: Permission denied)
systemd   1 root  rtd   unknown                      /proc/1/root (readlink: Permission denied)
systemd   1 root  txt   unknown                      /proc/1/exe (readlink: Permission denied)
systemd   1 root NOFD                                /proc/1/fd (opendir: Permission denied)

jobs

  • 作业控制命令,可以用来查看当前终端放入后台的工作;
  • 该命令在本系列的后续文章中还会涉及;

pidof

  • pidof 是Linux系统中用来查找正在运行进程的进程号(pid)的工具,功能类似pgrep和ps;
  • 例子:
[qxhgd@localhost ~]$ pidof sshd
2401 2366 2364 2362 1323
[qxhgd@localhost ~]$ pidof -s sshd
2401
[qxhgd@localhost ~]$

w

  • 用于显示目前登入系统的用户信息,目前登入系统的用户有哪些人,以及他们正在执行的程序 ,也即:

w - Show who is logged on and what they are doing.

  • 一个例子:
[qxhgd@localhost ~]$ w04:31:38 up 50 min,  1 user,  load average: 0.01, 0.06, 0.07
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
qxhgd    pts/0    192.168.2.2      03:50    2.00s  0.13s  0.00s w

/proc/pid

  • 每个进程,都有一个以其pid号为目录名的文件夹,其中涉及的proc文件的常用参数如下:
/proc/pid/cmdline #进程启动命令
/proc/pid/cwd     #链接到进程当前工作目录
/proc/pid/environ #进程环境变量列表
/proc/pid/exe     #链接到进程的执行命令文件
/proc/pid/fd      #包含进程相关的所有的文件描述符
/proc/pid/maps    #与进程相关的内存映射信息
/proc/pid/mem     #指代进程持有的内存,不可读
/proc/pid/root    #链接到进程的根目录
/proc/pid/stat    #进程的状态
/proc/pid/statm   #进程使用的内存的状态
/proc/pid/status  #进程状态信息,比stat/statm更具可读性
/proc/self        #链接到当前正在运行的进程
  • 值得一提的是,proc/pid目录下文件内容,是前面其他命令获得信息的主要来源;
  • 以我环境上pid 1下的文件为例:
[qxhgd@localhost 1]$ sudo ls
attr       clear_refs       cpuset   fd       limits     mem         net        oom_score      personality  schedstat  stack   syscall  wchan
autogroup  cmdline          cwd      fdinfo   loginuid   mountinfo   ns         oom_score_adj  projid_map   sessionid  stat    task
auxv       comm             environ  gid_map  map_files  mounts      numa_maps  pagemap        root         setgroups  statm   timers
cgroup     coredump_filter  exe      io       maps       mountstats  oom_adj    patch_state    sched        smaps      status  uid_map

pidstat

  • pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况;
  • pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
  • 常用命令参数示例:
pidstat                 #查看所有进程的 CPU 使用情况
pidstat -u -p ALL       #等价于pidstat
pidstat -u              #等价于pidstat
pidstat -r              #进程的内存情况统计
pidstat -d              #进程的IO情况
pidstat -w -p 8888      #进程的上下文切换情况

如本文对你有些许帮助,欢迎大佬打赏:
支付宝及微信打赏方式

【Linux】【操作】Linux操作集锦系列之三——进程管理系列之(一) 进程信息查看相关推荐

  1. Linux进程管理(一)进程数据结构

    Linux进程管理 Linux进程管理(一)进程数据结构 Linux进程管理(二)进程调度 Linux进程管理(三)进程调度之主动调度 Linux进程管理(四)进程调度之抢占式调度 Linux进程管理 ...

  2. Linux C : 进程管理实验:创建进程、上下文切换

    进程可以看成程序的执行过程,可以展示在当前时刻的执行状态.它是程序在一个数据集合上的一次动态执行的过程.这个数据集合通常包含存放可执行代码的代码段,存放初始化全局变量和初始化静态局部变量的数据段.用于 ...

  3. linux内核——3_(进程管理)系统的进程管理

    作者:GWD 时间:2019.7.28 一.系统的进程的运转方式 1.系统时间:(jiffies系统滴答):CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到 ...

  4. linux 如何避免进程killed_Linux 内核 / 进程管理 / 如何描述一个进程?

    哈喽,我是吴同学,继续记录我的学习心得. 一.关于写文章 许多知识,书上或者网络上都有,就算这两个地方都没有,代码里也会有答案.但有时恰恰是 资料太多,反而让人难以检索出有用的信息. 面对同样的资料, ...

  5. tp5 queue.php,tp5(think-queue)消息队列+supervisor进程管理实现队列常驻进程

    前言 传统的程序执行流程一般是 即时|同步|串行的,在某些场景下,会存在并发低,吞吐量低,响应时间长等问题.在大型系统中,一般会引入消息队列的组件,将流程中部分任务抽离出来放入消息队列,并由专门的消费 ...

  6. 进程管理命令 动态监控进程 rpm yum

    学习视频:074_韩顺平Linux_服务管理(2)_哔哩哔哩_bilibili 目录 进程管理命令基本介绍 PS命令 显示系统执行的进程 终止进程kill和killall 查看进程树pstree 服务 ...

  7. windows进程管理器_软件进程自动重启一遍又一遍……你需要这款自动杀进程的小公举ProcessKO...

    [PConline 应用]用Windows系统最烦的一件事,就是各种乱七八糟的进程.我们知道软件要运行,就会在后台唤起进程,但这些进程有时候并不那么听话,某些软件会不断唤起进程,对此Windows自带 ...

  8. android 进程管理机制,Android的进程管理机制

    Linux系统对进程的管理方式是一旦进程活动停止,系统就会结束该进程.Android系统虽基于Linux,但在进程管理上,采取了另外一种机制.当当前进程活动停止时,系统并不会立即结束当前进程,而是会将 ...

  9. 操作系统之进程管理:3、进程控制(进程状态转化的实现)、原语、进程通信(共享、管道、消息)

    3.进程控制 进程控制 思维导图 进程控制相关的原语 创建原语 撤销原语 阻塞原语.唤醒原语 切换原语 原语要做的几件事 进程通信 思维导图 进程通信方式 数据共享 管道通信 消息传递 进程控制 1. ...

  10. 操作系统 进程管理(一)——进程的含义与状态

    目录 程序的执行特征 程序的顺序执行及其特征 程序并发执行的特征 进程的基本概念 进程的含义与特征 (一) 进程的定义 (二)进程的结构 (三) 进程与程序的区别与联系 (四) 进程的特征 (五) 进 ...

最新文章

  1. Hibernate关联关系映射
  2. Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
  3. 【小松教你手游开发】【面试必读(编程基础)】堆和栈的区别(转过无数次的文章)...
  4. 【已解答】Linux ./configure --prefix 命令是什么意思?
  5. linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
  6. 阿里P8架构师谈:分布式架构设计12精讲
  7. 敏捷无敌之重任在肩(7)
  8. oracle 表的移动,oracle 表移动表空间
  9. [转载]ASPNET MVC表格呈现利器:MvcContrib.UI.Grid
  10. 获取手机IMEI和UID
  11. 手机射频电路全面解析
  12. 依米花播放器仿绚丽彩虹播放器程序
  13. Android NFC智能卡介绍
  14. 镭速快答:网页端无法连接镭速,提示未启动怎么办?
  15. JIRA REST API调用方式
  16. android需要电脑输入吗,Android 远程输入法,用电脑给手机输入文字
  17. 表单form中的submit事件
  18. 策略梯度方法介绍——带基线的REINFORCE
  19. 【设计模式】牛市股票还会亏钱 --- 外观模式
  20. 不规则现金流 java设计_第三节不规则现金流的计算

热门文章

  1. uniapp语音识别_uniapp语音识别
  2. 【职场加油站】给职场新人的几条忠告
  3. Elasticsearch Java虚拟机配置详解
  4. 湖南人,霸占互联网的三分天下
  5. python函数找钱_找钱问题–动态规划一例
  6. Mysql比较运算符实战
  7. MySQL常见运算符详解
  8. 鸿鹄功能架构图:实现一站式异构数据分析
  9. oppo的sd卡在哪里打开_oppo手机sd卡怎么打开 oppo手机sd卡怎样打开
  10. 互融云人行二代征信系统对接服务