linux之进程管理

进程管理

1 进程基本概述

  • 运行起来的程序,就叫进程
  • 当程序运行之后,cpu会调度一块内存空间给程序使用, 以及进程运行的身份和权限
  • 进程在运行过程中,服务器会以各种状态来表示当前进程的指标信息
  • 线程是进程内的调度单位,进程可以包含一个或多个线程

1.1 进程和程序

  • 程序是静态的,是以数据和指令集组合而成的可执行文件
  • 进程是程序的动态,进程是存在生命周期的,随着程序的终止而终止

1.2 程序的生命周期

  • 子进程在处理任务时,父进程会进入等待状态
  • 子进程处理完成任务,会唤醒父进程回首子进程资源
  • 如果子进程在处理任务时,父进程退出,而子进程未退出,子进程会变为僵尸进程

2 监控进程状态

  • 查看进程的状态分两种
  • 静态查看 ps
  • 动态监测 top

2.1 ps -auxf 查看进程、PID、占用cpu百分比,占用内存百分比,状态、执行的命令等

-a显示所有终端机下执行的进程,除了阶段作业领导者之外
-u以用户为主的格式来显示进程状况
-x显示所有进程,不以终端机来区分
-f用ASCII字符显示树状结构,表达进程间的相互关系

2.2 ps 参数解释

参数 说明
USER 运行进程的用户
PID 进程的PID号
%CPU 进程占用cpu资源的百分比
%MEM 进程占用物理内存的百分比
VSZ process 使用掉的虚拟内存量 (Kbytes)
RSS process 占用的固定的内存量 (Kbytes)
TTY 进程运行的终端,如果是系统运行的,则显示 ?, tty1-tty6 是本地登录, pts/0 远程登录
STAT 进程的目前状态
START 进程启动时间
TIME 进程实际使用cpu运行的时间
COMMAND 启动时的指令信息

2.3 进程状态参数解释

STAT状态 说明 STAT状态 符号 说明
R 进程运行 s 进程是控制进程, Ss进程的领导者,父进程
S 可中断睡眠 < 进程运行在高优先级上,S<优先级较高的进程
T 进程被暂停 N 进程运行在低优先级上,SN优先级较低的进程
D 不可中断睡眠 + 当前进程运行在前台,R+该表示进程在前台运行
Z 僵尸进程 l 进程是多线程的,Sl表示进程是以线程方式运行

2.4 top 参数解释

任务指标 说明
Tasks: X total 当前进程总数
X running 正在运行的进程数
X sleeping 睡眠的进程数
X stopped 停止的进程数
X zombie 僵尸进程数
%Cpu(s): 49.2 us 系统用户进程使用CPU百分比
5.7 sy 内核进程占用CPU百分比,内核是于硬件进行交互
ni 调整过优先级进程占用百分比
45.2 id 空闲CPU的百分比
0.0 wa CPU等待IO完成的时间
0.0 hi 硬中断,占的CPU百分比
0.0 si 软中断,占的CPU百分比
0.0 st 虚拟机占用物理CPU的时间

3 管理进程状态

  • 进程异常需杀死
  • 程序配置文件需更新
  • 程序重启
命令 说明
kill -l 查看所有支持的信号
常用的3个信号
SIGHUP 重新加载配置文件 1
SIGKILL 强制杀死进程 9
SIGTERM 终止进程,默认kill使用该信号 15
killall 命令用于杀死指定名字的进程
killall nginx
pkill 使用pkill踢出从远程登录到本机的用户
pkill -9 -t pts/1

4 管理后台进程

  • 后台进程:当前终端执行脚本 加上&
  • 前台进程:实时显示脚本执行过程
#在后台运行
[root@kylin-sp3v10 ~]# sleep 500 &
[1] 1613

#查看后台运行的作业列表
[root@kylin-sp3v10 ~]# jobs 
[1]+  Running                 sleep 500 &

#bg %1 放置后台运行
[root@kylin-sp3v10 ~]# bg %1
-bash: bg: job 1 already in background

#fg %1 返回前台执行
[root@kylin-sp3v10 ~]# fg %1
sleep 500

#kill %1 终止后台运行
[root@kylin-sp3v10 ~]# kill %1

4.1 退出终端,持续后台运行操作

1. screen
# screen 指定一个任务名称后进入到一个新bash中
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm --no-check-certificate

#查看任务列表
[root@kylin-sp3v10 ~]# screen -list
There is a screen on:
	1624.pts-0.kylin-sp3v10	(Detached)
1 Socket in /run/screen/S-root

# 平滑退出screen  ctrl+a+d 不会终止任务,如果使用exit则退出 

#screen -r 1624(进程号)

2. nohup
#nohup在运行过程中会在当前的目录生成一个nohup.out的临时文件

# 持续后台运行 关闭当前终端不影响
nohup wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm --no-check-certificate &

5 进程的优先级

  • 在启动进程时,为不同的进程使用不同的调度策略
  • nice 值越高 表示优先级越低,例如+19 该进程容易将CPU使用量让给其他进程
  • nice值越低 表示优先级越高,例如-20, 改进程更不倾向于让出CPU
  
  PR  NI
  20   0
  20   0
   0 -20
   0 -20
   0 -20
   0 -20
   0 -20
  20   0
  20   0
  20   0
  rt   0
  20   0
  20   0
   0 -20
  20   0
  20   0
   0 -20
  20   0
  25   5
  39  19
   0 -20
   0 -20
   0 -20
   
#nice指定程序的优先级,语法格式nice  -n 优先级数字 进程名称
#开启vim并指定程序优先级为-5  并查看进程优先级
nice -n -5 vim &

# renice命令修改一个正在运行的进程优先级,语法格式 renice –n 优先级数字 pid
renice -n -10 1024

6 系统平均负载

w
uptime
top
posted @ 2024-11-26 15:13  被时光移动的城市  阅读(20)  评论(0编辑  收藏  举报