2.10:进程管理
-
基本介绍
-
在
Liunx
中,每个执行的程序都称为一个进程。每一个进程都分配一个ID
号(pid
,进程号)。 -
每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
-
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
-
示意图
-
-
显示系统执行的进程
-
基本介绍
ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。
-
ps
详解-
指令:ps –aux|grep xxx
-
指令说明
System V 展示风格 USER:用户名称 PID:进程号 %CPU:进程占用 CPU 的百分比 %MEM:进程占用物理内存的百分比 VSZ:进程占用的虚拟内存大小(单位:KB) RSS:进程占用的物理内存大小(单位:KB) TT:终端名称,缩写 //进程状态:其中 S-睡眠 s-表示该进程是会话的先导进程 N-表示进程拥有比普通优先级更低的优先级 // R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等 STAT STARTED:进程的启动时间 TIME:CPU 时间,即进程使用 CPU 的总时间 COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
-
-
应用实例
-
要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息
ps -ef 是以全格式显示当前所有的进程 -e 显示所有进程。-f 全格式 ps -ef|grep sshd
-
BSD
风格
UID: 用 户 ID PID: 进 程 ID PPID:父进程 ID //CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低; // 数值越小,表明进程是 I/O 密集型运算,执行优先级会提高 C STIME:进程启动的时间 TTY:完整的终端名称 TIME:CPU时 间 CMD:启动进程所用的命令和参数
-
-
-
终止进程
kill
和killall
-
介绍
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
-
基本语法:
kill [选项] 进程号
(功能描述:通过进程号杀死/终止进程)功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大变得很慢时很有用
killall 进程名称
-
常用选项:
-9
。表示强迫进程立即停止 -
最佳实战
-
踢掉某个非法登录用户。
kill 进程号
-
终止远程登录服务
sshd
,在适当时候再次重启sshd
服务。kill sshd 对应的进程号、/bin/systemctl start、sshd.service
-
终止多个
gedit
。killall gedit
-
强制杀掉一个终端。
kill -9 hash 对应的进程号
-
-
-
查看进程树
-
基本语法:
pstree [选项]
,可以更加直观的来看进程信息 -
常用选项
-p 显示进程的PID -u 显示进程的所属用户
-
应用实例
-
请你树状的形式显示进程的
pid
。pstree -p
-
请你树状的形式进程的用户。
pstree -u
-
-
-
服务(service)管理
-
介绍:
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等),因为我们又称为守护进程,是
Liunx
中非常重要的知识点。 -
service
管理指令-
service
。服务名[start | stop | restart | reload | status]
-
在
CentOS7.0
后很多服务不在使用service
,而是systenctl
(后面专门讲) -
service
指令管理的服务在/etc/init.d
查看
-
-
service
管理指令案例请使用
service
指令,查看,关闭,启动network
。【注意:在虚拟系统演示,因为网络连接会关闭】指令:
service network status; service network stop; service network start;
-
查看服务名
-
方式1:
setup
系统服务就可以看到全部
-
方式2:
/etc/init.d
看到service
指令管理的服务ls -l /etc/init.d
-
-
服务的运行级别(runlevel)
-
Liunx
系统有7种运行级别(runlevel):常用的级别是3和5运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
-
开机的流程说明:
-
-
CentOS7
后运行级别说明在
/etc/initab
进行了简化,如下:multi-user.target: analogous to runlevel 3 graphical.target: analogous to runlevel 5 init 0 # To view current default target, run: systemctl get-default # To set a default target, run: systemctl set-default TARGET.target
-
chkconfig
指令-
介绍:通过
chkonfig
命令可以给服务的各个运行级别设置自启动/关闭chkconfig
指令管理的服务在/etc/init.d
查看注意:
CentOS7.0
后,很多服务使用systemctl
管理
-
chkconfig
基本语法查看服务
chkconfig
。--list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
-
案例演示:对
netwoerk
服务进行各种操作,把network
在3运行级别,关闭自启动chkconfig --level 3 network off chkconfig --level 3 network on
-
使用细节:
chkconfig
重新设置服务后自动或关闭,需要重启机器reboot
生效
-
-
systemctl
管理指令基本语法:
systemctl [start | stop | restart | status ] 服务名
systemctl
指令管理的服务在/usr/lib/system
查看 -
systemctl
设置服务的自启动状态// 查看服务开机启动状态,grep可以进行过滤 systemctl list-unit-files [| grep 服务名] // 设置服务开机启动 systemctl enable 服务名 // 关闭服务开机启动 systemctl disable 服务名 // 查询某个服务是否自启动的 systemctl is-enabled 服务名
-
应用案例
查看当前防火墙的状况,关闭防火墙和重启防火墙。
firewalld.service; systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld;
-
细节讨论
关闭或者启用防火墙后,立即生效。【telent 测试某个端口即可】
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用
systemctl [enable | disable] 服务名
-
打开或关闭 指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果把防火墙打开了,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。
-
firewall
指令- 打开端口:
firewall-cmd --permanent --add-port=端口号/协议
- 关闭端口:
firewall-cmd --permanent --remove-port=端口号/协议
- 重新载入,才能生效:
firewall-cmd --reload
- 查询端口是否开放:
firewall-cmd --query-port=端口/协议
- 打开端口:
-
应用案例:
-
启用防火墙,测试111端口是否能
telnet
,不行 -
开放111端口
firewall-cmd --permanent -add-port=111/tcp; 需要firewall-cmd --reload
-
再次关闭111端口
firewall-cmd --permanent -remove-port=111/tcp; 需要firewall-cmd --reload
-
-
-
动态监控进程
-
介绍
top
与ps
命令很相似。他们都用来显示正在执行的进程。Top
与ps
最大的不同之处,在于top
在执行一段时间可以更新正在运行的进程。 -
基本语法:
top [选项]
-
选项说明
选项 功能 -d 描述 指定top命令每隔几秒跟新。默认是3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定监控进程ID来仅仅监控某个进程的状态 -
交互操作说明
操作 功能 P 以CPU使用率排序,默认就是此项 M 以内存的使用率排序 N 以PID排序 Q 退出top -
应用实例
-
监视特定用户,比如监控
tom
用户top:输入此命令,按回车键,查看执行的进程 u:然后输入"u"回车,再输入用户名,即可
-
终止指定的进程,比如要结束
tom
登录top:输入此命令,按回车键,查看执行的进程 k:然后输入"k"回车,再输入要结束的进程ID号
-
指定系统状态更新的时间(每隔10秒自动跟新),默认是3秒。
top -d 10
-
-
-
监控网络状态
-
查看系统网络情况
netstat
-
基本语法:
netstat [选项]
-
选项说明
-an
。按一定顺序排列输出-p
。显示哪个进程在调用 -
应用案例:查看服务名为
sshd
的服务的信息。netstat -anp | grep sshd
-
-
检测主机连接命令
ping
是一种网络检测工具,它主要是用来检测远程主机是否正常,或是两步主机间的网线或网卡故障。
-
2.11:RPM与YUM
-
rpm包的管理
-
介绍:
rpm
用于互联网下载包的打包及安装工具,它包含在某些Liunx
分发版中。它生成具有.RPM
扩展名的文件。RPM
是RedHat Package Manager(RedHat 软件包管理工具)
的缩写,类似windwos
的setup.exe
,这一文件格式名称虽然打上了RedHat
的标志,但理念是通的
Liunx
的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。 -
rpm
包的简单查询指令查询已安装的
rpm
列表。rpm -qa | grep xx
-
rpm
包名基本格式一个
rpm
包名:firefox-60.2.2-1 .el7.centos.x86_64
名称:
firefox
版本号:
60.2.2-1
适用操作系统:
.el7.centos.x86_64
。表示centos7.x
的64位系统。如果是
i686
、i386
表示32位系统,noarch
表示通用 -
rpm
包的其他查询指令rpm -qa
。查询所安装的所有rpm软件包rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox]
rpm -q 软件包名
。查询软件包是否安装rpm -qi 软件包名
。查询软件包信息rpm -ql 软件包名
。查询软件包中的文件rpm -qf 文件全路径名
。查询文件所属的软件包 -
卸载
rpm
包- 基本语法:
rpm -e RPM包的名称
- 应用案例:删除
firefox
软件包。rpm -e firefox
- 细节讨论:
- 如果其他软件包依赖于要卸载的软件包,卸载时则会产生错误信息
- 如果想要就是删除这个
rpm
包,可以增加参数--nodeps
,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
- 基本语法:
-
安装
rpm
包-
基本语法:
rpm -ivh RPM包全路径名称
-
参数说明
-i=install
安装v=verbose
提示h=hash
进度条
-
-
-
yum
-
介绍
Yum
是一个Shell
前端软件包管理器。基于RPM
包管理,能够从指定的服务器自动下载RPM
包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。示意图。
-
yum
的基本指令查询
yum
服务器是否有需要安装的软件。yum list | grep XXX(软件列表)
-
安装指定的
yum
包:yum install XXX
-