| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux 进程监控与服务管理 -> 正文阅读 |
|
[系统运维]Linux 进程监控与服务管理 |
目录 进程监控ps指令有以下选项
当然也可以不加任何参数,一般直接加 -aux,BSD 风格 ?格式为用户+进程id+cpu占用百分比+物理内存占用百分比+虚拟内存占用大小(kb)+实际内存占用大小(kb)+终端信息+运行状态+启动时间+占用的cpu时间+进程名字/启动该进程的指令 扔个运行状态表: 过滤直接利用管道grep 查看父进程为什么要看这玩意儿呢,主要是为了方便对不同父进程及其子进程分类方便管理 ps -ef可以看到指令的父进程id,System V风格
格式为用户+进程id+父进程id+占用cpu百分比+启动时间+终端名称+占用cpu时间+进程的命令参数(更上面的差不多,就多了个父进程) 找个sshd服务相关进程 可以看到父进程是1号进程,0号进程是内核进程也就是启动的swapper,1号进程是启动的第一个进程,文件在usr/lib/systemd/systemd,主要有以下作用:
这里就是用到的作用4 终止进程Linux kill 命令用于删除执行中的程序或工作, 本意是给一个进程发送信号,默认不带参数就是发送信号15,也就是kill -15 pid. 众所周知,linux的信号列表前64个都是预定好的,扔个图 15的本意是软件终止信号,9才是真正的杀死信号,也可以理解为强制终止,有些进程是R状态,正在工作,你输入kill 其实纹丝不动,因为系统认为人家在上班你没办法开除人家,是误操作,如果要强制开除就-9 一般可以用来踢出登录用户,终止某些服务,或者终止僵尸程序 值得注意的是killall 这个指令用于终止父进程id以及其下面的所有子id 查看进程树?pstree? 常用指令
简单举个例子,找我的进程有哪些: 加个p就有id了: 服务管理service 指令服务管理本质就是进程管理,只是在后台运行而已,然后会监听某个端口等待其他程序的请求,比如sshd,防火墙等,因此我们又称为守护进程, 使用指令为 service+服务名+start|stop|restart|reload|status? |代表可选,具体作用就跟英文一样 我们可以去这个目录下看看哪些服务可以用service管理: 这只是一部分哈,具体的自己去看 我们随便选个看看状态比如ssh,具体的意思翻译成中文就懂了,不懂就去看计算机网络 值得注意的是这个逼,如果stop了所有链接都要报废,? ? 查看服务如果想看所有的系统服务,service --status-all,这样就不用去文件夹里面看,直接这里看更方便? 其中:[+] 代表服务是在启动运行的状态 [-] 代表服务是在关闭停止的状态 如果想看正在运行的就输入service --status-all | grep + ,具体的服务状态用上面的指令,很多英文那个 运行级别?linux有7种运行级别,众所周知,常用的是3和5,需要用到init 1号进程进行切换 大概说一下:
?输入runlevel可以看到运行级别 输入systemctel get-default查看默认具体的级别名称 也可以用systemtcl set-default设置默认级别,指令为systemtcl set-default + target文件名称 名称这里看 所有级别系统自动启动服务看看文件 /etc/rcS.d: 软链的名称有一定的规则: ?????? S[number][service name] --> ../init.d/servicename S 表示 Start,开启服务 ?????? [number]表示的是该脚本的运行优先级,number越小,脚本的运行优先级就越高 ?????? [service name]表示的是服务的名称。 ?????? 因此我们如果需要定义一个服务启动的优先级(顺序),则需指定脚本的number即可。 ?然后什么级别就对应西面rc+numer.d文件,比如我们这里是5,那么除了启动rcS.d软连接对应的进程外还有 update-rc.d指令比如我们想修改系统自动启动时候的初始服务,那么我们就可以在对应级别下创建对应的软连接就行,但是比较麻烦,系统提供了一个指令update-rc.d命令可以快速创建。 格式为?update-rc.d?<service name> start|stop| <order number> <run levels> 比如我们在运行级别为5的文件中加入我们希望自动启用的服务器,我们先去init.d看有没有,如果有就直输入?update-rc.d?<service name> start 99 5,这里就不演示了 快速删除指令为 ?????? sudo update-rc.d -f <service name> remove systemctl指令使用方法为systemctl?start|stop|restart|reload|status +服务名 当然还有其他指令(太多了),用法跟service 差不多,但是管理的服务对象跟service有区别,然后这都是临时的,reboot之后就没了 我们随便找个看看,显示的信息跟service一样的。? Ubuntu记得自己装个防火墙玩玩看,系统不会自动装 用这个指令管理的文件在这里: 可以用systemctl list-unit-files看服务开机启动状态 后面还可以跟其他关键字
?还可以用is-enabled看是否自动启动,跟那个update-rc.d差不多,比如防火墙 那我们到底用哪个呢,推荐大家用systemctl,这个能实现的功能比service更加全面而且好记 ?防火墙?我们先看一下服务器对应的端口号 ,ip就不放出来了,只会显示传输层协议 上面是已经开启的端口号,比如22 然后比如说我们想打开端口号为111端口,需要输入以下指令 firewall-cmd --permanent --add-port=111/tcp,当然要超级用户啊 然后要记得reload,firewall-cmd --reload不然修改不起作用 我们再去看启动的服务器netstat -anp | head -20 发现并没有启动啊,因为我们只是开放了这个端口号而已啊,并不代表服务器启动出于监听状态了 ?但是我们可以查询这个端口的状态firewall-cmd --query-port=111/tcp 表明防火墙不会阻止外部往端口111的链接 关闭链接需要firewall-cmd --permanent --remove-port=111/tcp ?记得reload ?再查询看看,就变成no了 ?动态监控进程top指令top跟ps指令比较类似,默认将按照 CPU 使用量的降序显示进程但是有个最大的不同, 默认将按照 CPU 使用量的降序显示进程top在执行一段时间可以动态的监控正在运行的内存。类似于win下的任务管理器。有几个常用的选项:
更多的自己man看看。 写个top讲一下,格式跟ps差不多, 进程号+所属用户+动态优先级+静态优先级+虚拟内存占用大小+物理内存+共享内存大小+cpu占用比+内存占用比+内存占用时间+启动进程的指令 这里有必要讲一下优先级的概念,具体的优先级可以用chrt以及nice指令修改优先级,具体使用可以网上搜搜看,这里主要讲一下优先级的定义。 与优先级因子的不同,优先级定义得更加细致,内核中范围从1-139。其中nice定义为-20到19,然后一般对应的真实优先级为100-139,对应的pr值为0-39。大于100的都是非实时操作系统,小于100的都是rtos,比如上面的rt就是指小于100的。 简单来说,实时操作系统需要保证相关的实时进程在较短的时间内响应,不会有较长的延时,并且要求最小的中断延时和进程切换延时。 同样ps -l也可以看优先级,值得注意的是这里的pri跟上面的pr的关系,pri跟pr本质上是一个东西,只是加上了一个正数的一个换算而已。都是越小越优先 调度算法对于工业上低延迟相应的需求,一般的进程调度算法,无论是O1还是CFS都是无法满足的,所以内核在设计的时候,将实时进程单独映射了100个优先级,这些优先级都要高于正常进程的优先级(nice值),而实时进程的调度算法也不同,它们采用更简单的调度算法来减少调度开销。 对于实时进程可以用的调度策略是:SCHED_FIFO、SCHED_RR, 而对于非实时进程则是:SCHED_OTHER、SCHED_OTHER、SCHED_IDLE。,俩other对应的策略不同一个是batch一个是others 我们输个chrt -p $$看看当前bash的优先级和调度算法: $$:? 脚本执行的进程id; 发现这不是实时的 我们大概讲一下各个调度算法 实时进程调度策略:
再大概说一下非实时的调度算法:
top交互选项常用的有以下几个选择:
这个不是带后缀啊,就是进入top之后哦输入这些会有反应。举个例子: 进入之后哦输入shift+M能看到按照内存排序,这里的内存是指实际物理内存的占用大小。 多次操作可以有以下选项:
比如说我监视我自己……? 监控网络状态需要用到一个很常用的指令netstat ,一般跟这些东西:
比如我加个p就有这个红框里面的东西,表示调用该网络服务的进程或者进程号,我这里全是因为没有开超级用户不让看 不然就是以下格式:协议+接收+接受缓存+输入缓存+本地ip及port+外部ip及port+链接状态 其中 recv-Q:网络接收队列 send-Q:网路发送队列 IP也分ipv6和ipv4,用:的都是ipv6,具体ipv6书写规则自己网上查 这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 14:22:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |