进程管理

##1.什么是进程##
程序(program)放置在储存媒体中(如硬盘、光盘、软件、磁带等)为实体文件的型态存在
进程:程序被触发后,执行者的权限与属性、程序的程序码与所需数据等否会被载入内存中,操作系统并给予这个内存的单元一个识别码(PID),所以进程就是一个正在运行的程序
##进程状态##
R(unning): 该程序正在运行中(前台正在使用的)
S(leep): 该程序目前正在睡眠状态(idle),但可以被唤醒(signal)
D: 不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况
T: 停止状态(stop),可能是在工作控制(背景暂停)或除错(traced)状态
Z(ombie):僵尸状态,进程已经终止但却无法被移除至内出外
2.查看进程
1)##图形方式查看
gnome-system-monitor

2)##进程查看命令
ps:静态查看进程信息

[[email protected] ~]$ ps
 PID TTY          TIME CMD
5357 pts/0    00:00:00 bash
5403 pts/0    00:00:00 ps

-A ##所有进程(process)均显示出来,与-e具有同样的效果

 [[email protected] ~]$ ps -A | wc -l
217

-a ##不与terminal有关的process(在当前环境(bash)中运行的进程,不包含环境信息)

  PID TTY          TIME CMD
 5571 pts/0    00:00:00 ps

-u ##有效使用着(effective user)相关的prcess(显示进程用户信息)

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
kiosk     4896  0.0  0.0 116420  3088 pts/3    Ss+  23:08   0:00 bash
kiosk     5357  0.0  0.0 116420  3092 pts/0    Ss   23:19   0:00 bash
kiosk     5585  0.0  0.0 151056  1836 pts/0    R+   23:27   0:00 ps -u

a ##在当前环境中运行的所有进程

PID TTY      STAT   TIME COMMAND
1459 tty1     Ssl+   6:03 /usr/bin/Xorg :0 -background none -noreset -audit 4 -
4896 pts/3    Ss+    0:00 bash
5357 pts/0    Ss     0:00 bash
5591 pts/0    R+     0:00 ps a

x ##通常与a这个参数一起使用,列出系统中所有运行包含tty输出设备

[[email protected] ~]$ ps x | wc -l
55

I:##较长、较详细的将该PID信息列出
-f: 做一个更完整的信息输出

UID        PID  PPID  C STIME TTY          TIME CMD
kiosk     5357  3661  0 23:19 pts/0    00:00:00 bash
kiosk     5615  5357  0 23:29 pts/0    00:00:00 ps -f

f ##显示进程的父子关系

PID TTY      STAT   TIME COMMAND
5357 pts/0    Ss     0:00 bash
5608 pts/0    R+     0:00  \_ ps f
4896 pts/3    Ss+    0:00 bash

注意:
父级进程关闭子级进程不一定都会关闭,此时的子级进程变成孤儿进程受系统初始化进程管理)
e ##显示进程的详细信息(系统资源的调用)

 PID TTY      STAT   TIME COMMAND
4896 pts/3    Ss+    0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1680,
5357 pts/0    Ss     0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1680,
5748 pts/0    R+     0:00 ps e XDG_VTNR=1 SSH_AGENT_PID=1854 XDG_SESSION_ID=1 H

##ps常用组合##
ps aux ##显示系统中所有进程并显示进程用户

216

ps ef ##显示进程详细信息并显示进程父子关系

 PID TTY      STAT   TIME COMMAND
5357 pts/0    Ss     0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1680,
5765 pts/0    R+     0:00  \_ ps ef XDG_VTNR=1 SSH_AGENT_PID=1854 XDG_SESSION_I
4896 pts/3    Ss+    0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1680,

ps ax ##显示当前系统中的所有进程

217
[[email protected] ~]$ ps  axf  |grep httpd
6017 pts/0    S+     0:00      \_ grep --color=auto httpd

pstress ##显示当前系统的进程树进程管理
##显示进程指定信息##
ps -o xxx ##显示进程指定信息

USER
kiosk
kiosk

comm ##进程名称

USER     COMMAND
kiosk    bash
kiosk    ps

user ##进程所有人
group ##进程所有组

USER     COMMAND           PID GROUP
kiosk    bash             5357 kiosk
kiosk    ps               6137 kiosk

%cpu ##进程cpu的使用率

USER     COMMAND           PID GROUP     NI %CPU
kiosk    bash             5357 kiosk      0  0.0
kiosk    ps               6260 kiosk      0  0.0

%men ##进程内存使用率

USER     COMMAND           PID GROUP     NI %CPU %MEM
kiosk    bash             5357 kiosk      0  0.0  0.0
kiosk    ps               6264 kiosk      0  0.0  0.0

pid ##进程id

USER     COMMAND           PID
kiosk    bash             5357
kiosk    ps               6124

nice ##进程优先级

USER     COMMAND           PID GROUP     NI
kiosk    bash             5357 kiosk      0
kiosk    ps               6141 kiosk      0

##进程排序
ps ax --sort=
+%cpu|-%cpu 进程cpu的使用率
+%mem|-%mem 进程内存使用率
("+"表示正序,“-”表示倒序)

  PID %MEM
 5091 16.7
 4577  4.5
 1940  2.6
 5142  1.8
 4560  0.9

####stat中显示的信息###
S ##进程状态(stat)

USER     COMMAND           PID GROUP     NI %CPU %MEM STAT
kiosk    bash             5357 kiosk      0  0.0  0.0 Ss
kiosk    ps               6269 kiosk      0  0.0  0.0 R+

``
l ##内存中有锁定空间(lock)
N ##优先级低
< ##优先级高
+ ##前台运行
s ##*进程
###进程优先级##
1.进程优先级范围 -20~19 (-20,表示优先度最高,19表示优先度最低,0为默认优先度)
2.优先级查看
ps ax -o a(全程查看) pid ,nice,comm

3.指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n 5 vim& ##开启vim并且指定优先级为5

 PID  NI COMMAND
 1496   0 Xorg
13323   0 bash
13397   0 ps

4.改变进程优先级
renice -n 优先级数字 进程名称
renice -n -5 1806 ##改变1806进程的优先级为-5

 PID  NI COMMAND
 1496   0 Xorg
13323   0 bash
13397   0 ps
1806   -5 vim

###环境中进程的前后台调用###
jobs ##查看被打入环境后台的进程
crtl +z ##把占用终端的进程打入后台
fg jobsnum ##把后台进程调回前台 ("jobsnum"后台进程排列数)
bg jobsnum ##把后台暂停的进程运行
comm & ##让命令直接在后台运行 “&”后台运行符号
(进程名称eg:firefox)
例如:

^Z
[1]+  Stopped                 firefox
[[email protected] ~]$ jobs
[1]+  Stopped                 firefox
[[email protected] ~]$ fg 1
firefox
1553675682056	addons.productaddons	WARN	Failed downloading XML, status: 0, reason: error
^Z
[1]+  Stopped                 firefox
[[email protected] ~]$ bg 1
[1]+ firefox &
[[email protected] ~]$ firefox &
[2] 13822
[[email protected] ~]$ fg 1
firefox
^Z
[1]+  Stopped                 firefox
[2]   Done                    firefox

###5,进程信号###
1,常用信号等级
1 ##进程重新加载配置(在不关闭进程的情况下)
2 ##删除进程在内存中的数据
3 ##删除鼠标在进程中的数据
9 ##强行结束单个进程(不能被阻塞,强制关闭针对僵尸进程)
15 ##正常关闭进程 (可能会被阻塞,出现进程不会被关闭现象)
18 ##运行暂停的进程
19 ##暂停某个进程(不能被阻塞,关闭所有进程)
20 ##把进程打入后台(把进程打入后台,可能会出现阻塞,会有选择性关闭进程)
man 7 signal ##查看信号详细信息

kill - 信号等级 进程pid
killall -信号等级 进程名字(vim)
pkill -u student -信号等级

SIGHUP 1 终止进程 终端线路挂断
SIGINT 2 终止进程 终端进程
SIGQUIT 3 建立CORE文件终止进程,并且生成core文件
SIGILL 4 建立CORE文件 非法指令
SIGFPE 8 建立CORE文件 浮点异常
SIGKILL 9 终止进程 杀死进程
SIGSEGV 11 建立CORE文件 段非法错误
SIGPIPE 13 终止进程 向一个没有读进程的管道写数据
SIGUSR1 30,10,16 终止进程 用户定义信号1
SIGUSR2 31,12,17 终止进程 用户定义信号2
SIGCHLD 20,17,18 忽略信号 当子进程停止或退出时通知父进程
SIGCONT 19,18,25 忽略信号 继续执行一个停止的信号
SIGSTOP 17,19,23 停止进程 非终端来的停止信号
SIGTSTP 18,20,24 停止进程 终端来的停止信号
SIGTTIN 21,21,26 停止进程 后台进程读终端
SIGTTOU 22,22,27 停止进程 后台进程写终端
SIGBUS 10,7,10 建立CORE文件 总线错误
SIGPROF 27,27,29 终止进程 统计分布图用计时器倒时
SIGTRAP 5 建立CORE文件 跟踪自陷
SIGURG 16,23,21 忽略信号 I/O紧急信号
SIGVTALRM 26,26,28 终止进程 虚拟计时器到时
SIGXCPU 24,24,30 终止进程 CPU 时限超时
SIGXFSZ 25,25,31 终止进程 文件长度过长
SIGIOT 6 建立CORE文件 执行I/O自陷
SIGIO 23,29,22 忽略信号 描述附上可以进行I/O
SIGWINCH 28,28,20 忽略信号 窗口大小发生变化
man 7 signal ##查看信号详细信息(自己查阅SIG)

###6进程的动态监控###
1.top
1. ##显示cpu每个核的负载
s. ##调整刷新频率
c ##cpu负载排序
m ##内存使用量排序
h ##查看帮助
u ##查看指定用户进程(u+Enter 退出界面)
k ##对指定进程发起信号(kill,start…)
q ##退出

操作方法:
1.打开shell,输入top命令
[1]   显示cpu每个核的负载
[s]    调整刷新频率Change delay from 3.0 to  1  -->Enter(刷新频率从3变到1秒)
[u]   先切换到student用户,按【u】后出现Which user(blank for all)student -->Enter(进入student top界面,[u]--->Enter 退出student界面)
[k]  出现PID to singnal/kill [default pid=1830] 输入指定进程命令![在这里插入图片描述](https://img-blog.csdnimg.cn/20190330161918274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDgyMTgzOQ==,size_16,color_FFFFFF,t_70)

##7.控制服务###
1.什么是服务(sshd)

2.用什么控制服务
系统初始化进程可以对服务进行相应控制(主机与虚拟机网络连接,对虚拟机远程操控)

 操作方法:
1真机打开shell查询真机ip地址:  ip addr show  br0 
inet 172.25.6.250/24 brd 172.25.6.255 scope global br0
(172.25.6.250/24)当前真机ip
2.虚拟机打开shell设ip地址
输入命令:nm-connection-editor
delete(Ethernet connection 1)--->Add(Ethernet Create)--->Device MAC address(选中唯一项etno)--->IPv4 Settings  Method(Manual)--->add(Address [172.25.6.111(1-254之间任意数),Netmask(24),Gateway(只点击一下))--->save--->Close
3.打开虚拟机shell输入ip addr show eth0 会出现虚拟机ip地址
真机shell上ping 172.25.6.111(PING 172.25.6.111 (172.25.6.111) 56(84) bytes of data.
64 bytes from 172.25.6.111: icmp_seq=1 ttl=64 time=0.223 ms
)连接成功
4.通过真机此时可以控制虚拟机(在真机上创建文件,虚拟机上会出现该文件)

3.当前系统初始化进程时什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树

4.进程控制命令
ssh(客户端) ----->sshd(服务端)
client server
【sshd打开对本身没有意义,但方便客户端连接,sshd关闭后客户端无法连接服务端 】
systemctl ##服务控制命令
systemctl status sshd ##查看服务状态,inactive(不可用), active(可用)
systemctl start sshd ##开启服务
systemctl stop sshd ##关闭服务
systemctl restart sshd ##重启服务
systemctl reload sshd ##重新加载服务设备
systemctl enable sshd ##设定服务开机启动(开启sshd)
systemctl disable sshd ##设定服务开机不启动(不开启sshd)
systemctl list-units ##列出已经开启服务当前状态
systemctl list-unit-files ##列出所有服务开机启动状态,disable, enable,static(固定的不可控制的)
systemctl list-dependencies ##列出服务的依赖
systemctl set-default multi-user.target ##设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target ##设定系统启动级别为图形模式 (设定系统启动时不会影响当前图形的状态)