七、Linux中的进程管理

七、Linux中的进程管理

1.进程定义
1)进程的定义
  • 进程是静态的代码文件;
  • 进程是指程序运行时的形态;
  • 进程是程序的一个副本;
  • 进程是有生命周期的(准备期,运行期,终止期)
2)进程和线程
  • 进程是资源调用的最小单位;
  • 线程是进程的最小单位

程序执行流是从上到下贯穿执行的;
当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的。

#进程状态

状态含义
#R(TAKS_RUNNING)可执行态(running,ready)
#S(TAKS_INTRRUPTABLE)可唤醒休眠
#D(TAKS_UNINTRRUPTABLE)不可唤醒休眠
#T(TASK_STOP)暂停状态
#Z(EXIT_ZOMBIE)僵死态
2.进程查看命令

gnome-system-monitor # 图形进程查看工具
ps # 进程查看,ps命令的三种执行风格(UNIX BSD GNU)

命令功能
###以下为BSD风格###
a与终端相关的进程
x与终端无关的进程
u用户信息归类的查看方式
f进程层级关系
o显示指定参数(pid,comm,nice,pri(优先级),pcpu(父级cpu),ppid,stat(状态),user,group)
###以下为UNIX风格###
-e显示所有进程
-f显示信息的完整格式
-H显示进程的层级结构
-o显示指定参数
--sort=整理

[root@localhost ~]# ps ax -o %cpu,user --sort=-%cpu #以cpu顺序倒序查看用户使用cpu情况
ps ax显示信息:

#PID  进程id
#TTY  进程用到的终端
#STAT  进程状态
#TIME  进程占用CPU时间
#COMMAN 

ps aux显示信息如下:

#USER  进程所有人
#PID   进程id
#%CPU  进程使用CPU的用量
#%MEM  进程所用到的内存用量
#VSZ   进程使用的虚拟内存大小
#RSS   进程常驻内存中的数据大小
#TTY   进程用到的终端
#STAT  进程状态
#START 进程运行时长
#TIME  进程占用CPU时长
#COMMAND  进程名称

pgrep #进程过滤

命令功能
-uuid显示指定用户进程
-Uuser显示指定用户进程
-ttty显示指定终端进程
-l显示进程名称
-a显示进程的完整名称
-P显示进程的子进程

pidof vim #查看vim的pid

top #动态进程查看
动态进程

top命令参数:

命令功能
top -d指定刷新频率
top -b以批次方式显示
top -n指定显示的批次数量

top内部命令:

命令功能
PCPU排序
M内存排序
T累计cpu时间排序
l关闭/开启 uptime信息
t关闭/开启cpu&task
s指定刷新频率
k操作进程
u查看指定用户进程
#PID 进程id
#USER 进程所有者的用户名
#PR 优先级
#NI nice值,负值表示高优先级,正值表示低优先级
#VIRT  进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
#RES 进程使用的、未被患处的物理内存大小,单位kb。RES=CODE+DATA
#SHR 共享内存大小,单位kb
#S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#%CPU 上次更新到现在的CPU时间占用百分比
#%MEM 进程使用的物理内存百分比
#TIME+ 进程使用的CPU时间总计,单位1/100s
#COMMAND  命令名/命令行
3.进程优先级

系统是多任务多用户的操作模式,任务的重要性是有区分的。用优先级确定任务的重要性
“优先级”范围:0–139;内核自控(实时)优先级范围:0-99;用户可控优先级范围:100-139

renice -n -5 pid   #更改优先级,-5可为-20-19中任意,约负优先级越高
nice -n -5 cat  #指定优先级打开进程
#实验
[root@localhost ~]# renice -n -5 3129
3129 (process ID) old priority 0, new priority -5
[root@localhost ~]# ps ax -o pid,nice,command | grep cat
  2321   0 /usr/libexec/gsd-print-notifications
  3017   0 /usr/libexec/gsd-print-notifications
  3129  -5 /usr/bin/gnome-software --gapplication-service
 70936   0 grep --color=auto cat

注:
ps ------> pri -----> 0-39
nice ---------------> -20-19
priority -----------> 0-139(100-139),0-99系统分配

STAT标识功能:

命令功能
SSleeping
<优先级高
s顶级进程
TStop
N优先级低
Rrunning
l在系统中有存储空间
+运行在前台
#练习
[root@localhost /]# ps -o comm,pid,stat,nice
COMMAND            PID STAT  NI
su               68674 S      0
bash             68680 S      0
top              69230 T      0
ps               70991 R+     0
[root@localhost /]# renice -n -5 68680 #修改优先级
68680 (process ID) old priority 0, new priority -5
[root@localhost /]# ps -o comm,pid,stat,nice
COMMAND            PID STAT  NI
su               68674 S      0
bash             68680 S<    -5 #对应的NI值改变,STAT标识改变
top              69230 T      0
ps               71026 R<+   -5

4.进程前后台调用

Ctrl+z 把占用shell的进程打入后台挂起

命令功能
bg把后台挂起的进程运行起来
fg把后台进程调回前台
&运行进程在后台
jobs查看当前shell中在后台的所有工作
#实验
[root@localhost /]# jobs
[root@localhost /]# gedit
^Z
[1]+  Stopped                 gedit
[root@localhost /]# jobs
[1]+  Stopped                 gedit
[root@localhost /]# bg
[1]+ gedit &
[root@localhost /]# jobs
[1]+  Running                 gedit &
[root@localhost /]# cat
^Z #后台挂起
[2]+  Stopped                 cat
[root@localhost /]# jobs
[1]-  Running                 gedit &
[2]+  Stopped                 cat
[root@localhost /]# bg 2
[2]+ cat &
[root@localhost /]# jobs
[1]-  Running                 gedit &
[2]+  Stopped                 cat
[root@localhost /]# bg 2
[2]+ cat &
[root@localhost /]# jobs
[1]-  Running                 gedit &
[2]+  Stopped                 cat
[root@localhost /]# cat &
[3] 78296
[root@localhost /]# jobs
[1]   Running                 gedit &
[2]-  Stopped                 cat
[3]+  Stopped                 cat
[root@localhost /]# fg 1
gedit
^C
[root@localhost /]# fg
cat
^C  #结束进程
[root@localhost /]# 
5.进程信号

进程信息

信号含义
1重新加载系统配置文件(source)—> 软件热处理
2清空内存中的进程数据 —>Ctrl+c
3清空内存中的鼠标Ctrl+/
9强制关闭进程(不能被阻塞)
15正常关闭进程(会被阻塞)
18运行被暂停的进程
19暂停进程(不会被阻塞)
20暂停进程(会被阻塞)

进程信号控制工具

kill		进程信号		pid
killall		进程信号		进程名字
pkill		进程信号		进程条件
#实验
[root@localhost /]# ps
   PID TTY          TIME CMD
 68674 pts/0    00:00:00 su
 68680 pts/0    00:00:00 bash
 78083 pts/0    00:00:00 dbus-launch
 78286 pts/0    00:00:00 cat
 78708 pts/0    00:00:00 vim
 78709 pts/0    00:00:00 vim
 78710 pts/0    00:00:00 vim
 78719 pts/0    00:00:00 gedit
 78734 pts/0    00:00:00 ps
[root@localhost /]# kill -9 78708
[root@localhost /]# ps
   PID TTY          TIME CMD
 68674 pts/0    00:00:00 su
 68680 pts/0    00:00:00 bash
 78083 pts/0    00:00:00 dbus-launch
 78286 pts/0    00:00:00 cat
 78709 pts/0    00:00:00 vim
 78710 pts/0    00:00:00 vim
 78719 pts/0    00:00:00 gedit
 78744 pts/0    00:00:00 ps
[3]   Killed                  vim
[root@localhost /]# killall -9 vim
[4]   Killed                  vim
[5]-  Killed                  vim
[root@localhost /]# ps
   PID TTY          TIME CMD
 68674 pts/0    00:00:00 su
 68680 pts/0    00:00:00 bash
 78083 pts/0    00:00:00 dbus-launch
 78286 pts/0    00:00:00 cat
 78719 pts/0    00:00:00 gedit
 78746 pts/0    00:00:00 ps
[root@localhost ~]#  pkill -9 -u lee #结束进程中用户名为lee的进程
#结果如下:

pkill

6.system守护进程

远程操作主机:
ssh 远程主机ip -l 远程主机用户

守护进程:替内核分担程序控管的程序,通常pid为1。

systemctl的用法:

命令功能
start开启
stop关闭
status查看状态
reload重新加载
restart重新启动服务
enable设定服务开机启动
enable --now设定服务开机启动 并当前开启
disable设定服务开机不启动
list-units查看系统所有服务当前状态
list-units-files查看服务开机状态
list-dependencies列出服务依赖性
mask冻结服务
unmask解锁
set-default设定服务运行模式
multi-user.target 无图形的网络模式
graphical.target 有图形的网络模式
get -default查看系统运行模式

status

系统运行模式(0-6):

命令功能
0Poweroff
1Single
2noG+Network
3
4
5G+Network
6REBOOT
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值