首页 > 系统相关 >Linux进程管理

Linux进程管理

时间:2022-12-28 12:44:54浏览次数:48  
标签:SIGRTMAX 管理 内存 信号 Linux 进程 CPU SIGRTMIN

ps -- 静态查看进程

ps -elf 或 ps aux

-e:显示所有进程,环境变量
-l:代表长格式
-f:代表完整的格式
a:显示所有用户的所有进程
u:显示进程的拥有者
x:和a一起使用,显示所有进程(包含无控制终端的进程)  TTY为?的进程

ps -elf与ps aux 查询目的是一样的, 显示所有在运行的进程, 前者是用bsd的格式输出,后者是用标准格式输出。
bsd格式: UID , PID , PPID , C , STIME , TTY , TIME , CMD
标准格式: USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND
使用ps aux查询中的STAT表示进程状态:

R:该进程正在运行
S:休眠进程
Z:僵尸进程,实际上该进程已经终止,但是它的父进程却无法正常终止它,造成僵尸进程的状态
T:该进程正在跟踪或者已经停止

top -- 动态查看进程

命令中各选项的含义如表所示。
image
在top命令的显示窗口中,还可以使用表所示的按键,进行一些交互操作。
image

监控列表的详细解析

统计信息区(系统资源信息区)前五行,即列表上方的五行

image
第一行:输出系统任务队列信息

- 18:46:38:                 	系统当前时间 
- up 2days 1:54:            	系统开机后到现在的总运行时间
- 1 user:                   	当前登录用户数
- load average: 0, 0.01, 0.05: 系统负载,系统运行队列的平均利用率,可认为是可运行进程的平均数;
				三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值;
				单核CPU中load average的值=1时表示满负荷状态,多核CPU中满负载的load average值为1*CPU核数

第二行:任务进程信息
image

total:        	系统全部进程的数量
running:    	运行状态的进程数量
sleeping:    	睡眠状态的进程数量
stoped:        停止状态的进程数量
zombie:        僵尸进程数量

第三行:CPU信息
image

us:    	用户空间占用CPU百分比
sy:    	内核空间占用CPU百分比
ni:    	已调整优先级的用户进程的CPU百分比
id:    	空闲CPU百分比,越低说明CPU使用率越高
wa:		等待IO完成的CPU百分比
hi:    	处理硬件中断的占用CPU百分比
si:    	处理软中断占用CPU百分比
st:    	虚拟机占用CPU百分比

第四行:物理内存信息
image

以下内存单位均为MB
total:        	物理内存总量
free:         	空闲内存总量
used:         	使用中内存总量
buff/cacge:   	用于内核缓存的内存量

第五行:交互区内存信息
image

total:        	交换区总量
free:        	空闲交换区总量
used:        	使用的交换区总量
avail Mem:   	可用交换区总量

:如果used不断在变化, 说明内核在不断进行内存和swap的数据交换,说明内存真的不够用了
问题:内存空间还剩多少空闲呢?
答案:空闲内存=空闲内存总量+缓冲内存量 +可用交换区总量

进程信息区(进程列表)

image

PID:        	进程号
USER:        	运行进程的用户
PR:        	优先级
NI:           	nice值。负值表示高优先级,正值表示低优先级
VIRT:       	占用虚拟内存,单位kb。VIRT=SWAP+RES 
RES:        	占用真实内存,单位kb
SHR:        	共享内存大小,单位kb
S:            	进程状态
%CPU:        	占用CPU百分比
%MEM:        	占用内存百分比
TIME+:        	上次启动后至今的总运行时间
COMMAND:    	命令名or命令行
进程状态
R=运行状态
S=睡眠状态
D=不可中断的睡眠状态
T=跟踪/停止
Z=僵尸进程

进程控制

后台运行和前后台调度

使用nohup命令让一个命令或程序脱离终端(即退出当前终端不会终止程序),使用&将命令置于后台运行,两者结合使用。

# 后台执行命令语法
nohup 命令 & 
# 已经执行了的命令前台运行状态下,使用ctrl + z将其放置后台,但是该进程在后台是停止的状态。

# 查看后台进程运行状态使用jobs命令
jobs

# 指定任务在后台运行使用bg命令
bg 任务编号

# 将后台运行的命令变成前台运行使用fg命令
fg 任务编号

指定或者调整用户进程的nice值

nice值越高,该进程抢占资源的能力越弱
nice值越低,该进程抢占资源的能力越强

范围:-20~19
nice -- 运行时直接设置nice值
用法: nice -n 数字 command
renice -- 对于已经运行的,调整nice值
用法: renice 数字 PID

结束进程和进程信号

kill使用进程PID发送信号,pkill是使用程序名,如

kill -9 1188        	# 强制终止该进程
kill -15 1188        	# 优雅结束该进程
pkill -9 mysql       	# 强制结束mysql进程
kill -l            	# 列出kill信号列表

kill -l 信号列表

和终止进程相关的信号有:1 2 3 9 15 19 20

1) SIGHUP       终端的控制进程结束,通知session内的各个作业,脱离关系 
2) SIGINT       程序终止信号(Ctrl+c)
3) SIGQUIT      和2号信号类似(Ctrl+\),产生core文件
4) SIGILL       执行了非法指令,可执行文件本身出现错误 
5) SIGTRAP      有断点指令或其他trap指令产生,有debugger使用
6) SIGABRT      调用abort函数生成的信号 
7) SIGBUS       非法地址(内存地址对齐出错)
8) SIGFPE       致命的算术错误(浮点数运算,溢出,及除数为0 错误)
9) SIGKILL      用来立即结束程序的运行(不能为阻塞,处理,忽略)
10) SIGUSR1     用户使用 

11) SIGSEGV     访问内存错误
12) SIGUSR2     用户使用
13) SIGPIPE     管道破裂
14) SIGALRM     时钟定时信号
15) SIGTERM     程序结束信号(可被阻塞,处理)
16) SIGSTKFLT   协处理器栈堆错误
17) SIGCHLD     子进程结束,父进程收到这个信号并进行处理,(wait也可以)否则僵尸进程
18) SIGCONT     让一个停止的进程继续执行(不能被阻塞)
19) SIGSTOP     让一个进程停止执行(不能被阻塞,处理,忽略)
20) SIGTSTP     停止进程的运行(可以被处理和忽略)

21) SIGTTIN     当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.
22) SIGTTOU     类似SIGTTIN,但在写终端时收到
23) SIGURG      有紧急数据或者out—of—band 数据到达socket时产生
24) SIGXCPU     超过CPU资源限定,这个限定可改变
25) SIGXFSZ     当进程企图扩大文件以至于超过文件大小资源限制
26) SIGVTALRM   虚拟时钟信号(计算的是该进程占用的CPU时间)
27) SIGPROF     时钟信号(进程用的CPU时间及系统调用时间)
28) SIGWINCH    窗口大小改变时发出
29) SIGIO       文件描述符准备就绪,可以进行读写操作
30) SIGPWR      power failure
31) SIGSYS      非法的系统调用

34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

信号的分类

不可靠信号:(1 - 31)

  • Linux的信号处理继承自UNIX,早期的UNIX当信息处理函数执行完毕,该信号恢复成缺省处理动作(Linux已经改进)
  • 信号不排队,会出现信号丢失现象

可靠信号:(34 - 64)

  • 不会出现信号丢失

非实时信号:

  • 不可靠信号都是非实时信号

实时信号:

  • 可靠信号都是实时信号

trap -- 屏蔽进程信号

# shell脚本中使用 trap "" 信号 后可以屏蔽该信号,引号内可以写提示,直至遇到 trap - 信号 后解除
# 示例
#!/bin/bash
trap "无法中断!" 1 2 3 9 15 19 20
while [ -z $input_var ];do
        read -p "请输入:" input_var
        echo $input_var
done
trap - 1 2 3 9 15 19 20
read -p "..." stop

执行该脚本,trap屏蔽信号下的while循环无法被Ctrl C和Ctrl D终止脚本,直至到下一个trap解除。
image

标签:SIGRTMAX,管理,内存,信号,Linux,进程,CPU,SIGRTMIN
From: https://www.cnblogs.com/tandabao/p/17009896.html

相关文章

  • Linux计划任务
    crontab#选项-e#编辑计划任务-l#查看计划任务-u#给其他用户设置计划任务-r#清空计划任务格式:分时日月周绝对路径......
  • Linux sshd服务
    软件包名和相关配置文件服务的软件包名openssh-server配置文件/etc/ssh/sshd_config#优化SSH连接速度,如果配置......
  • rbac权限管理
    一.概述传统权限管理:类似于这样,每新增一个人都要重新给她一些权限,是针对每个人单独设置的,这种方法已经不适用于高效管控权限的基于此,RBAC权限模型就诞生了,Role-BasedA......
  • Docker的资源管理控制
    一、CPU控制cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups(Contr......
  • Linux软件包管理
    tar--打包压缩、解压缩命令#打包语法tar选项打包后的文件名需要打包的文件1打包文件2#解压语法tar选项包文件[-C解压到指定目录]#选项-f接文件名......
  • 深入浅出理解Linux thermal governor之IPA
    IPA(IntelligentPowerAllocation)是由ARM开发的符合linux内核thermalframework的governor,代码中的名字为power_allocator,旨在满足温控效果的条件下最大化性能。IPA背景......
  • Linux磁盘管理
    fdisk查看磁盘使用情况和磁盘分区(不适用于高于2TB的硬盘分区,高于2TB的分区使用parted命令)fdisk-l#列出所有设备的分区表信息fdisk-l/dev/sdb......
  • Linux用户和组管理
    相关系统文件/etc/passwd#保存用户信息的文件/etc/shadow#保存用户密码相关信息的文件/etc/group#保存组信息的文件/etc/gshadow......
  • Linux文件权限管理
    文件属性的第一列,由10个字符组成,第1个字符是文件类型,之后9个字符每3个为1组,每组里的字符代表权限。这3组称之为ugo权限,就是划分文件对应所属分组的权限。u:--user......
  • Linux文件查找查看
    文件类型区分即文件权限的第一个,如:-rw-r--r--,则该文件属于普通文件-普通文件d目录c字符设备文件,终端就是一个典型b......