zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux 进程管理,前后台进程以及ps和top命令

Linux进程命令 管理 以及 PS 前后 Top
2023-09-11 14:19:53 时间

systemd是linux启动的第一个进程。systemd进程产生子进程,而它的子进程又产生子进程。由此使得系统运作。

当父进程结束时,子进程也随之结束,但是子进程结束时,父进程不一定结束。若出现父进程结束,但是子进程没有结束的情况,该子进程称为孤儿进程,且其资源无法释放,唯一的方法就是找其他的进程作为该进程的父进程,或是直接使得systemd进程作为其父亲进程,并结束孤儿进程并释放其资源。

pstree :显示系统中完整的进程树

-a:显示完整的命令

-p:显示对应命令的pid

pstree -ap 用户名:可以显示与当前用户相关的进程以及对应的进程号,对应内容如下图所示:

pidof  程序:查看该进程的相关进程ID

ps :不加选项只显示当前用户当前终端的进程

pts代表着远程连接的伪终端,tty代表着本地打开的虚拟终端。

进程的信息查看有两种方式,也是两种风格,一种就是ps aux另一种就是ps -ef 的方式

ps

a:显示与当前终端有关的进程,包括其他用户的进程

x:显示与当前终端无关的进程

u:以更详细的方式去显示

例子:ps aux,显示的列如下:

USER        PID  %CPU    %MEM    VSZ   RSS TTY      STAT   START   TIME    COMMAND

USER:进程的所属这

PID:进程ID

%CPU:CPU占用率

%MEM(memory):内存占用率

VSZ:虚拟内存集的大小

RSS:常驻内存集的大小

TTY:进程所处终端,pts表示远程连接的伪终端,?表示该进程由系统启动

STAT:进程的状态,R代表可运行,S代表可中断的等待状态,D代表不可中断的等待状态,Z代表僵尸进程,+代表前台进程,l代表多线程进程,N代表低优先级进程,<代表搞优先级进程,s代表时开启了多个子进程的会话领导者。

START:进程的开始时间

TIME:从启用到现在占用的CPU的时间

COMMADN:开启该进程的程序命令,如果时[]括号括住的内容,则代表该程序命令时系统产生的

ps

-e:显示系统中所有进程的信息

-f:显示进程的所有信息

列出的信息列如下所示:

UID         PID   PPID     C   STIME    TTY         TIME CMD

UID:所属用户的ID

PID:进程ID

PPID:父进程ID

C:CPU占用率

STIME:进程开始时间

TTY:进程所属终端,?代表时系统产生的进程,pts代表是远程连接产生的伪终端你,tty是本地的虚拟终端

TIME:占用CPU的时间

CMD:对应的程序命令

总的来说两个查看进程的方式差不多。

top动态进程信息

top - 18:01:25 (系统时间) up  4:02(登录时间),  3 users(终端的用户数),  load average: 0.00, 0.02, 0.05(这个代表1分钟,5分钟,15分钟内平均的内核使用数)


Tasks: 215 total(总的任务数),   1 running(正在运行的数目), 214 sleeping(睡眠的数目),   0 stopped(停止的数目),   0 zombie(僵尸进程数目)


%Cpu(s):  0.3 us(用户进程的CPU使用率),  0.0 sy(系统进程的CPU使用率),  0.0 ni,

99.7 id(空闲进程的CPU占用率),  0.0 wa,  0.0 hi,  0.0 si,  0.0 st


KiB Mem :   995748 total(总内存),   107040 free(空闲内存),   663128 used(以用内存),   225580 buff/cache(内核缓存)
KiB Swap:  2097148 total(总交换分区大小),  2042896 free(空闲的交换分区大小),    54252 used(已经使用的交换分区大小).   175700 avail Mem(可用交换分区大小)

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND    

top命令的状态下,

按P:以占用CPU百分比排序

按M:以占用内存百分比排序

按T:以占用CPU的时间排序

按N:以进程启动时间排序

以上排序都是从大到小排序

top的选项

top -d x:可以调整top命令刷新的时间间隔

top -A:可以显示所有的进程

top -o xx:可以指定只显示某些列

僵尸进程的过滤

我们可以这样输入top命令,如top -A -o stat,pid,ppid,%cpu,%mem|grep "^Zz",我们首先利用-A和-o指定输出某些固定列,同时指定进程的状态位首列,然后我们利用grep过滤选择以Zz打头的行,因为stat是首列,所以以Zz打头的行就是对应的僵尸进程

proc目录

proc目录的数据并不是存放在硬盘当中,而是存放在内存当中,换而言之,proc目录中存放的是正在处理的内存中的数据。

进程的后台启动

jobs:查看后台进程,以及对应的后台作业ID

-l:显示后台进程的PID

在要执行的程序后面加上是那个“&”即可将进程转换为后台进程,且后台的进程是处于运行状态,若输入ctrl+Z,则是将程序转为后台的停止进程。

bg 后台作业ID(back ground):将后台停止的进程重新执行

fg  后台作业ID(front ground):将后台进程转换为前台进程

nohup命令

一般来说命令总是在终端上输入并执行的,如果执行进程所在的终端关闭了,那么对应的进程也会关闭,所以若我们解除进程与终端的关系,即即便终端关闭,该进程依然可以继续执行,且该进程的执行者变为系统,而不是终端。

nohup 想要解除的后台进程的命令 ,如nohup nc   -lp  6000&,注意要再命令的尾部加上“&”符号,使其再后台运行,输入之后即使终端关闭,它的执行者也会自动切换至系统

进程终止命令

kill 进程ID(正常情况)

kill -9 进程ID :当遇到正常情况下不能结束的进程的时候,可以使用该命令强制地终止。

killall  程序名 :可以清除某个程序开启地所有进程

killall -9 程序名:可以强制地杀死该程序地所有进程

killall -9 -u 用户名 :可以杀死某个用户的所有进程