【linux进程管理】

Linux进程管理

概述

在Linux中,每个运行的程序都是一个进程。进程有两种存在的方式:前台和后台。前台的程序我们可以通过可视化界面与其进行交互操作,后台的程序我们一般看不到它,但它实际在运行。而后台的进程一般都是系统服务,它们会常驻内存。
我们可以通过windows的任务管理器直观地感受 mysqld 这个后台进程
在这里插入图片描述

注:注意区分程序和进程的概念。
程序是静态的,是一串代码块。
进程是动态的,是程序运行后加载到内存的结果。

查看系统当前执行的进程

ps

在这里插入图片描述

#显示当前所有进程信息
ps -a

#显示当前用户中的进程信息
ps -u

显示后台进程的运行参数

ps -x

在这里插入图片描述
#分页显示全部进程

ps -aux | more

在这里插入图片描述

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程的执行者进程号进程占用CPU百分比进程占用内存百分比进程占用虚拟内存大小(KB)进程占用物理内存大小终端机号进程运行状态进程开始执行时间占用CPU的时间进程所用的命令和参数

注:进程的状态包含S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-表示正在运行,D-表示短期等待,Z-表示僵死进程,T-表示被跟踪或被停止。
其中的僵死进程是程序已经结束进程,但是还在占用内存

父子进程

父进程可以创建多个子进程,如果将一个父进程杀死,则其子进程全部会被杀掉。

#查看进程及其父进程
ps -ef

在这里插入图片描述

:ps -auxps -ef查询的最终结果是相同的,ps -ef能够查看到子进程和其父进程
在这里插入图片描述

终止进程

#通过进程号杀死进程
kill 进程号

此时是用root用户和cxf用户同时进程远程登录情景。
通过下图我们可知,1289的父进程号为1,3935的父进程号为1289,3940的父进程号为3935。
在这里插入图片描述
我们就可以通过 sshd 所对应的cxf用户对应的进程id结束其登录

kill 3940

终止sshd远程登录服务

#查询sshd的PID
ps -ef | grep sshd

kill 5008

#再次查询还有没有sshd服务
ps -ef | grep sshd

在这里插入图片描述
杀死sshd后台进程后,我们就不能够使用远程登录了。
在这里插入图片描述

此时我们需要进入虚拟机中输入systemctl start sshd开启sshd后台进程才能重新继续使用远程登录。
在这里插入图片描述

#通过进程名称杀死进程(支撑通配符)
killall 进程名称

假设在虚拟机中打开两个文本文档,此时使用的是gedit文本工具,要想直接结束此进程,则可以直接输入killall geid结束进程,之后该文本工具就会被终止。
在这里插入图片描述

强制终止bash终端

注:
在这里插入图片描述
下图是在不同的时刻打开的bash,此时强制终止23:10运行的bash,输入kill -9 bash 5310加上对应的-9选项和PID,即可关闭23:10打开的bash
在这里插入图片描述

查看进程树

pstree

#以树状的形式显示进程PID
pstree -p

#以树状的形式显示用户的进程
pstree -u

在这里插入图片描述

服务管理

服务本质是进程,服务管理一般都是后台进程,它们会监听某一端口来等待其他程序的请求,而像这样的进程也称为 守护进程,如 mysqld,firewalld,其中的d表示damon。(外部客户端想要连接其实就是找到对应的进程端口,然后再使用)

service

service的使用

service 服务名 [start|stop|restart|reload|status]

关闭network服务(关闭后所有的网络都不连通,包括外部的sshd)

service network stop

注:
在CentOS中,很多服务不再使用service,而是使用systemctl
可以在/etc/init.d查看service指令,下图绿色的部分是还在使用的service命令
在这里插入图片描述
如果我们仍使用service命令对一些已经修改为systemctl的命令,则会有重定向的提示。
下图是关闭防火墙的命令,会重定向到systemctl在这里插入图片描述

我们可以通过查看Xshell中root属性中的端口号进一步理解守护进程。此处端口号为22说明Xshell的root用户连接的就是主机192.168.168.168的sshd后台进程的22号端口
在这里插入图片描述

查看服务

使用下面的命令就可以进入到系统服务页面查看服务

setup

在这里插入图片描述
其中服务前面带 * 号的说明是开机自启,如果想要添加或删除* 号,可按下 空格 键进行修改。(退出此界面需用要 tab 键切换到 取消 按钮)
在这里插入图片描述

运行级别(runlevel)

在这里插入图片描述
开机的流程如下
在这里插入图片描述

设置服务在不同运行级别的状态

查看服务

chkconfig --list | grep xxx

在这里插入图片描述
在不同运行级别设置服务(check)

chkconfig --level 运行级别号 on/off

将network服务在3运行级别关闭自启动

chkconfig --level 3 network off

在这里插入图片描述

注:用chkconfig查询的服务不包含原生systemd服务

systemctl

注:此时默认是在3和5运行级别操作服务

systemctl [start|stop|restart|status] 服务名

注:systemctl指令在 /usr/lib/systemdsystem中查看

查看服务开机自启状态

systemctl list-unit-files

设置服务自启动状态

#开启
systemctl enable 服务名

#关闭
systemctl disable 服务名

注:start stop 和 enable disable的去背
start stop对于服务的影响只是临时的,重新启动系统后还会恢复到默认状态
enable disable对于服务的影响是永久的,重新启动系统后不会恢复到原来的状态
在这里插入图片描述


查看服务是否自启动

systemctl is-enabled 服务名

以防火墙为例

查看防火墙的状况

systemctl status firewalld

systemctl is-enabled firewalld

在这里插入图片描述
开启防火墙守护进程

#两种写法均可
systemctl start firewalld

systemctl start firewalld.service

注:如果我们关闭了防火墙,外部程序会很容易进入到我们系统中某一程序
下面用telnet协议演示
假设此时Linux系统的防火墙是关闭的,此时我们在windows主机的命令行中使用telnet测试远程进入Linux主机192.168.168.168的mysql服务(其默认端口号为3306)
在这里插入图片描述
此时在Linux系统防火墙关闭的情况下很容易进入mysql服务。
如果开启防火墙,且在防火墙中关闭了其3306端口,则会连接不上
在这里插入图片描述

防火墙中包含关闭的端口和开启的端口,当我们打开防火墙且开启某些端口时,外部程序就可以访问到该端口对应的程序。

打开或关闭指定端口

#打开端口
firewall-cmd --permanent --add-port=端口号/协议

#关闭端口
firewall-cmd --permanent --remove-port=端口号/协议

重新载入

firewall-cmd --reload

查询端口是否开放

firewall-cmd --query-port=端口/协议

注:
每次打开或关闭特定端口后,需要重载一下才会生效
我们可以使用netstat -anp查询指定守护进程使用的协议

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值