【Linux】【操作】Linux操作集锦系列之三——进程管理系列之(一) 进程信息查看
- 本系列文章,将整理一系列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操作集锦系列之三——进程管理系列之(一) 进程信息查看相关推荐
- Linux进程管理(一)进程数据结构
Linux进程管理 Linux进程管理(一)进程数据结构 Linux进程管理(二)进程调度 Linux进程管理(三)进程调度之主动调度 Linux进程管理(四)进程调度之抢占式调度 Linux进程管理 ...
- Linux C : 进程管理实验:创建进程、上下文切换
进程可以看成程序的执行过程,可以展示在当前时刻的执行状态.它是程序在一个数据集合上的一次动态执行的过程.这个数据集合通常包含存放可执行代码的代码段,存放初始化全局变量和初始化静态局部变量的数据段.用于 ...
- linux内核——3_(进程管理)系统的进程管理
作者:GWD 时间:2019.7.28 一.系统的进程的运转方式 1.系统时间:(jiffies系统滴答):CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到 ...
- linux 如何避免进程killed_Linux 内核 / 进程管理 / 如何描述一个进程?
哈喽,我是吴同学,继续记录我的学习心得. 一.关于写文章 许多知识,书上或者网络上都有,就算这两个地方都没有,代码里也会有答案.但有时恰恰是 资料太多,反而让人难以检索出有用的信息. 面对同样的资料, ...
- tp5 queue.php,tp5(think-queue)消息队列+supervisor进程管理实现队列常驻进程
前言 传统的程序执行流程一般是 即时|同步|串行的,在某些场景下,会存在并发低,吞吐量低,响应时间长等问题.在大型系统中,一般会引入消息队列的组件,将流程中部分任务抽离出来放入消息队列,并由专门的消费 ...
- 进程管理命令 动态监控进程 rpm yum
学习视频:074_韩顺平Linux_服务管理(2)_哔哩哔哩_bilibili 目录 进程管理命令基本介绍 PS命令 显示系统执行的进程 终止进程kill和killall 查看进程树pstree 服务 ...
- windows进程管理器_软件进程自动重启一遍又一遍……你需要这款自动杀进程的小公举ProcessKO...
[PConline 应用]用Windows系统最烦的一件事,就是各种乱七八糟的进程.我们知道软件要运行,就会在后台唤起进程,但这些进程有时候并不那么听话,某些软件会不断唤起进程,对此Windows自带 ...
- android 进程管理机制,Android的进程管理机制
Linux系统对进程的管理方式是一旦进程活动停止,系统就会结束该进程.Android系统虽基于Linux,但在进程管理上,采取了另外一种机制.当当前进程活动停止时,系统并不会立即结束当前进程,而是会将 ...
- 操作系统之进程管理:3、进程控制(进程状态转化的实现)、原语、进程通信(共享、管道、消息)
3.进程控制 进程控制 思维导图 进程控制相关的原语 创建原语 撤销原语 阻塞原语.唤醒原语 切换原语 原语要做的几件事 进程通信 思维导图 进程通信方式 数据共享 管道通信 消息传递 进程控制 1. ...
- 操作系统 进程管理(一)——进程的含义与状态
目录 程序的执行特征 程序的顺序执行及其特征 程序并发执行的特征 进程的基本概念 进程的含义与特征 (一) 进程的定义 (二)进程的结构 (三) 进程与程序的区别与联系 (四) 进程的特征 (五) 进 ...
最新文章
- Hibernate关联关系映射
- Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
- 【小松教你手游开发】【面试必读(编程基础)】堆和栈的区别(转过无数次的文章)...
- 【已解答】Linux ./configure --prefix 命令是什么意思?
- linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
- 阿里P8架构师谈:分布式架构设计12精讲
- 敏捷无敌之重任在肩(7)
- oracle 表的移动,oracle 表移动表空间
- [转载]ASPNET MVC表格呈现利器:MvcContrib.UI.Grid
- 获取手机IMEI和UID
- 手机射频电路全面解析
- 依米花播放器仿绚丽彩虹播放器程序
- Android NFC智能卡介绍
- 镭速快答:网页端无法连接镭速,提示未启动怎么办?
- JIRA REST API调用方式
- android需要电脑输入吗,Android 远程输入法,用电脑给手机输入文字
- 表单form中的submit事件
- 策略梯度方法介绍——带基线的REINFORCE
- 【设计模式】牛市股票还会亏钱 --- 外观模式
- 不规则现金流 java设计_第三节不规则现金流的计算