补充centos7软件包的方式/编译安装源码包软件/企业案例/linux进程管理/企业管理进程系列命令(企业经验)--8820字详谈

news2024/11/24 16:16:04

cenros7软件包的安装方式

软件包分类安装方式优缺点
rpm包软件开发商编译打包,安装简单,快速软件版本可能偏低,安装路径是固定好的
源码包自己手动编译安装并且复杂软件爸爸随意选,可以定制安装路径
二进制包解压就可以使用不能进行修改源码,软件包大

什么是源码包?

开发人员编写好的程序源代码,并且没有将其编译为一个能正常使用的工具或软件。

为什么要进行源码包安装

部分软件官网提供源码包,需要自己编译并且安装;
部分软件在新版本有一些特性还没来得及制作rpm包时,或者软件包可以进行自行编译软件使用新的特性

比如:下面的编译参数介绍(添加了一些模块,可以使用源码安装)
在这里插入图片描述

源码包的优缺点

优点:

  1. 可以自行修改源代码
  2. 可以定制需要的相关功能
  3. 新版软件优先更新源码(python,go学开发做运维)

缺点:
4. 性对于yum安装软件会很复杂
5. 标准化实施困难,自动化运维复杂

源码包如何获取

常见的软件包都可以在官网获取源码包:apache(并发能力3000-5000),nginx(10000-30000),mysql等,阿里云,清华源

apache已经被国内淘汰了(不建议大家去学)
在这里插入图片描述
已经被nginx代替了

编译安装源码包软件

编译安装过程
在这里插入图片描述
上述安装是c语言开发的软件,很多系统服务软件大多都是c语言开发
c语言优势:运行速度快
缺点:难学,开发速度慢(互联网企业在逐渐大众消失)
python语言:开发效率高,用途广
缺点:解释语言,运行速度慢
go语言:开发效率高,用途在变广,编译速度快,主要是高并发场合,替代c语言

实践:安装nginx了解源码包编译过程

1.环境准备

[root@calms ~]# rpm -qa gcc
gcc-4.8.5-44.el7.x86_64
[root@calms ~]# rpm -qa make gcc wget
wget-1.14-18.el7_6.1.x86_64
gcc-4.8.5-44.el7.x86_64
make-3.82-24.el7.x86_64

如果已经装好了,忽略下面的步骤
yyum install gcc make wget -y(Development tools中含有gcc make)

2.下载源码包

去www.nginx官网找到对应下载的版本复制下载地址

[root@calms ~]# cd /usr/src

wget -q https://nginx.org/download/nginx-1.26.0.tar.gz(静默安装)
在这里插入图片描述

3.解压源码目录

[root@calms src]# tar xf nginx-1.26.0.tar.gz
[root@calms src]# cd nginx-1.26.0
[root@calms nginx-1.26.0]#

4.配置相关的选项,并且生成makefile

[root@calms nginx-1.26.0]# ./configure --prefix=/application/nginx-1.26.0
在这里插入图片描述

故障:在这里插入图片描述

这样直接安装不了,需要安装

[root@calms nginx-1.26.0]# yum install pcre-devel -y

如果还进行报错
安装yum install zlib-devel -y

这时候再进行编译:

./configure --prefix=/application/nginx-1.26.0

echo $?显示0表示正确
在这里插入图片描述

在这里插入图片描述

5.将makefile文件编译成可执行的二进制程序

cat Makefile(可以查看makefile文件内容)

make
make命令进行编译

6.将二进制文件拷贝至对应的文件

make install

7.启动,测试

netstat -lntup|grep nginx检查是否有(我这里是没有的)
在这里插入图片描述

补充:
这里最好用软连接做:
在这里插入图片描述

做软连接目的:我们以后进行访问只访问nginx,未来nginx软件包进行升级的时候(nginx-1.26.7)我们只需要ln -s 换成新的即可,对于编译软件的时候我们只使用nginx,要升级新的就直接链接到新的;工作中只使用ln /application/nginx即可!

/application/nginx-1.26.0/sbin/nginx
netstat -lntup|grep nginx
启动成功!
在这里插入图片描述

curl 127.0.0.1也可以终端查看,也可以在浏览器访问自己的ip

在这里插入图片描述
在这里插入图片描述

epel源里面有nginx的官方更新的

yum install nginx -y

在这里插入图片描述

. /application/nginx-1.26.0/sbin/nginx -s stop停止

特点:
安装复杂,特别慢,很容易报错

安装软件的时候,尽量找它的yum安装包,去官方去找它的镜像配置,如果官方的yum源符合不了要求。如果是大量的服务器将源码包进行定制化(定制为rpm包)然后把rpm包放置到私有仓库,然后用私有仓库作为源再通过yum进行安装
在这里插入图片描述

Linux进程管理

什么是进程?

计算机软件或代码被执行,运行与内存的时候,称之为进程,系统会为其分配内存资源,并且分配到pid,网路端口,运行用户及文件描述符。

进程及守护进程和程序的区别

进程:程序或者软件运行起来后的产物,放在内存中
守护进程:为提供服务持续运行,还具备普通进程的特点,ftp,mysql等都属于守护进程
程序:代码文件或应用软件文件永久存放在系统中,并且可以看到实体文件(放置在磁盘中),把程序及软件运行起来就是进程;持续的运行着,就是守护进程

进程运行原理

在这里插入图片描述

监控和管理进程(企业)

ps命令:查看进程

功能:列出执行ps命令那个时刻的进程快照(静态查看)
动态查看(top):

ps 【选项】

参数格式:Unix格式:一个 - 开头
bsd格式:没有- 开头
gnu 两个-开头

常用参数
-f :额外显示UID PPID c与STIME栏位

ps -ef 简易查看进程,过滤进程的命令
在这里插入图片描述
相当于windows管理器;

UID:进程被该UID所拥有
PID:进程的标识号
ppid:进程的父进程的标识号
c:cpu使用资源的百分比
STime:进程开始的时间
TTY:该进程是在那个终端机上面运作,若与终端机无关,显示?,另外tty1-tty6是本机上面的登入者进程,若为pts/0等,表示由网络接主机的进程
time:进程所用到的总和的cpu时间
cmd:正在执行的命令行

PID为1的初始进程,c7:systemd,c6:init

使用BSD语法格式显示每一个进程信息

ps aux
BSDd格式采纳数,使用a选项和x选项显示所有的进程,使用u选项显示进程的用户信息

在这里插入图片描述
ps auxx可以显示全路径

STAT:该进程被触发的时间;
TIME:该进程实际cpu运作时间
COMMAND:该进程的实际命令,【方括号】属于内核态的进程,没有 [ ]的是用户态进程

进程状态
运行:R 休眠:S D:不可中断睡眠 T:正在侦测或停止
Z:已经终止 +:前台进程
I:多线程进程 N:低优先级进程 <:高优先进程
s:进程领导者 L:已将页面锁定在内存中

AIX格式:ps -eo “%p %y %x %c”

语法说明,-e是显示所有的进程,-o可以自定义输出的字段,以逗号进行分隔,支持的字端
在这里插入图片描述
在这里插入图片描述
zabbix监控,每隔几分钟监控
在这里插入图片描述
pa aux --sort -vsz |head sort后面加上减号表示逆序排序

查看某一个进程在哪个cpu上运行:
在这里插入图片描述
这里可以和之前学习到的命令进行结合

重要的参数总结:
ps aux
a:显示与终端相关的所有的进程,包含每一个进程的完整路径
u显示进程的用户信息
x显示与终端无关的所有进程

-u 显示指定用户相关的进程信息

-e 显示所有的进程
-f 额外显示UID PPID C与STIME栏位

企业中如何使用?

查找占用cpu mem虚拟内存 更多的进程
分析进程的问题,解决问题,把资源降下来
如果发现没有异常,还无法进行降下来,就增加增加资源

维护服务器性能:CPU,内存,IO

pstree:显示进程状态树
用法
pstree 选项 【进程号、用户】
在这里插入图片描述
在后面会写linux启动流程的时候再详谈
pstree -a展示系统的子进程
在这里插入图片描述
在这里插入图片描述

psgrep:查找匹配条件的进程(了解即可)
用法:pgrep 【选项】

top:实时显示系统中各个进程的占用资源状况
top 【选项】
在这里插入图片描述
-U 指定用户的进程(搭建集群的时候可能会把程序跑在普通用户下)
指定pid查看进程
在这里插入图片描述

top的输出

第一行:任务队列信息,同uptime命令的执行结果;当前系统时间;系统运行对少天;2个用户登录系统;
后面三个数分别是1分钟,5分钟,15分钟的平均负载的情况。体现系统繁忙的重要简单的查看指标

top - 18:22:25 up 1:32, 2 users, load average: 0.00,

【平均负载load average】
在这里插入图片描述

第二行:task为任务(进程)
一共有有120个进程,其中运行的状态有1个,119在睡眠,stoped状态为0个;zombie状态(僵死)都有0个
在这里插入图片描述

Tasks: 120 total, 1 running, 119 sleeping, 0 stoppe

第三行,cpu状况信息
在这里插入图片描述
#模拟消耗负载,消耗cpu,消耗io工具
stress - tool to impose load on and stress test systems
example:

stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa,

第四行内存状态:
内存总结、可用内存(剩余内存)、已用内存、系统缓存和缓冲区占用内存空间
KiB Mem : 7989840 total, 7054432 free, 399116 used,

以上两行:cat/proc/meminfo或free -m获取

第五行:swap交换分区信息
交换分区总量 使用的交换区总量 空闲交换区总量 可用内存大小
KiB Swap: 1048572 total, 1048572 free, 0 used.

t

在这里插入图片描述
从第七行开始,是各进程(任务)状态监控
在这里插入图片描述

top必会的快捷键指令(笔试可能会问)

在这里插入图片描述

企业面试:输入top命令,想看服务器有几个cpu核心?

按1键

load average 平均负载
进程杀手:
1.kill 2.killall 3. pkill

kill 终止目标进程
-l 列出全部信号名称
-s指定要发送的信号

什么是信号?

kill命令发送给操作系统,让操作系统去执行的一个命令

常见的信号列表:
在这里插入图片描述
环境测试:

在这里插入图片描述

vsftpd( FTP服务),端口21端口,数据段端口20
在这里插入图片描述
默认不加参数关闭vsftpd
[root@calms ~]# pgrep vsftpd
7344
[root@calms ~]# kill 7344
[root@calms ~]# pgrep vsftpd

当用kill杀不死的时候,可以用kill -9 进程名(强制)

也可以这样杀进程:

kill -9 pgrep vsftpd(用反引号进行包含)

在这里插入图片描述

改配置文件不重启,直接生效
1 HUP 挂起信号 可以让进城重新配置,重新加载
kill -1 进程ID

生产经验:kill -0 pid是不发送关闭停止信号,但是会检查进程是否存在?
生产用途:检查进程是否存在,实际应用(mysql服务关闭的时候)
kill PID

补充:在shell脚本开发,关闭服务的时候,可以用kill -0
如果vsftpd存在则输出1否则为0
也可以判断进程是否存在

在这里插入图片描述

也可以判断进程是否存在:
在这里插入图片描述

企业经验:
强制杀,导致服务器不来
数据服务不能强杀mysql,oracle,mongodb(数据库,磁盘上有自己的文件系统)
非数据服务可以强杀nginx,vsftpd(数据在磁盘上)

已知端口去查服务:查看80端口是什么服务:

在这里插入图片描述
在这里插入图片描述

kill all通过名字杀进程

killall 进程名
在这里插入图片描述
可以多次执行直到看到后面出现没有发现即可

缺点:杀得很慢,不重复执行

pkill通过进程(完整名称)

-t 终端 杀死指定终端进程

-u 用户 杀死指定用户的进程
在这里插入图片描述
在这里插入图片描述
总结·:
pkill 进程名(一次杀死)
killall 进程名(多次)
-9强杀会引起服务起不来
-u用户
kill PID 默认不会引起服务器启动
kill -HUP PID 平滑重启(重新加载配置)
kill -0 PID(检查进程是否存在,mysql关闭的时候)
kill -9 PID(强杀,可能会引起服务起不来)
批量杀进程:
ps -ef|grep nginx|awk ’ {print $2}’ |sed -r ‘s#(.*)kill \1#g’|bash

这一篇先写到这里了,想要学习更多关注我的专栏!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

new String和直接赋值的一些问题

分析1 我们先看以下代码&#xff1a; String str1 "abc"; // 在常量池中String str2 new String("abc"); // 在堆上System.out.println(str1 str2)以上结果的输出是什么&#xff1f; 输出&#xff1a;false 前置知识&#xff1a; 在JVM中&#xff0c…

PTA 天梯赛 L1-010 比较大小【C++】 L1-011 A-B 【C++ vector动态数组】【Python 字符串replace函数】

L1-010 比较大小 判断顺序很重要 #include<iostream> using namespace std; int main() {int a, b, c;cin >> a >> b >> c;int temp;if (a > b) {temp a;a b;b temp;}if (a > c) {temp a;a c;c temp;}if (b > c) {temp b;b c;c te…

从零开始的软件测试学习之旅(二)测试方法及禅道使用篇

测试方法bug统计以及禅道使用 按是否要运行程序进行划分测试方法测试计划和测试方案测试方案包含:测试用例设计方法一.等价类划分法二.边界值法三.判定表法四.因果图: 输入条件或输入条件组合较多,组合使用判定表与因果图五.正交法:基于数学概率学,设计最经济的实验路径六.场景…

Vue面试经验

Vue部分 Vue编译时声明周期的执行顺序 Vue中父子组件渲染顺序&#xff08;同步引入子组件&#xff1a;import Son from ‘/components/son’ &#xff09; 父子组件编译时的生命周期执行顺序 这里修改data数据时也修改了dom&#xff0c;如过知识通过按钮对数据进行操作&…

Veeam配置备份oracle实例

Veeam是一家专门提供数据管理和数据保护解决方案的软件公司。他们的产品主要包括备份、复制和虚拟化管理等功能&#xff0c;旨在帮助企业保护其数据、应用程序和系统&#xff1b;NBU&#xff0c;COMMVALT&#xff0c;Veeam 国际三大知名备份软件厂商。本文介绍使用Veaam 备份Li…

数据结构——二叉树的操作 (层序遍历)(C++实现)

数据结构——二叉树的操作&#xff08;2&#xff09;&#xff08;C实现&#xff09; 统计叶子结点个数统计结点个数层序遍历非递归方式递归方式 我们今天接着来看二叉树的操作&#xff0c;如果还没有看过上一篇的可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/a…

ezplot--Matlab学习

目录 一、代码 二、效果 ​编辑 三、ezplot讲解 四、如何自定义一个函数 一、代码 clc; clear; t0:32; x4(t) cos(2*pi*t/4).*sin(2*pi*t/4); x8(t) cos(2*pi*t/8).*sin(2*pi*t/8); x16(t) cos(2*pi*t/16).*sin(2*pi*t/16); subplot(3,1,1) ezplot(x4,[0,32]); subplot…

怎样选购内衣洗衣机?2024年5款最新推荐机型种草

随着科技的不断发展&#xff0c;内衣洗衣机成为了家家户户必备的小家电之一&#xff0c;为我们的生活带来了极大的便利。但面对市场上众多的内衣洗衣机品牌&#xff0c;如何选择一款质量好的内衣洗衣机呢&#xff1f;本文将为您推荐5款最新的内衣洗衣机品牌&#xff0c;从而帮助…

冯唐成事心法笔记 —— 知人

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录PART 2 知人 人人都该懂战略人人都该懂战略第一&#xff0c;什么是战略第二&#xff0c;为什么要做战略第三&#xff0…

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰

【GitHub】如何在github上提交PR(Pull Request 写在最前面1. 准备工作1.1 注册 GitHub 账号1.2 了解 Git 基础1.3 找到一个项目 2. 创建你的 PR2.1 Fork 和克隆仓库2.2 创建一个新的分支2.3 进行更改2.4 推送更改到 GitHub2.5 创建 Pull Request 3. 优化你的 PR3.1 保持提交清晰…

投资标的参考

1、中央汇金投资有限责任公司 1.1、香港中央结算有限公司 2、中央汇金投资有限责任公司持股列表 _ 东方财富网_ 数据频道东方财富网提供十大流通股东数据、十大股东数据、股东持股明细、股东持股变动统计、股东持股分析、股东持股统计、股东协同等数据&#xff0c;充分展示股东…

Java中的ArrayList

ArrayList<E>的特点 可调整大小的数组实现 <E>:是一种数据类型 ArrayList的构造方法 ArrayList list new ArrayList();创建一个空的集合对象 package dayhou40.day45; ​ import java.util.ArrayList; ​ public class Arraylisttest {public static void ma…

大数据第五天(操作hive的方式)

文章目录 操作hive的方式hive 存储位置hive 操作语法创建数据表的方式 操作hive的方式 hive 存储位置 hive 操作语法 创建数据表的方式 – 创建数据库 create database if not exists test我们创建数据库表的时候&#xff0c;hive是将我们的数据自动添加到数据表中&#xf…

uniapp——授权报错,选择合适的基础库

说明 我的小程序开发版本点击选择头像报错 更换基础库就好了

[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板&#xff08;图中的红色斜线区域&#xff09;&#xff0c;需要先安装两个支 柱&#xff08;图中的黑色竖条&#xff09;&#xff0c;再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度 不同&#xff0c;太阳能板的安装面…

JavaScript-3(内置对象+数组对象+字符串对象)

目录 1.预解析 2.对象 什么是对象 创建对象的三种方法 利用字面量创建方法 利用new Object创建对象 构造函数创建对象 new关键字 遍历对象 3.内置对象 Math对象 Math概述 Math随机数 Date日期对象 格式化日期 Date总的时间毫秒 4.数组对象 创建数组的两种方式…

tcp inflight 守恒算法背后的哲学

tcp inflight 守恒拥塞控制的正确性 很久以前我开始纠结 tcp 锯齿&#xff0c;很多年后我知道这叫 capacity-seeking&#xff0c;甚至说 tcp 属于 capacity-seeking protocol 的原因就是它早已深入人心的 aimd 行为&#xff0c;而该行为生成了 tcp 锯齿。 在消除锯齿&#xf…

01.Scala概述及环境配置

文章目录 [toc] 1.**Scala概述**2.**Scala环境搭建**2.1下载2.2环境变量配置 1.Scala概述 特点&#xff1a; 同样运行在JVM上&#xff0c;可以与现存程序同时运行。可直接使用Java类库。同Java一样静态类型。语法和Java类似&#xff0c;比Java更加简洁&#xff08;简洁而并不…

深度学习的瓶颈是什么!

深度学习主要的瓶颈&#xff1a; 数据依赖与标注问题&#xff1a;深度学习模型通常需要大量的标注数据来进行训练。然而&#xff0c;获取大量的标注数据不仅成本高昂&#xff0c;而且在某些领域&#xff08;如医疗、金融等&#xff09;中可能难以获取足够的标注数据。此外&…

换脸插件升级导致SDWebUI无法启动cannot import name ‘Undefined‘ from ‘pydantic.fields‘

今天在一台新的机器环境装了SDWEBUI&#xff0c;都使用最新的版本&#xff0c;升级了下换脸的插件&#xff0c;于是乎启动崩溃了。错误如下 Launching Web UI with arguments: --listen --skip-torch-cuda-test --disable-nan-check --skip-version-check --skip-python-versi…