Linux基础-进程管理

linux进程管理

进程是一个在系统中运行的程序   

进程是已经启动的可执行的运行实例,进程有以下部分组成:

已分配内存的地址空间

安全属性,抱括所有权凭据和特权

进程代码一个多个执行线程

进程状态

 

程序:是二进制文件,比如 /bin/目录下的这些静态文件

进程: 是程序运行的过程,动态的,有生命周期和运行状态

 

进程类型

守护进程:在系统引导过程中就启动的进程,跟终端无关的进程

前台进程:跟终端有关,可以通过终端启动的进程

 

进程的生命周期

 

父进程复制自己的地址空间(fork)创建一个子进程。 每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性需求。PID跟父进程ID  PPID 是子进程的进程环境因素,任何进程都可以创建子进程,所有的进程都是第一个系统进程的后代。

PID进程号是唯一表示进程的ID

 

 

 

 

 

 

 

 

进程查看:

 

ps 查看进程信息 

a:查看所有终端进程

u:打印进程所有者信息

x:查看不属于任何终端的进程

-e  查看系统所有进程

-f  显示不包含资源使用率的相关信息

--sort 指定排序参数,例如--sort=-%mem   按照内存大小降序

 

ps   aux   查看目前所有进程           ps   -ef

 

列名

说明

USER

进程拥有者

PID

进程ID

%CPU

占用的 CPU 使用率

%MEM

占用的内存使用率

VSZ

占用的虚拟内存大小

RSS

占用的常驻内存大小

TTY

执行的终端编号

STAT

该进程的状态*

START

进程开始时间

TIME

CPU使用时间

COMMAND

所执行的命令

 

STAT:

S    休眠

D    不可终止

R    正在运行

Z    僵尸进程

T    停止

s     子进程

<    高优先级

N     低优先级

+    后台进程

I     锁定进程

I     多线程进程

 

ps aux   --sort  %cpu        按照cpu升序排序

ps aux   --sort  -%cpu   按照cpu降序排序

ps aux  --sort  %mem         按照内存升序排序

ps aux  --sort   rss         按照实际使用内存排序  有具体数值

 

 

我们还可以通过以下命令   来查看ssh这个服务的层级关系,按照父子进程来看

ps  auxf   | grep sshd

 

这里面f是:表达程序间的相互关系

 

我们甚至可以查看整个系统的进程树  (centos7系统不能只能看 需要安装这个功能 )

pstree

 

 

top命令用于显示process动态

-d: 改变显示的更新速度,或是在交互式指令列( interactive command)按 s

-c: 切换显示模式,共有两种模式,一是只显示程序的名称,另一种是显示完整的路径与名称

-S: 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来

-s: 安全模式,将交互式指令取消, 避免潜在的危机

-i: 不显示任何闲置 (idle) 或无用 (zombie) 的行程

-n: 更新的次数,完成后将会退出 top

-b: 显示模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到文件内

实例:

显示进程信息,每个1秒钟刷新一次

[root@localhost ~]# top -d 1

 显示完整命令

[root@localhost ~]# top -c

 更新两次后终止更新显示

[root@localhost ~]# top -n 2

显示具体进程 7097

[root@localhost ~]# top -p 7097

 

KILL 

kill命令用于删除执行中的程序或工作   

kill可以将指定的信号送到程序,默认信号是15   杀死  可以杀死指定程序。

kill选项:   

-l   查看所有的信号名称

-s   指定要送出信号是那个一个  

程序的PID   就是具体指出是针对哪个程序

编号信号名作用1SIGHUP重新加载配置2SIGINT键盘中断^C3SIGQUIT键盘退出9SIGKILL强制终止15SIGTERM终止(正常结束),缺省信号18SIGCONT继续19SIGSTOP停止20SIGTSTP暂停^Zkill   5011     正常终止 进程5011

kill  -9   5011  强制终止进程5011

 

pkill :用于杀死一个进程,但是与kill不同的是,他会杀死指定名字的所有进程

pkill   sshd       结束sshd所有进程  

pkill   -u    user1    杀死用户user1 所有进程

pkill   -t  pts/2   杀死pts/2  上所有进程

 

查看远程登录用户,并且踢出用户

[root@rhel8-server ~]# w

 11:51:20 up 35 min,  4 users,  load average: 0.04, 0.11, 0.22

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     tty2     tty2             11:15   35:41   1:54   0.22s /usr/libexec/tracker-miner-fs

root     pts/0    192.168.40.1     11:17    0.00s  0.08s  0.01s w

root     pts/1    192.168.40.1     11:35    2:43   0.07s  0.07s -bash

redhat   pts/3    192.168.40.1     11:51    4.00s  0.03s  0.03s -bash

发现redhat用户正在通过ip地址192.168.40.1登录  我们可以把这个用户踢下线

pkill    -u   redhat       //执行pkill指令

用户下线

 

nice命令可以用来修改程序的优先级别,如果未指定程序,则会显示目前程序的优先级别   

默认nice值为0   范围是 -20  到19   nice数值越小表示程序会越优先处理   在系统运行缓慢的时候,nice值越小,进程会越优先执行,处理级别越高。

Linux进程调度及多任务

每个CPU(或CPU核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的CPU及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的假象。

通过调整程序在计算机中的优先级别,可以让程序在时间片中占有更长的时间,从而获得更快的处理速度

更改优先级:

nice  -n 5   vim   /etc/passwd 在进程启动时,附加一个nice值

renice -10 3174(PID) 在进程启用之后   

只有root才可以降低nice值

ps aux  找到该进程

posted @ 2022-01-27 17:06  终究还是避免不了遗憾  阅读(50)  评论(0编辑  收藏  举报