linux中的系统进程管理

linux中系统进程的管理


我们所使用的命令在linux系统中的具体存在形式就是配置文件的形式(程序),但是当我们执行一条命令时,系统就会为我们创建一个该程序的进程。

什么是Linux系统进程?
Linux系统未完成并且正在进行的工作,进程运行有三种状态:
1、前台运行—占CPU、内存资源,运行可见
2、后台运行—不争抢CPU、内存资源,系统资源闲置时运行,运行不可见,只显示运行结果
3、后台暂停—运行无条件,暂时停止后台进程

系统进程的查看:
我们可以通过系统工具来简单直接地查看系统进程“左上角Applications—>System Tools—>System Monitor”(或输入命令gnome-system-monitor)
下图为例:
在这里插入图片描述

而使用命令行窗口查看方式如下
ps 不加参数,默认显示PID—进程ID、TTY—输出设备、TIME—运行时间、CMD—执行命令
参数:
-A 显示系统中所有进程
-a 在环境中的所有进程,不包括环境信息
(环境信息就是命令所运行的shell顶级进程的环境)
-u显示当前用户全部进程信息
a 显示当前环境中运行的进程,包含环境信息
x 列出系统中所有运行包含输出设备tty的进程
f 显示进程及其父子关系
e 显示进程的详细信息(系统资源的调用)
下图为例:
图一中,ps -A命令显示系统中全部进程
图二中,ps -a命令显示命令运行的全部进程(包含不同的shell窗口,不包含其环境shell本身的信息)
图三中,ps -u命令显示命令运行的当前环境中的用户的全部进程(包含不同的shell窗口,包含环境shell本身的进程信息)
图四中,ps a命令显示当前环境中的进程(包含环境shell本身的进程信息)
图五中,ps x命令显示系统中所有包含输出设备tty的进程
图六中,ps f命令显示当前用户的全部进程及其父子关系(包含不同的shell窗口,包含环境shell的进程信息)
图一中,ps -e命令显示当前用户进程的详细信息(每一行的最后显示命令对于系统资源的调用)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用参数组合示例:
ps aux 显示系统中所有进程并显示进程用户
ps ef 显示进程详细信息并显示进程父子关系
ps ax 显示当前系统中的所有进程
pstree 显示系统当前的进程树
下图为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

显示进程的指定信息:
ps -o comm 显示进程名称(执行的命令)
ps -o user 进程所有人
ps -o group 进程所有组
ps -o %cpu 进程CPU使用率
ps -o %mem 进程内存使用率
ps -o pid 进程id
ps -o nice 进程优先级
下图为例:
在这里插入图片描述
在这里插入图片描述

进程排序:
ps ax --sort = +%cpu(-%cpu)
+%mem(-%mem)
下图为例:
将系统中全部进程按照cpu的使用率(占用率)从小到大排序,并将最大的5个进程的指定信息列出
在这里插入图片描述
系统进程状态stat中显示的信息:
+正在前台运行
< 优先级高
N 优先级低
R(running)运行的
T 暂停的进程(不是关闭的)
l 内存中有锁定空间
(即便在后台运行其空间也是固定的,如:浏览器,因此从后台—>前台,页面不至于需要重新加载)
S 进程状态
s 顶级进程(没有更上一级的进程了,是其他进程的祖宗)
下图为例:
在这里插入图片描述

进程优先级:
nice优先级
优先级范围:-20~19,越负,优先级别越高,正常进程优先级为0
优先级查看: ps ax -o pid,nice,comm
优先级的指定:nice -n -5(num) vim & 后台开启vim指定优先级-5
更改已有进程的优先级:renice 重置已有的进程的优先级别
renice -n -5 1806(pid) 改变1806进程的优先级为-5
下图为例:
在这里插入图片描述
环境中进程的前后台调用:
ztrl+z将当前占用终端的进程打入后台
(默认是在后台暂停运行的)
jobs 查看并显示被打入后台的进程的序号(job号)
fg 序号 将后台进程调回前台
bg 序号 将后台进程由暂停状态变为在后台运行
(其序号后面有+号的是fg命令默认从后台调回前台的)
vim(命令)& 将该命令在后台启动并运行
下图为例:
在这里插入图片描述
进程信号:
kill:发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。
常用进程信号:1,2,3,9,15,18,19,20(共有30个进程信号)
kill -n pid(进程编号)

1:重新加载进程系统配置,而不重新启动进程服务
(有的进程支持,有的进程不支持,如:网络进程就不支持)
2:删除进程在内存中的数据
3:删除鼠标在内存中的数据
9:强行结束单个进程(不能被阻塞)
15:正常关闭进程(可能被阻塞)
18:运行暂停的进程(在后台)
19:暂停某个进程(不能被阻塞)
20:把进程打入后台(可以被阻塞)
(9,15都是结束某个进程;19,20都是暂停某个进程;其差别都在于是否可能被阻塞)
man 7 signal 查看信号详细使用说明
下图为例:
图一中,在第一个shell窗口中,我输入一串字符,占用着命令提示符以及相应的内存空间,在第二个shell窗口中,我先使用ps a 命令查看了第一个窗口中所占用的bash进程的pid编号,随后使用kill -2命令,释放了其命令行提示符以及相应的占用空间
图二中,在第二个窗口中查看进程pid并使用kill -9强制结束第一个窗口中的cat进程
图三中,在第二个窗口中查看进程pid并使用kill -15正常结束第一个窗口中的cat进程;而且从中可以看出,不加参数-n的时候,默认使用-15参数的功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
vim & 像这样的命令可以重复执行
killall -信号 命令名 将全部该命令的进程发送信号

pkill -u student(username) -信号 该用户的多个进程发送信号(示例中用于删除多次su-student产生的shell进程)
(pkill命令针对于用户)
下图为例:
图一中,多次使用vim &命令,在后台运行了多个vim进程,然后使用killall -9 vim,将所有的vim进程都强制结束
图二三中,在第一个窗口中开启多个属于student用户的su进程和bash进程(每次su都会开启一个新的bash进程),在第二个窗口中,将全部属于student的命令结束
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程的动态监控:
top:
1显示cpu每个核的负载
s调整频率,从原频率到更改频率(默认原频率3.0s)
c按照cpu负载排序并显示
m按照内存占用排序并显示
h查看帮助 esc退出帮助
u查看指定的用户进程(不输入用户名,直接u,则查看所有进程)
k对指定进程发起指定信号
q退出
下图为例:
下图一是在虚拟机中直接执行top命令后得到的,虚拟机只用一个内核,因此执行1之后只会有一个cpu0。
而在图二中,真机的界面内可以看到,执行1之后显示了cpu0-cpu3一共4个系统内核,说明本机器是4核的。
在这里插入图片描述
在这里插入图片描述

控制服务:
**服务型软件:**我们自己不使用,给别人使用的,为别人提供服务的(如:sshd)
ssh root@172.254.25.100 ssh命令,远程链接主机,root为要在连接主机上登陆的用户,@后为待连接主机的ip地址

用什么控制服务:
系统初始化进程可以对服务进行相应的控制
显示系统的进程树:pstree
系统初始化进程:systemd

安装了服务型软件的主机就是服务器
ssh(客户端client的应用程序) —> sshd(服务器端server的服务)
c-s模式(客户端-服务器端模式)

服务控制命令systemctl: 可用于检查和控制系统与服务管理器的状态。
systemctl status sshd 查看sshd服务的状态
systemctl start sshd 开启sshd服务
systemctl stop sshd 关闭sshd服务
systemctl restart sshd 重启sshd服务
systemctl reload sshd 重新加载sshd服务配置(是同一个进程)
systemctl enable sshd 设定sshd服务开机自启动
systemctl disable sshd 设定sshd服务开机不启动
systemctl list-units 列出所有已经开启的服务的状态
systemctl list-unit-files 列出所有服务开机启动选项的状态(enable disable static)
systemctl list-dependencies 列出服务的依赖(其底层基础服务)
systemctl set-default multi-user.target 设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target设定系统启动级别为图形模式
下图为例:
图一中,可以见到sshd服务在机器上的状态是已经开启了的
图二三中,我将这个已经开启了的服务关闭,查看状态,操作成功,然后再开启,查看状态,可以发现,前后的进程pid改变了。
图四中,我将已经开启的sshd服务重启,查看重启前后状态,进称pid改变了,与上面暂停再开启后的效果一致。
图五中,我同样在reload前后查看了sshd服务的状态,而前后pid不变。
图六七中,我在图六中查看了sshd服务的初始状态为enable(在右上角),并使用disable命令更改为disable;在图七中可以看到,更改成功。
图八九十为systemctl list-units和systemctl list-unit-files和systemctl list-dependencies的执行效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值