linux下系统的进程及服务的控制

1.进程的定义

程序(program)放置在储存媒体中(如键盘,光盘,软盘,磁带等),为实体文件的形态存在。
进程:程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存的单元一个识别码(PID),可以说,进程就是一个正在运行中的程序,即是系统未完成并且正在进行的工作。进程主要分为两种,一种是和当前环境有关,一种和当前环境无关。

2.查看进程

(1)利用图形方式查看
命令:gnome-system-monitor
输入命令会则会出现进程的图形界面,结果如下:
在这里插入图片描述
(2)进程查看命令

命令含义
ps -A所有进程
ps -a在当前环境中运行的进程,不包含环境信息(会把环境本身过滤掉)
ps -u显示进程用户信息
ps a在当前环境中运行的进程
ps x列出系统中所有运行包含tty输出设备(tty是能显示出字符设备的)
ps f显示进程的父子关系
ps e显示进程的详细信息(系统资源的调用)

<1>查看所有进程,输入的命令(ps -A)及结果如下:
在这里插入图片描述
<2>查看在当前环境中运行的进程,不包含环境信息。输入的命令(ps -a)及结果如下:
在这里插入图片描述
<3>查看进程用户信息,输入的命令(ps -u)及结果如下:
在这里插入图片描述
<4>查看在当前环境中运行的进程,输入的命令(ps a)及结果如下:
在这里插入图片描述
<5>列出系统中所有运行包含tty输出设备,输入的命令(ps x)及结果如下:
在这里插入图片描述
<6>显示进程的父子关系,输入的命令(ps f)及结果如下:
在这里插入图片描述
<7>显示进程的详细信息,输入的命令(ps e)及结果如下:
在这里插入图片描述
(3)ps常用组合

命令含义
ps aux显示系统中所有进程并显示进程用户
ps ef显示进程详细信息并显示进程父子关系
ps ax显示当前系统中的所有进程
pstree显示当前系统的进程树

<1>显示系统中所有进程并显示进程用户,输入的命令(ps aux)及结果如下:
在这里插入图片描述
<2>显示进程详细信息并显示进程父子关系,输入的命令(ps ef)及结果如下:
在这里插入图片描述
<3>显示当前系统中的所有进程,输入的命令(ps ax)及结果如下:
在这里插入图片描述
<4>显示当前系统的进程树,输入的命令(pstree)及结果如下:
在这里插入图片描述
(4)显示进程指定信息

命令显示进程的指定信息
ps -o comm显示进程名称
ps -o user显示进程所有人
ps -o group显示进程所有组
ps -o %cpu显示进程cou使用率
ps -o %mem显示进程内存使用率
ps -o pid显示进程id
ps -o nice显示进程优先级(优先级顺序为由负到正)

<1>显示进程名称,输入的命令(ps -o comm)及结果如下:
在这里插入图片描述
<2>显示进程所有人,输入的命令(ps -o user)及结果如下:
在这里插入图片描述
<3>显示进程所有组,输入的命令(ps -o group)及结果如下:
在这里插入图片描述
<4>显示进程cpu使用率,输入的命令(ps -o %cpu)及结果如下:
在这里插入图片描述
<5>显示进程内存使用率,输入的命令(ps -o %mem)及结果如下:
在这里插入图片描述
<6>显示进程id,输入的命令(ps -o pid)及结果如下:
在这里插入图片描述
<7>显示进程优先级,输入的命令(ps -o nice)及结果如下:
在这里插入图片描述
<8>一次性显示所有想显示的信息,输入的命令(ps ax -o comm,pid,user,group,%cpu,%mem)及结果如下:
在这里插入图片描述
(5)进程排序
为什么要对进程排序?原因是进程需要的资源越多,影响就越大,所以要通过排序可以对进程进行进一步了解。
ps ax --sort=+%cpu/-%cpu
ps ax --sort=+%mem/-%mem
<1>对进程中的cpu进行从小到大排序
在这里插入图片描述
在这里插入图片描述
<2>对进程中的cpu进行从大到小排序
在这里插入图片描述
<3>对进程中的mem(内存)进行从小到大排序
在这里插入图片描述
在这里插入图片描述
<4>对进程中的mem(内存)进行从大到小排序
在这里插入图片描述
总结:排序时进行减序时要加负号,默认是正序(可以加“+”,也可以不加)

练习:
抓取系统中内存使用量排在前5的pid,命令及结果如下:
在这里插入图片描述
分析:
因为第一行被名称占用了,所以内存使用量排在前5的是2到6行的。
在这里插入图片描述
补充:
也可以用以下方式解决此问题
在这里插入图片描述
(6)stat中显示的信息

符号显示的信息
S进程状态
l内存中有锁定空间
N优先级低
<优先级高
+前台运行
S顶级过程

分析:
<表示进程的优先级要小于默认,l表示有一片锁定的空间,不能被回收,S表示进程状态,Ss进程状态是顶级进程,S<l表示高优先级内存有锁定空间,R+表示正在运行

3.进程优先级

(1)进程的优先级范围
-20~19
<1>可以看到图中的Nice就是优先级,可以选择它并查看每一个进程的优先级,如下图所示:
在这里插入图片描述
<2>改变优先级有5个标准级别,如下图所示:
在这里插入图片描述
<3>选择Change Priority中的Custom便可以任意调节优先级
在这里插入图片描述

(2)优先级查看
ps ax -o pid,nice,comm
在这里插入图片描述

(3)指定某个优先级开启进程
nice -n 优先级数字 进程名称

nice -n -5 vim&    ##开启vim并且指定程序优先级为-5

注意:加&表示,命令行就不会被占用(即使用命令又不占用终端,相当于即可以打开窗口又可以在命令行中输入别的)
举例:开启vim并且指定程序优先级为-5,然后查看进程的名称,PID和优先级,可以发现vim的优先级为之前设置的-5,输入的命令及结果如下:
在这里插入图片描述
(4)改变进程优先级
renice -n 优先级数字 进程pid

renice -n -5 1806   ##改变1806进程的优先级为-5

举例:首先查看进程的优先级等信息,然后改变进程vim的优先级为5,输入的命令及结果如下:
在这里插入图片描述

4.环境中进程的前后台调用

命令含义
jobs查看被打入环境后台的进程
ctrl+z把占用终端的进程打入后台
fg jobsnum把后台进程调回前台
bg jobsnum把后台暂停的进程运行
comm &让命令直接在后台运行

<1>首先查看被打入环境后台的进程
在这里插入图片描述
<2>开启第三方软件firefox
在这里插入图片描述
<3>再次查看firefox进程并把后台进程调回前台
在这里插入图片描述
<4>让后台暂停的进程运行并查看被打入后台的进程的相关信息
在这里插入图片描述

5.进程信号

信号是一个动作的标识
(1)常用信号等级

等级含义
1进程重新加载配置
2删除进程在内存中的数据
3删除鼠标在内存中的数据
9强行结束单个进程(不能被阻塞)
15正常关闭进程(可能会被阻塞)
18运行暂停的进程
19暂停某个进程(不能被阻塞)
20把进程打入后台(可以被阻塞)

kill的用法:
kill -信号 进程pid
killall -信号 进程名字
pkill -u student -信号
举例:
(1)删除进程在内存中的数据
<1>首先在后台运行gedit命令并查看进程中和gedit有关的信息
在这里插入图片描述
<2>打开另外一个shell脚本,输入kill -2 进程pid删除进程在内存中的数据
在这里插入图片描述
<3>再次查看进程中和gedit有关的信息,会发现进程在内存中的数据已经不再存在
在这里插入图片描述
(2)删除鼠标在内存中的数据,如果删除了,在shell中鼠标将会消失,相当于看电视时全屏的样子,可以用“ctrl+\”进行模拟,会发现按键后,鼠标将不再出现,直至滑动鼠标。

(3)强行结束单个进程(不能被阻塞)
<1>关闭第三方软件时

[root@client_sshd ~]# ps ax |grep firefox        ##再次查看与firefox有关的进程
 2635 pts/0    Sl     0:00 /usr/lib64/firefox/firefox
 2678 pts/1    R+     0:00 grep --color=auto firefox
[root@client_sshd ~]# kill -9 2635           ##强行结束单个进程
[root@client_sshd ~]# ps ax |grep firefox   ##再次查看与firefox有关的进程
 2683 pts/1    R+     0:00 grep --color=auto firefox

如图所示:
在这里插入图片描述
<2>关闭shell脚本时

[root@client_sshd Desktop]# ps     ##查看进程
  PID TTY          TIME CMD
 3239 pts/1    00:00:00 bash
 3270 pts/1    00:00:00 ps
[root@client_sshd Desktop]# kill -9 3239     ##关闭shell脚本

在这里插入图片描述
总结:kill -9命令可以强烈结束每个想结束的进程

(4)正常关闭进程(可能会被阻塞)
<1>开启第三方软件后可以利用kill -15命令关闭进程

[root@client_sshd Desktop]# firefox&
[root@client_sshd ~]# ps ax |grep firefox     ##查看与firefox有关的进程
 2462 pts/0    Sl     0:00 /usr/lib64/firefox/firefox
 2339 pts/1    R+     0:00 grep --color=auto firefox
[root@client_sshd ~]# kill -15 2462       ##关闭firefox进程
[root@client_sshd ~]# ps ax |grep firefox
 2549 pts/1    R+     0:00 grep --color=auto firefox

命令及结果如下图所示:
在这里插入图片描述
在这里插入图片描述
<2>试图删除shell脚本,发现不可以利用kill -15命令关闭进程

[root@client_sshd ~]# ps     ##查看进程的相关信息
  PID TTY          TIME CMD
 2139 pts/1    00:00:00 bash
 2386 pts/1    00:00:00 ps
[root@client_sshd ~]# kill -15 2139      ##试图关闭shell脚本的进程
[root@client_sshd ~]# ps           ##再次查看进程的相关信息
  PID TTY          TIME CMD
 2139 pts/1    00:00:00 bash
 2387 pts/1    00:00:00 ps

命令及结果如下图所示:
在这里插入图片描述
(5)暂停某个进程(不能被阻塞)
<1>让进程gedit直接在后台运行,并在文件里面写入一些内容,使用kill-19命令暂停gedit进程后,会发现无法在文件内写入内容
在这里插入图片描述
<2>试图暂停shell脚本,查看bash的pid后,利用kill -19命令将其暂停,由结果可知可以被暂停:
在这里插入图片描述
(6)运行暂停的进程
将进程gedit暂停后,使用kill -18命令运行进程,发现运行后便可以在文件内继续写入内容
在这里插入图片描述
(7)把进程打入后台(可以被阻塞)
<1>让进程gedit直接在后台运行,并在文件里面写入一些内容,使用kill-20命令暂停gedit进程后,会发现无法在文件内写入内容:
在这里插入图片描述
将进程gedit暂停后,使用kill -18命令运行进程,发现运行后便出现了之前在文件内写入的内容
在这里插入图片描述
<2>试图暂停shell脚本,查看bash的pid后,利用kill -20命令将其暂停,由结果可知不可以被暂停:
在这里插入图片描述
(8)试图删除student用户下的所有进程,使用的命令是pkill -u student -信号
在这里插入图片描述

6.进程的动态监控

top

按键含义
1显示cpu
s调整刷新
cCPU负载排序
m内存使用量排序
h查看帮助
u查看指定用户进程
k对指定进程发起信号
q退出

<1>输入top命令,显示的结果如下:
在这里插入图片描述
<2>输入top命令后按1,显示的结果如下:
在这里插入图片描述
<3>输入top命令后按s,2,显示的结果如下:
在这里插入图片描述
总结:进程会2s刷新一次
<4>输入top命令后按c,显示的结果如下:
在这里插入图片描述
<5>输入top命令后按m,显示的结果如下:
在这里插入图片描述
<6>输入top命令后按h,显示的结果如下:
在这里插入图片描述
<7>输入top命令后按u,显示的结果如下:
在这里插入图片描述
分析:默认是超级用户,若想要查询别的用户的,在Which user后写入想要查询的用户名称
<8>输入top命令后按k,显示的结果如下:
在这里插入图片描述
在这里插入图片描述
分析:
PID to signal/kill [default pid = 25] ##输入进程号
Send pid 4200 signal [15/sigterm] ##输入信号
<9>输入top命令后按q,显示的结果如下:
在这里插入图片描述

7.控制服务

1.什么是服务
cs模型,c表示client,s表示server
定义:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件,简称服务
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
4.进程控制命令
ssh(client) ----->sshd(server)

命令含义
systemctl服务控制命令
systemctl status sshd查看服务状态,inactive(不可用),active(可用)
systemctl start sshd开启服务
systemctl stop sshd关闭服务
systemctl restart sshd重启服务
systemctl reload sshd重新加载服务配置
systemctl enable sshd设定服务开机启动
systemctl disable sshd设定服务开机不启动
systemctl mask sshd对服务进行解锁
systemctl unmask sshd对服务进行锁定
systemctl list-units列出已经开启服务当前状态
systemctl list-unit-files列出所有服务开机启动的状态,disable,enable
systemctl list-dependencies列出服务的依赖
systemctl set-default multi-user.target设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target设定系统启动级别为图形模式

<1>关闭服务并查看服务状态
在这里插入图片描述
<2>开启服务并查看服务状态
在这里插入图片描述
<3>先查看服务状态,再重启服务后对服务状态进行查看
在这里插入图片描述
总结:会发亮两次的服务进程发生了改变
<4>当服务开启时,设定服务开机启动并查看服务状态
在这里插入图片描述
<5>当服务开启时,设定服务开机不启动并查看服务状态
在这里插入图片描述
<6>当关闭服务时,真实主机将无法与客户端(172.25.254.128)进行网络连接
在这里插入图片描述
<7>当再次开启服务时,真实主机可以与客户端(172.25.254.128)进行网络连接
在这里插入图片描述
<8>当服务关闭时,设定服务开机不启动并查看服务状态
在这里插入图片描述
<9>当服务关闭时,设定服务开机启动并查看服务状态
在这里插入图片描述
<10>列出已经开启服务当前状态
在这里插入图片描述
<11>列出所有服务开机启动的状态,disable,enable
在这里插入图片描述
<12>对服务进行锁定
在这里插入图片描述
注意:当服务关闭时才需要进行锁定
<13>对服务进行解锁,只有解锁后才可以正常开启服务
在这里插入图片描述
<14>设定系统启动级别为多用户模式(无图形)
在这里插入图片描述
<15>设定系统启动级别为图形模式,需在无图形中输入命令
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值