Linux进程管理(redhat 8.0)
Linux进程管理
进程基本概述
1进程的组成部分 2进程的环境 3进程的产生 4进程的分类
Linux进程调度与多任务
进程优先级
- 进程优先级范围:0-139,数字越小优先级越高
- 0-99:实时优先级,由内核调整
- 100-139:静态优先级,用户可控制 - 进程优先级高的特点:
- 获得更多的CPU运行时间
- 更优先获得CPU运行机会
要修改进程的优先级可以通过调整进程的nice值来实现,nice值越小,优先级越高:
nice值的范围是(-20到19),-20对应100,19对应139
相对优先级描述
nice级别与权限
普通用户只能通过nice命令降低自己进程的优先级;只有Root用户才能通过nice命令提高自己进程的优先级
进程优先级调整
renice NI PID #调整已经启动的进程nice值
例:renice 3 3704
nice -n NI Command
进程管理命令
ps命令用于列出当前所有进程,可以查看进程的详细信息
包括:
- 用户识别符(UID),它确定进程的特权
- 唯一进程识别符(PID)
- CPU和已经划分的实时时间
- 进程在各个位置上分配的内存数量
- 进程的位置STDOUT,称为控制终端
- 当前的进程状态
ps支持三种选项格式:
- UNIX(POSIX)选项,可以分组但必须以连字符开头
- BSD选项,可以分组但不可以与连字符同用
- GNU长选项,以双联字符开头
ps(process state),显示进程信息:
- 加了[ ]中括号的,表示内核线程,通常位于顶部- exiting或defunct表示僵尸进程
常用参数:
a //显示所有与终端有关的进程
u //显示进程是由哪个用户启动的
x //显示所有与终端无关的进程
-e //显示所有进程,与-A效果相同
-l //以长格式显示
-F //显示更详细的完整格式的进程信息
-f //显示更详细的完整格式的进程信息
-H //以进程层级格式显示进程相关信息
-o //根据自己的需要选择要显示的字段
显示所有终端进程
显示启动用户
显示与所有终端无关的进程
[root@wcluser ~]# ps aux | grep smb
root 1520 0.0 1.1 189724 21932 ? Ss 8月06 0:00 /usr/sbin/smbd --foreground --no-process-group
root 1683 0.0 0.2 162924 5488 ? S 8月06 0:00 /usr/sbin/smbd --foreground --no-process-group
root 1684 0.0 0.2 162916 4380 ? S 8月06 0:00 /usr/sbin/smbd --foreground --no-process-group
root 1686 0.0 0.3 189724 5896 ? S 8月06 0:00 /usr/sbin/smbd --foreground --no-process-group
显示所有进程
以长格式显示进程
以更详细显示进程相关信息
[root@wcluser ~]# ps -elf | grep smb
4 S root 1520 1 0 80 0 - 47431 do_epo 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1683 1520 0 80 0 - 40731 do_epo 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1684 1520 0 80 0 - 40729 do_epo 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1686 1520 0 80 0 - 47431 do_epo 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
显示所有进程
以长格式显示进程
以层级格式显示进程相关信息
[root@wcluser ~]# ps -elH | grep smb
4 S 0 1520 1 0 80 0 - 47431 do_epo ? 00:00:00 smbd
1 S 0 1683 1520 0 80 0 - 40731 do_epo ? 00:00:00 smbd-notifyd
显示所有进程
以长格式显示进程
显示更详细的完整格式的进程信息
[root@wcluser ~]# ps -elF | grep smb
4 S root 1520 1 0 80 0 - 47431 do_epo 21932 0 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1683 1520 0 80 0 - 40731 do_epo 5488 0 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1684 1520 0 80 0 - 40729 do_epo 4380 0 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
1 S root 1686 1520 0 80 0 - 47431 do_epo 5896 0 8月06 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
只显示进程号、命令、nice优先级
[root@wcluser ~]# ps -o pid,comm,niPID COMMAND NI2105 bash 02300 ps 0
aux结果 | 解析 |
---|---|
VSZ | Virtual memory SiZe,虚拟内存集 |
RSS | ReSident Size,常驻内存集 |
STAT | 进程状态 |
TIME | 运行时的累积时长 |
ps命令结果 | 解析 |
NI | nice值 |
PRI | 优先级 |
PSR | 进程运行在哪个CPU核心上 |
RTPTRIO | 实时优先级 |
C | 运行的CPU编号 |
STIME | 进程的启动时 |
pstree
进程生成树
[root@wcluser ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]├─VGAuthService├─agetty├─atd├─auditd─┬─sedispatch│ └─2*[{auditd}]├─chronyd├─crond├─dbus-daemon───{dbus-daemon}├─firewalld───{firewalld}├─gssproxy───5*[{gssproxy}]├─lsmd├─mcelog├─polkitd───5*[{polkitd}]├─rhsmcertd├─rngd───{rngd}├─rpc.idmapd├─rpc.mountd├─rpc.statd├─rpcbind├─rsyslogd───2*[{rsyslogd}]├─smartd├─smbd─┬─cleanupd│ ├─lpqd│ └─smbd-notifyd├─sshd─┬─sshd───sshd───bash│ └─sshd───sshd─┬─bash───pstree│ └─bash├─sssd─┬─sssd_be│ └─sssd_nss├─systemd───(sd-pam)├─systemd-journal├─systemd-logind├─systemd-udevd├─tuned───3*[{tuned}]└─vmtoolsd───{vmtoolsd}
pgrep
用于查看进程号(PID)
[root@wcluser ~]# pgrep smb
1520
1683
[root@wcluser ~]# pgrep sshd
1111
1894
1910
2100
2104
pidof (pgrep类似主要用pidof)
根据进程名称查询其PID号
[root@wcluser ~]# pidof smbd
1686 1684 1683 1520
[root@wcluser ~]# pidof sshd
2104 2100 1910 1894 1111
vmstat
语法:
vmstat [number] [number] #vmstat+间隔显示的时间(默认单位秒)+显示的次数
[root@wcluser ~]# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st2 0 0 1224760 3196 330888 0 0 15 3 57 115 0 0 100 0 00 0 0 1224668 3196 330888 0 0 0 14 75 145 0 0 100 0 00 0 0 1224668 3196 330888 0 0 0 0 51 99 0 0 100 0 00 0 0 1224700 3196 330888 0 0 0 0 54 104 0 0 100 0 00 0 0 1224700 3196 330888 0 0 0 0 50 96 0 0 100 0 0
procs:r(running) //表示等待运行的队列长度,也即等待运行的进程的个数b(block) //表示阻塞队列长度,也即处于不可中断睡眠态的进程个数
memory:swpd //交换内存的使用总量free //空闲物理内存总量buffer //用于buffer的内存总量cache //用于cache的内存总量
swap:si(swap in) //表示从物理内存有多少页面换进swap,也即数据进入swap的数据速率(kb/s)so(swap out) //表示从swap有多少页面换进物理内存,也即数据离开swap的数据速率(kb/s)
io:bi(block in) //表示磁盘块有多少个被调入内存中,也即从块设备读入数据到系统的速率(kb/s)bo(block out) //表示有多少个磁盘块从内存中被同步到硬盘上去了,也即保存数据至块设备的速率(kb/s)
system:in( interrupts) //表示中断的个数,也即中断速率(kb/s)cs(context switch) //表示上下文切换的次数,也即进程切换速率(kb/s)
CPU:us //表示用户空间sy //表示内核空间id //表示空闲百分比wa //表示等待IO完成所占据的时间百分比st //表示steal,被虚拟化技术偷走的时间(比如运行虚拟机)
控制作业
1. 作业与会话
2. 作业分类
- 在后台运行作业
sleep
休眠命令
语法:
sleep 休眠时间 & #’&'将休眠操作转入后台
[root@wcluser ~]# sleep 50 &
[1] 2387
jobs
查看后台进程命令
[root@wcluser ~]# jobs
[2]+ 已停止 vim /root/passwd
fg
启动后台进程命令
fg %number
#通过jobs命令查看进程的顺序号在%后接上进程顺序号可指定对应进程开启
[root@wcluser ~]# jobs
[3]+ 已停止 sleep 1000
[4]- 运行中 sleep 500 &
[root@wcluser ~]# fg %3
sleep 1000
Ctrl+z
将进程转入后台的同时,暂时停止进程
sleep 1000
^Z
[3]+ 已停止 sleep 1000
[root@wcluser ~]# jobs
[3]+ 已停止 sleep 1000
kill
用于结束进程
kill %number
kill PID
[root@wcluser ~]# jobs
[3]+ 已停止 sleep 1000
[4]- 运行中 sleep 500 &
[root@wcluser ~]# kill %3[3]+ 已停止 sleep 1000
[root@wcluser ~]# jobs
[3]+ 已终止 sleep 1000
[4]- 运行中 sleep 500 &
[root@wcluser ~]# ps -ef | grep vim
root 2466 2130 0 04:33 pts/2 00:00:00 vim /root/passwd
root 2468 2105 0 04:33 pts/1 00:00:00 grep --color=auto vim
[root@wcluser ~]# kill 2466
Vim: Finished.
已终止
[root@wcluser ~]#
进程之间沟通
套接字 (socket)
IP地址+端口号
进程之间通信方式:
- 同一主机
- 共享内存
- 信号:Signal(占大多数) - 不同主机
- rpc: remote procecure call
- 基于socket实现进程间通信
使用信号控制进程
指定一个信号的方法:
- 信号号码(数字标识):kill -1
- 信号完整名称:kill -SIGKILL
- 信号简写名称:kill -TERM或kill -KILL或kill -INT或kill -HUP
kill -l
#查看所有进程
基本进程管理信号
短名称 定义 用途
1 HUP 挂起
2 INT 键盘中断
9 KILL 中断,无法拦截
15
默认值 TERM 终止 导致程序终止。和SIGKILL不同
信号编号ID | 短名称 | 定义 | 用途 |
---|---|---|---|
1 | HUP | 挂起 | 让一个进程不用重启就可以重读配置文件,并让新的配置信息生效 |
2 | INT | 键盘中断 | 中断一个前台进程。ctrl+c就是用的SIGINT信号 |
9 | KILL | 中断,无法拦截 | 导致立即终止程序。无法被拦截、忽略或处理 |
15(默认值) | TERM | 终止,导致程序终止 | 和SIGKILL,可以被拦截、忽略或处理。要求程序终止的友好方式,允许自我清理 |
用户可以中断自己的进程,但只有root才能终止由其他人拥有的进程。
kill命令根据ID向进程发送信号。虽其名称为kill,但该命令可用于发送任何信号,而不仅仅是终止程序的信号
在一台虚拟机上建立两个ssh连接端口
kill -1(HUP)
端口1:
[root@wcluser ~]# sleep 100
端口2:
root@wcluser ~]# kill -1 1722
[root@wcluser ~]# ps -ef | grep sleep
root 1729 1657 0 09:04 pts/0 00:00:00 sleep 100
root 1731 1678 0 09:04 pts/1 00:00:00 grep --color=auto sleep
[root@wcluser ~]# kill -1 1729
端口1结果:
kill -2(INT)
端口1:
[root@wcluser ~]# sleep 800
端口2:
[root@wcluser ~]# ps -ef | grep sleep
root 1738 1657 0 09:12 pts/0 00:00:00 sleep 800
root 1740 1678 0 09:12 pts/1 00:00:00 grep --color=auto sleep
[root@wcluser ~]# kill -2 1738
端口1结果:
kill -9(KILL)
端口1:
[root@wcluser ~]# sleep 500
端口2:
[root@wcluser ~]# ps -ef | grep sleep
root 1745 1657 0 09:16 pts/0 00:00:00 sleep 500
root 1747 1678 0 09:16 pts/1 00:00:00 grep --color=auto sleep
[root@wcluser ~]# kill -9 1745
端口1结果:
kill -15(TERM)
端口1:
[root@wcluser ~]# sleep 700
端口2:
[root@wcluser ~]# ps -ef |grep sleep
root 1753 1657 0 09:19 pts/0 00:00:00 sleep 700
root 1755 1678 0 09:19 pts/1 00:00:00 grep --color=auto sleep
[root@wcluser ~]# kill -15 1753
端口1结果;
通过通配符直接指定进程
kill -信号编号 $(pidof 进程名称)
[root@wcluser ~]# kill -9 $(pidof sleep)
结果:
[root@wcluser ~]# sleep 300
已杀死
[root@wcluser ~]# kill -15 $(pidof vim)
结果:
[root@wcluser ~]# vim /root/passwd
Vim: Caught deadly signal TERMVim: Finished.已终止
[root@wcluser ~]#
IO负载
查看核心数
[root@yukino ~]# grep 'model name' /proc/cpuinfo
model name : Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
#由于这是虚拟机中的系统,所以显示的是物理机的cpu
一些UNIX系统仅考虑CPU使用率或运行队列长度来指示系统负载。由于具有空闲CPU的系统可能会因为磁盘或网络资源忙而遇到很长时间的等待,因此Linux负载平均值中包含了对I/O的考量。遇到负载平均值很高但CPU活动很低时,请检查磁盘和网络活动。
uptime
[root@yukino ~]# uptime 23:56:09 up 8 min, 1 user, load average: 0.00, 0.05, 0.05#load averages:表示负载平均值#0.00:最近一分钟负载情况#0.05:最近五分钟负载情况#0.05:最近十五分钟负载情况
实时监控
top
-d #设置延迟时长,top -d 1表示每隔1秒刷新一次,默认每隔5秒刷新
-b #批模式翻屏显示,默认只实时显示一屏,若要显示后面的进程信息则可使用-b选项,与-n #合用,可指定显示翻#屏
top -d
[root@yukino ~]# top -d
top: -d requires argument
[root@yukino ~]# top -d 30
top - 00:06:26 up 19 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 217 total, 2 running, 215 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.1 hi, 0.1 si, 0
MiB Mem : 1806.2 total, 1336.8 free, 215.9 used, 253.5 buff/cach
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1433.7 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ 1639 root 20 0 0 0 0 I 0.2 0.0 0:00.90 1003 root 20 0 249256 14764 12868 R 0.1 0.8 0:01.18 1100 root 20 0 217256 6332 4172 S 0.0 0.3 0:00.13 1 root 20 0 176384 10808 8212 S 0.0 0.6 0:01.61 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 9 root 20 0 0 0 0 S 0.0 0.0 0:00.04 10 root 20 0 0 0 0 I 0.0 0.0 0:00.10 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 22 root 25 5 0 0 0 S 0.0 0.0 0:00.00 23 root 39 19 0 0 0 S 0.0 0.0 0:00.01 24 root 0 -20 0 0 0 I 0.0 0.0 0:00.00
top命令各项参数意义:
load average:1分钟,5分钟,15分钟load average //CPU队列中等待运行的任务的个数
cpu(s):多颗CPU平均负载,按1键显示每颗CPU平均负载。us //表示用户空间;sy //表示内核空间;ni //表示调整nice值,CPU占用的比率;id //表示空闲百分比;wa //表示等待IO完成所占据的时间百分比;hi //表示hard interrupt,硬件中断占据的时间百分比;si //表示软中断占据的时间百分比;st //表示steal,被虚拟化技术偷走的时间(比如运行虚拟机)
PR //优先级
NI //nice值
VIRT //虚拟内存集
RES //常驻内存集
SHR //共享内存大小
S //进程状态top命令交互式子命令:M //根据驻留内存大小进行排序,默认根据CPU百分比排序P //根据CPU使用百分比进行排序T //根据累计时间(占据CPU时长)进行排序l //是否显示平均负载和启动时间t //是否显示进程和CPU状态相关信息m //是否显示内存相关信息c //是否显示完整的命令行信息q //退出top命令k //终止某个进程1 //显示所有CPU的信息s //修改刷新时间间隔
top -b -n 1
#显示一屏的参数;后面的数字表示需要显示屏幕的页数
Linux进程管理(redhat 8.0)相关推荐
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
- Linux—进程管理
1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...
- Linux 进程管理工具
Linux进程管理命令: pstree.ps.top.pidof.htop.glances.pmap.vmstat.dstat.kill.pkill.job.bg.fg.nohup.pgrep ...
- linux进程管理命令实验,实验2Linux进程管理.doc
实验2Linux进程管理 实验2 Linux进程管理 实验目的 1.加深对进程概念的理解,明确进程和程序的区别 2.进一步认识并发执行的实质 3.分析进程争用资源的现象,学习解决进程互斥的方法 实验性 ...
- linux进程管理fork,Linux -- 进程管理之 fork() 函数
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同.相当于克隆了一个自己. Test1 f ...
- Linux进程管理之ps的使用
主题Linux进程管理之ps工具的使用 一ps工具的介绍 ps: process state 进程状态 ps - report a snapshot of the current processes ...
- linux ps 进程组,linux进程管理(2)---进程的组织结构
一.目的 linux为了不同的进程管理目的,使用了不同的方法组织进程之间的关系,为了体现父子关系,使用了"树形"图:为了对同一信号量统一处理,使用了进程组:为了快速查找某个进程,使 ...
- linux进程管理命令kill,Linux进程管理命令-kill | IT运维网
格式:kill -l [signal] -l:显示当前系统可用信号 -l:显示当前系统可用信号 [root@localhost ~]# kill -l 1) SIGHUP 2) SIGINT 3) S ...
- 操作系统课设之Linux 进程管理
前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...
- Linux进程管理与调度-之-目录导航【转】
转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...
最新文章
- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...
- Linux学习总结(四十七)NFS服务配置 上篇
- Java数据结构和算法:234树和外部存储
- 配置管理之PackageProvider接口
- 【bzoj4571SCOI2016美味】
- 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)
- 财务学python有什么用_学习Python对财务工作者有哪些用途?
- 不止代码:恐狼后卫(ybtoj-区间dp)
- Symfony1.4.11学习笔记(三):设置虚拟机
- RecycleView添加setEmptyView
- Prism发布了第一个版本+Entlib3.1在VS2008下工作的解决方案
- 米思齐(Mixly for Mac)官方版下载过程以及遇到的问题/解决方法
- oracle vm 安装win server 2012 错误0x000000C4
- 员工年终绩效考核表模板
- 概率统计:离散分布和连续分布
- 金山WPS c++ 二面面经
- 修行一定要在寺院里吗,出家人离开寺院修行,都属邪门外道吗?
- 如何用美剧真正提升你的英语水平(转载)
- 第二篇:呈现内容_第三节:CompositeControl呈现
- vivo X系列为什么能不断拉高手机上限?