windows以及linux常用运维命令

文章目录

1:windows

ctrl+r 输入以下命令实现快捷打开

1.1 cmd使用

1:ctrl+r进去cmd
2:dir:当前目录文件展示,相当于linux的ll
3:目录切换
磁盘名。例如: 或者f:
即可
进入目录: cd path
在这里插入图片描述
4:查看ip
查看ip

1.2:计算器快捷方式:calc

ctrl+R命令窗口calc

1.3:远程连接:mstsc

ctrl+R命令窗口mstsc

1.4:telnet进行ip端口开放检测

cmd中使用telnet进行端口开放测试
telnet ip port
报不是内部或外部命令时使用下面进行解决:
在控制面板中选择“程序和功能”,在“程序和功能”界面选择“打开或关闭Windows功能”。在弹出的“windows功能”窗口中将Telnet服务器和Telnet客户端勾选并保存设置。设置完成后需要重新打开一个命令行窗口运行telnet命令,设置前打开的命令窗口运行telnet是无效的
在这里插入图片描述

1.5:关闭端口

查找所占端口的应用:netstat -ano | findstr “端口号”
根据pid杀死进程:taskkill /F /PID “pid”

1.6:查找端口占用

查找所占端口的应用pid:netstat -ano | findstr “端口号”
查找使用的应用:tasklist |findstr “pid”
在这里插入图片描述
根据pid杀死进程:taskkill /F /PID “pid”

2:linux

常见端口使用

一些常见的端口号及其用途如下:
21端口:FTP 文件传输服务
22端口:SSH 端口
23端口:TELNET 终端仿真服务
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务
80端口:HTTP 超文本传输服务
110端口:POP3 “邮局协议版本3”使用的端口
443端口:HTTPS 加密的超文本传输服务
1433端口:MS SQL*SERVER数据库 默认端口号
1521端口:Oracle数据库服务
1863端口:MSN Messenger的文件传输功能所使用的端口
3306端口:MYSQL 默认端口号
3389端口:Microsoft RDP 微软远程桌面使用的端口
5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口
5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口
5000端口:MS SQL Server使用的端口
8000端口:腾讯QQ

49152-65535 :动态端口的范围是从49152到65535。
它们通常由客户端应用程序使用,用于发起与服务端口的连接。
这些端口由**系统自动分配**给客户端应用程序,
以便在通信过程中不与其他应用程序发生冲突。

在这里插入图片描述

查看动态端口的范围:sysctl net.ipv4.ip_local_port_range
动态端口是由系统根据不同应用的连接自动分配端口给使用。(如springboot连接mysql数据库,使用连接池连接后分配多个端口保证并发),不同的操作系统坑不一样

2.1:磁盘空间:df -h

df -h
查看那个文件占用最大
du -h --max-depth=1
du -sh * | sort -n
在这里插入图片描述

2.2:内存使用:free

free -g/m -s num
以什么单位显示,多久显示一次。

free -g
free-g -s 5
Mem 行(第二行)是内存的使用情况。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。

2.3:目录占用空间大小:du -sh *

*:表示该文件夹下每个文件

比如du-sh /opt 查看opt目录挂载的位置以及其使用的大小

2.4 cpu分析:top

top行:
average :距离现在过去5,10,15分钟的cpu使用负载,值小于核数较好比如单核cpu双核cpu那就是值小于1或者小于2。太大资源不足,太小资源闲置

%cpus行:CPU使用率, id:cpu剩余,越高越好,wa cpu等待越小越好

shift+p进行排序刷新跟踪。
输入c跟踪进程使用

2.5 磁盘io分析:iostat -x 1

iostat -x 1
-x 详情查看,1代获取信息的间隔时间
%idle:CPU空闲时间百分比。
%iowait:CPU等待io操作完成占cpu总时间的百分比。如果%iowait的值过高,表示硬盘存在I/O瓶颈
rkb/s:每秒写入的kb
wkb/s:每秒读取
await 表示每次IO请求等待时间,包括等待时间和处理时间。await-syctm越小越好。io等待时间
%util越低越好,100%表示达到硬盘io瓶颈。
结合分析:
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,idle小于70% IO压力就较大了,一般读取速度有较多的wait,查看iowait确实如此。

iotop进行详细进程占用查看

iostat -d device硬盘名  num
监控单个硬盘,默认全部。iostat -d 2 :

磁盘瓶颈:

如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,idle小于70% IO压力就较大了,一般读取速度有较多的wait,查看iowait确实如此。
如果await远大于svctm,说明I/O队列太长。
若 %iowait 的值过高,表示硬盘存在I/O瓶颈

2.6:端口、进程查看:netstat和ps -ef

端口查看:Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。
lsof -i:端口号 :如lsof -i:8080
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
根据端口号查找其进程名称id:netstat -tunlp | grep 端口号
在这里插入图片描述

 如:netstat -ntulp | grep 80   //查看所有80端口使用情况进程pid

获取对应端口的进程id,进程名称,再根据进程id使用ps -ef查找其开启的命令
进程查看:top或者ps -ef |grep pid
在这里插入图片描述

UID      :程序被那个用户 所拥有
PID      :就是这个程序的 ID 
PPID    :则是其上级父程序的ID
C          :CPU使用的资源百分比
STIME :系统启动时间
TTY     :登入者的终端机位置
TIME   :使用掉的CPU时间
CMD :启动该进程的命令,一般通过此获取自己的程序

杀死进程:kill -9 pid

2.7:时间同步:date

ntpdate time1.aliyun.com

2.8:文件查找

1:文件查找
	locate fileName		        	 	不限制路径全局搜索文件名
	find parh -name   fileName	 		指定路径查找文件,不指定默认当前路径 
2:内容查找	
	grep -rn string            			会在当前路径下的全部文件进行查找
	cat  fineName | grep string			指定文件进行内容查找:
3:ls查找文件
	ls显示所有文件
	*代表任意多个字符	ls *a
	?代表任意一个字符	ls a?

文件统计:cat file | grep wc - l

2.9:防火墙firewalld或者iptables

firewalld或者iptables
1:查看防火状态

systemctl status firewalld

service iptables status

2:暂时关闭防火墙

systemctl stop firewalld

service iptables stop

3:永久关闭防火墙

systemctl disable firewalld

chkconfig iptables off

4:重启防火墙

systemctl enable firewalld

service iptables restart

1:端口开放firewall

查询端口是否开放: firewall-cmd --list-ports
查询指定端口:firewall-cmd --query-port:port 例如firewall-cmd --query-port:8080
返回yes代表开放
开放指定端口: firewall-cmd --zone=public --add-port=1935/tcp --permanent
重启防火墙:firewall-cmd --reload

2:端口监听

被监听的端口,如nginx监听的端口,都会被查出来
netstat -ant | grep 80

2.10:文件解压缩tar

压缩:tar -czvf
解压缩:tar -xzvf

2.11:管道|

管道命令: |

管道中的每一条命令都作为一个单独的进程运行,每一条的输出作为下一条命令的输入。

命令从左到右顺序执行,因此管道线是单向的。

查找含有root的信息:cat /etc/passwd |grep root

2.12:网络ifconfig

ifconfig 用于显示或设置网络设备(查看IP或设置网络)

2.13:chmod 修改文件读取权限

加执行权限:chmod + x file_name

2.14:获取进程jvm堆栈jstack

java/bin目录下有 jstack工具,获取进程堆栈,并输出到本地文件。此时输出的文件中pid是16进制的,需要使用转换再到文件中查找:printf “%x\n”

jstack > allstack.txt

2.15:service/systemctl操作服务

对服务的开始停止等操作如防火墙service iptables stop/start/restart

2.16:linux的三剑客grep,awk,sed

查找,分段,修改 ,而这三个功能对应着我们今天的主角:grep,awk,sed。

命令		特点								场景
grep	过滤	grep是过滤最快的
sed		替换、修改文件内容、取航			对文件内容进行替换,取出某个范围的内容(早上10到11点)
awk		取列、统计计算					取列、对比、比较、统计计算

学习三剑客之前先要学习正则表达式,linux的正则表达式是只在三剑客命令中可以使用,正则表达式就是一些特殊意义的符合是对通配符(*等)的扩展。

$ 用来匹配以什么结尾
^ 匹配以什么开头。
^$表示匹配空行
?匹配前面的子表达式零次或一次
{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格
*用来匹配前一个字符0次或者1次以上任意次数
.表示任意字符除过空行以外。需要匹配.时需要使用转义字符\
.*组合符用来匹配任意长度的字符串
^.*用来匹配任意多个字符开头的内容
.*$用来匹配任意多个字符结尾的内容
[abc]用来匹配集合里面任意一个字符,比如下面
	[A-Z] 26个大写字母
	[a-z] 26个小写字母
	[0-9] 0至9数字等价于\d
	[A-Za-z0-9] 表示26个大写字母、26个小写字母和0至9数字
[^abc]表示用来匹配除了集合当中的任意字符
. 用来匹配单个任意字符并且有且只能匹配一个字符不能匹配空行
\用来转义让有特殊含义的字符现出原型比如说.就代表小数点
|表示或也就是or连接多个条件
	x|y:匹配x或y
()条件域对()内的内容为一个条件
		匹配ip地址:([1-9]{1,3}\.){3}[1-9]。

\正则表达式中的转义字符,用于取消正则中特殊字符的特殊意思。比如\.就表示.不表示匹配一次字符了
比如9位QQ号:`^[1-9]*[1-9][0-9]*$`
匹配ip地址:([1-9]{1,3}\.){3}[1-9]。
1:grep查找过滤文本

1.grep 是 Linux 系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据。

格式:grep [选项] [正则] [文件]
作用:在文件中找到符合正则条件的行或者查找文件
常用选项如下:

grep -i 					:忽略大小写
grep 'str字符' file1 file2	:从文件中匹配字符str内容,多个文件空格隔开即可
grep -v :		:查找不匹配的内容,就是对匹配内容结果取反
grep -n 		:打印时会显示匹配内容所在行号
grep -A n   	:延伸显示匹配行及其的后n行
grep -B n   	:延伸显示匹配行及其的前n行
grep -E 'pattern正则表达式' file		:pattern表示支持正则表达式。比如 grep'str1|str2' file从file中匹配str1或者str2字符串
grep 正则表达 可过滤多个值

实战如下:

目录下查找txt类型文件: ls | grep *.txt
查找文件中的内容:
	匹配前面一个字符后面是一个a的行 grep ".a" grep_t.txt       grep "str" fileName
	查找后统计个数 grep -o root grep_t.txt | wc -l对url过滤:curl -s https://testerhome.com | grep href | grep -o "http[^\"]*"
对匹配内容结果取反:ls | grep -v *.txt

从11.txt和22.txt文件中查找test字符串: grep 'test' 11.txt 22.txt
	11.txt:test success!
	22.txt:test grep
从file文件匹配str1或者str2字符串:grep'str1|str2' file
文件内容匹配空行:grep ^$ 11.txt
正则表达式:grep -E 'pattern' file	
	匹配只能由a-z组成的4位字符串:grep -E '([a-z]{4})' 11.txt
	转义字符\使用(匹配以.结尾的行):grep '\.$' 11.txt
2:awk修改文本

awk介绍
awk是一种处理文本文件的编程语言,AWK 在很多方面类似于 shell 编程语言,默认以空格或制表符为分隔符,每条记录被分成若干字段(列),awk每次从文件中读取一条记录。

Awk语法 awk [ -F re] [parameter…] [‘‘pattern {action}’’] [-f progfile]
也就是awk ‘{操作}’ file。对于操作awk提供了一些内置的函数

参数说明:
-F re:允许awk更改其字段分隔符。
parameter: 该参数帮助为不同的变量赋值。
'pattern {action}': awk的程序语句段。这个语句段必须用大括号{}以防被shell解释
	其中pattern参数可以是egrep正则表达式中的任何一个,action参数总是被大括号包围
	它由一系列awk语句组成,各语句之间用";"分隔。awk解释它们,并在pattern给定的样式
	匹配的记录上执行其操作。
-f progfile:允许awk调用并执行progfile指定有程序文件。progfile是一个文本文件,他必须符合awk的语法。
in_file:awk的输入文件,awk允许对多个输入文件进行处理。值得注意的是awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。

'pattern {action}'文件action选项操作详解

print:输出内容

awk命令实战

1:打印输出文件内容:awk '{print}' 11.txt

3:sed增删改查文本

流编辑器 可以对文本进行增删改查
命令格式:

命令		1、选项(s)sed 命令		2、功能替换 (g)修饰符也可以不写	 3、参数(文件)
sed		-r						's#olkdboy#oldgir#g'			oldboyd.txt

1、选项 (s)sed 命令如下
-n :只有经过sed特殊处理的那一行(或者操作)才会被列出来。一般与p配合使用进行查询部分内容
-e :直接在命令行模式上进行sed的动作编辑
-f :直接将sed动作写在一个文件内,-f filename则可以执行filename 内的sed动作。
-r :sed的动作支持的是拓展正则表达式的语法(默认是基础正则表达式的语法)
-i :直接对文件的内容进行操作,不带i默认只是对文件临时内存中的值进行操作。

2、功能替换命令如下
sed 命令核心功能(增删改查),文本内容使用//包含在内(/内容/),多个内容使用逗号分隔即可

  • s 替换 substitute sud
  • p 显示 print,一般使用np即显示那行
  • d 删除 delete
  • cai 增加 c/a/i
    c replace 代替这行内容
    a append 追加,向指定的行或每一行追加内容(行后面)
    i insert 插入,向指定的行或每行插入内容(行前面)

修饰符中p代表行
实战

sed -n查询:
	指定文件范围进行查找
	sed -n '1,5p' sed_text.txt  	//查找 1 到 5 行
	sed -n '/test/p' 11.txt			//从11.txt中查找test字符串并打印。/内容/
	sed -n '/test/,/66/p' 11.txt	//从11.txt中查找test或者66字符串并打印。/内容/
sed 's'替换:sed 's/待修改/修改结果/'  
	sed 's/hello/HELLO/' text.txt 	//text文件hello改HELLO
	sed -i 's/test/test swd/' 11.txt  //把文件中的test替换为test swd。
sed 'a':追加
	sed 'a/append syccess/' 11.txt //默认向文件最后追加,可以使用na指定第n行追加。
sed 'i':插入内容
sed 'd:删除内容

2.17 磁盘分区fdisk

fdisk -l 查看分区情况
fdisk -d删除分区
fdisk 分区名后输入n进行分区的编辑

2.18 网卡路由配置

配置文件路径/etc/sysconfig/network-scripts/找到需要使用的网卡进行编辑

TYPE=Ethernet                        # 网络类型:Ethernet以太网
BOOTPROTO=none                       # 引导协议:static静态、dhcp动态获取、none不指定
DEFROUTE=yes                         # default route,是否把这个eth设置为默认路由
DEVICE=ens33                         # 网卡的设备名称
NAME=ens33                           # 网卡设备的别名
ONBOOT=yes                           # 开机自动启动网卡
DNS=114.114.114.114                  # DNS域名解析服务器的IP地址 可设置一个DNS1、DNS2

#一般只需要加下面的三个配置就行了
IPADDR=192.168.1.22                  # 网卡的IP地址,dhcp协议时不写
GATEWAY=192.168.1.1                  # 默认网关IP地址
NETMASK=255.255.255.0                # 子网掩码,一般是固定的255.255.255.0 

IPV4_FAILURE_FATAL=no                # 不启用IPV4错误检测功能,如果为yes,配置失败时禁用该设备
IPV6INIT=yes                         # 启用IPV6协议
IPV6_AUTOCONF=yes                    # 自动配置IPV6地址
IPV6_DEFROUTE=yes                    # 启用IPV6默认路由
IPV6_FAILURE_FATAL=no                # 不启用IPV6错误检测功能,如果为yes,配置失败时禁用该设备
UUID=sjdfga-asfd-asdf-asdf-f82b      # 网卡设备的UUID唯一标识号
PREFIX=24                            # 子网前缀长度

完成后重启网卡systemctl restart network ,使用route查看配置详情

2.19:ip端口连接检测telnet

telnet命令通常用来远程登录,默认端口是23。远程登录也可以使用ssh等其他可以先通过
所以一般

使用telnet进行端口开放测试,用于测试服务器已经开放的端口(公网或者局域网皆可以,换对应的ip就行了),访问域名网站就是通过访问公网ip进行dns映射后到具体的ip端口上了。telnet通的话就进行入一个小黑窗口

端口连接测试(云服务器安全组放开的端口或者windows中出入站允许通行的端口):
telnet ip port

查看所有被监听/使用的端口(查看不同端口不同协议的不同使用状态)
netstat -an
查看端口被使用的具体情况(端口占用排查):

查看端口是否被占用:netstat -ap|grep port 比如netstat -ap|grep 6379
找到被占用的pid:可以使用sudo lsof -i :post查看被占用的进程pid
查看进程:再通过ps -ef |grep pid查看执行的具体命令

可以使用端口在线扫描工具 端口在线扫描工具
端口检测的需要端口被服务所占用,才能扫描到

2.20:ping网络连接路由跟踪:Tracert

Traceroute是用来侦测由源主机到目的主机所经过的路由的情况的重要工具,也是最简洁的工具,尽管ping可以进行侦测,但是ping受到IP头的限制(IP首部字段最多只能放9个IP地址),ping不能完全记录所经过的路由器,所以才会引入Traceroute。

windwos下:Tracert 
linux:Traceroute

比如:可显示经过多少次路由,那些路由到达目的ip
在这里插入图片描述

2.21:netstat查看系统的网络情况

netstat用于查看系统的网络情况。netstat 是一款命令行工具,主要是用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。除此之外,netstat 命令还可用于显示路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等。
通过它,你可以看到有哪些网络网络连接、端口号在使用,以及哪些进程使用他们。

常用参数

-a	all	展示所有的监听和非监听的套接字
-t	tcp	只展示tcp端口上的套接字
-u	udp	只展示udp端口上的套接字
-l	listening	只展示监听的套接字
-n	numeric	禁用域名解析。以数字化的形式展示地址、端口号
-c	continuous	每秒钟连续打印指定的信息
-p	program	同时展示出每个套接字所属的进程的PID和名称
-e	extend	展示更多的附加信息

使用示例:

显示所有端口网络信息:netsta -an
显示网卡列表:netstat -i
显示路由列表:netstat -rn

netsta -an对应列的意思,会显示监听的ip端口

其中的Local 地址解析:
0.0.0.0表示输入请求可被任一网卡接受,可以从从外网,公网局域网等其他服务器可以访问的地址端口;
127.0.0.1代表其所在的网卡接受(只有localhost或者127.0.0.1连接,不能通过其他服务器连接),一般是lo:网卡;
本机ip(如192.168.*.*)代表eth0网卡(可通过其他服务器连接)
[::]是获取不到本地ip,一般多是docker等虚拟容器中使用的端口

在这里插入图片描述

ProtoRecv-QSend-QLocal AddressForeign AddressState
协议类型。tcp协议,unix是本地内部通信的接受端字节数发送队列本地ip:端口对应在远端的ip:端口。如果是有公网私网,则此处的一般是公网的ip:端口连接状态。LISTEN监听,ESTABLISHED已连接

其中Local Address详解

  • 该列显示对应网络协议通信通过local和 Foreign 对应的网卡地址连接
  • 可使用ifconfig或者ip addr查看所有可用的网卡配置。
    在这里插入图片描述

在此处显示出来的ip端口(端口要被进程使用或者被监听到才能在netstat中显示出来),才可以通过telnet ip port连接,再根据网卡进行连接。

2.22:linux系统的包管理器

在Linux下安装软件包的方式有三种,分别是包管理器安装、源码编译安装
不同的linux操作系统使用了不同的包管理器(rpm,yum,dnf,apt,dpkg)。
常见操作系统
CentOS6、CentOS7、RedHat;
RHEL8、CentOS8;
Ubuntu、Debian;

2.22.1:yum和rpm

操作系统:CentOS6、CentOS7、RedHat
使用的rpm,包括后面基于rpm的yum(基于python写的,所以需要依赖于安装python使用,Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。),一般自带yum的会有个自带的python(一般在/usr/lib/python)

1:yum安装软件原理

在这里插入图片描述

  • yum仓库(也称yum源)用于存放各种rpm的软件包以及软件包之间的依赖关系(repodata目录)
    ① 本地yum源
    所谓本地yum源是指yum仓库在本地,一般是本地系统光盘或镜像文件。
    ② 网络yum源
    所谓网络yum源是指yum仓库在远程(不在本地),需要联网才能安装。
    国内较知名的网络源(aliyun源,163源,sohu源,知名大学开源镜像等)
    国外较知名的网络源(centos源、redhat源、红帽扩展epel源等)
    特定软件相关的网络源(Nginx、MySQL、Zabbix等)
  • 需要安装软件的计算机连接到指定yum仓库来安装软件包
2:yum配置安装

配置安装包括本地源和网络源
yum镜像源的配置文件位于**/etc/yum.repos.d/**路径下面。会读取以repo文件结尾的配置
1:本地源
本地源需要先下载镜像文件再进行挂载,挂载后再到路径下进行配置

配置文件新建local.repo

[root@Heima yum.repos.d]# vim local.repo 
[local]					仓库的名字,不要有特殊符号(自定义)
name=local yum			仓库描述,可以不写
baseurl=file:///mnt		指定yum仓库的路径(重要),file://表示本地仓库
enabled=1					表示启用该仓库,1表示启用;0表示不启用
gpgcheck=0				不用校验仓库里软件包的签名,0表示不校验;1表示校验

2:网络源,如阿里云的
在/etc/yum.repos.d/路径下新建文件name.repo进行配置

3:yum使用命令
# 安装
$ yum install             # 全部安装
$ yum install package1    # 安装指定的安装包package1
$ yum groupinsall group1  # 安装程序组group1
​
# 更新和升级
$ yum update              # 全部更新
$ yum update package1     # 更新指定程序包package1
$ yum check-update        # 检查可更新的程序
$ yum upgrade package1    # 升级指定程序包package1
$ yum groupupdate group1  # 升级程序组group1
​
# 查找显示
$ yum list installed | grep mysql
$ yum list installed mysql*
$ yum info package1     # 显示安装包信息package1
$ yum list              # 显示所有已经安装和可以安装的程序包
$ yum list package1     # 显示指定程序包安装情况package1
$ yum groupinfo group1  # 显示程序组group1信息
​
# 删除程序
$ yum remove/erase package1  # 删除程序包package1
$ yum groupremove group1     # 删除程序组group1
$ yum deplist package1       # 查看程序package1依赖情况
​
# 清除缓存
$ yum clean packages    # 清除缓存目录下的软件包
$ yum clean headers     # 清除缓存目录下的 headers
$ yum clean oldheaders  # 清除缓存目录下旧的 headers
2.22.2:dnf

操作系统:RHEL8、CentOS8
DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。
1:安装dnf

# 依赖
$ yum install -y epel-release

# 安装
$ yum install -y dnf

# 检查
$ dnf –version

dnf命令使用

# 安装软件包
$ dnf install nano
​
# 升级软件包
$ dnf update systemd
​
# 升级所有系统软件包
$ dnf update
$ dnf upgrade
​
# 检查系统软件包的更新
$ dnf check-update
​
# 删除软件包
$ dnf remove nano
$ dnf erase nano
​
# 删除无用孤立的软件包
$ dnf autoremove
​
# 删除缓存的无用软件包
$ dnf clean all
​
# 查看系统中可用的DNF软件库
$ dnf repolist
​
# 查看系统中可用和不可用的所有的DNF软件库
$ dnf repolist all
​
# 列出所有RPM包
$ dnf list
​
# 列出所有安装了的RPM包
$ dnf list installed
​
# 列出所有可供安装的RPM包
$ dnf list available
​
# 搜索软件库中的RPM包
$ dnf search nano
​
# 查找某一文件的提供者
$ dnf provides /bin/bash
​
# 查看软件包详情
$ dnf info nano
​
# 查看所有的软件包组
$ dnf grouplist
​
# 安装一个软件包组
$ dnf groupinstall 'Educational Software'
​
# 升级一个软件包组中的软件包
$ dnf groupupdate 'Educational Software'
​
# 删除一个软件包组
$ dnf groupremove 'Educational Software'
​
# 重新安装特定软件包
$ dnf reinstall nano
​
# 回滚某个特定软件的版本
$ dnf downgrade acpid
​
# 查看DNF命令的执行历史
$ dnf history
​
# 查看所有的DNF命令及其用途
$ dnf help
​
# 获取有关某条命令的使用帮助
$ dnf help clean
2.22.3:apt

操作系统:Ubuntu、Debian
apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件
命令使用

# apt-get(选项)(参数)
$ apt --help
Usage: apt [options] command
比如安装docker: apt install docker.io

apt的镜像源配置:vim /etc/apt/sources.list

2.22.4:dpkg

操作系统Ubuntu、Debian
dpkg 命令是 Debian Linux 系统用来安装、创建和管理软件包的实用工具。

2.23:linux中的wget 下载

Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器

格式: wget [选项]... [URL]...

2.24:linux服务器cpu、内存、硬盘存储配置查看

2.24.1:cpu
lscpu 查看cpu详细信息
输出信息解释如下:
 Architecture: CPU架构类型(如x86_64表示64位)。
 CPU op-mode(s): CPU支持的操作模式(32位和/或64位)。
 Byte Order: 字节序(Little Endian指字节顺序从低到高)。
 CPU(s): 总的CPU核心数量。
 On-line CPU(s) list: 当前在线的CPU核心列表。
 Thread(s) per core: 每个核心的线程数量(如超线程技术)。
 Core(s) per socket: 每个插槽的核心数。

在这里插入图片描述
只查看cpu的型号和核数:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

2.24.2:内存
free -g 查看总内存,已使用内存等
解释如下

真正的free内存: 这部分内存是完全未被使用的内存,不能立即用于其他目的。
buff/cache的内存: 虽然它当前在使用,但可以很快被回收和重新分配。因此,这部分内存也可以被视为可用的一部分。
available内存: 最接近实际可用内存的值,考虑了未使用内存和可以被快速回收的缓存。

查看内存条规格,厂家等详细硬件信息

sudo dmidecode --type memory

在这里插入图片描述

2.24.3:硬盘存储
lsblk -o NAME,MODEL,SIZE,TYPE,MOUNTPOINT,RM

硬盘详情
可以看到硬盘个数,大小,型号(MODEL 显示为 “QEMU HARDDISK”,这通常表示你在虚拟机中,虚拟机可能不提供真实的硬件信息)

2.24.4:网络详情
ip a  查看所有的网卡,网络接口信息
解释:
lo 是本地回环接口,用于系统内部的通信,通常不涉及外部网络。
eth0 是主要的以太网接口,负责与外部网络的连接。它有一个 IPv4 地址和两个 IPv6 地址。
br-** 是一个docker网桥常见桥接接口规则,可能用于网络虚拟化或容器技术,如 Docker,提供一个虚拟网络环境。
这些信息可以帮助你了解网络接口的
vethc**也是docker常见网桥接口命名规则,用于虚拟容器间,或和宿主机间的通信

2.25:linux操作系统部署

1、下载*.iso结尾的操作系统镜像包
国内有很多镜像源:比如
阿里云镜像源
2、找一个空的u盘,使用空u盘制作启动盘。
3、下载并打开rufus软件。选择u盘、选择操作系统的镜像文件点击开始。等待结束即制作成。
rufus中文官网下载
rufus官网下载
在这里插入图片描述

4、u盘插入服务器。将服务器(此处是联想服务器的快捷键,不同品牌可能有差异)开机按f12进入:选择u盘启动(UEFI: Vendor…)一般是最后一个。
5、选择下一步。配置语言,时区,硬盘选择大小,选择图像化桌面安装。选择服务器上的硬盘即可,不要选到自己的u盘了
6、开始安装:配置用户密码即可root password
7、网络配置:一般是一个管理口,两个网卡(网线选择一个插,只支持千兆以上的交换机)。选择桌面上的网络配置,看哪个可以检测到网络,打开网络进行设置
8、打开终端。Ping www.baidu.com
若ping 不通。需要修改dns
vim /etc/resolv.conf 加入 下面的dns配置

nameserver 8.8.8.8
nameserver 8.8.4.4

cat /etc/hosts确保其中包含127.0.0.1 localhost

保存退出重新ping www.baidu.com若还是不行则尝试重启网络
9、修改安装包源。默认的yum或者apt等包管理器的配置都是国外的网站,我们使用就会连接失败。下面以apt为例
备份cp /etc/apt/sources.list /etc/apt/sources.list.bak

vim /etc/apt/sources.list 修改为下面的内容,保存退出即可使用apt

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

3:linux实战

3.1:cpu占用异常

对于服务器常见的内存溢出或者cpu占用异常等情况
先 top -d2 查看服务器的内存,cpu等运行情况,获取异常的pid(进程id)
后 ps -ef | grep pid 查看该进程具体进程名等情况

 执行top -d2
top - 15:32:50 up 98 days,  4:46, 11 users,  load average: 2.43, 2.29, 2.60
Tasks: 642 total,   1 running, 608 sleeping,  33 stopped,   0 zombie
%Cpu(s):  4.2 us,  0.8 sy,  0.0 ni, 94.6 id,  0.1 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 13184451+total,  5904640 free, 74697136 used, 51242732 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 44201856 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                             
 8614 omm       20   0   22.7g  11.8g  31340 S  52.5  9.4   1768:37 java                                                                                
29521 root  20   0 2515920 616460  15168 S  30.7  0.5 498:41.73 java                                                                                
29571 root  20   0 2483980 607488  15172 S  28.2  0.5 493:29.72 java                                                                                
29357 root  20   0 2475536 642208  15176 S  27.2  0.5 493:24.39 java

3.2:shell脚本

shell特殊命令

shell传参			取值用$n。向shell传递参数,脚本外空格隔开即可,n 代表一个数字,1 为执行脚本的第一个参数
echo "字符串"        //向控制台输出字符串
定义变量				your_name="runoob.com" 用双引号
使用变量				只要在变量名前面加美元符号即可$your_name或echo ${your_name}
删除变量				unset variable_name
数组定义				array_name=(value0 value1 value2 value3)
读取数组				${数组名[下标]}

3.3:linux开机服务自启动

在/etc/rc.local文件中添加自启动命令

1:vim /etc/rc.local
2:在里面写入要执行的脚本全路径,如 su -c "/data/start.sh"
3:wq保存退出
4:在/data/start.sh就是自己服务的启动脚本,写入启动命令即可。

3.4:linux服务部署

环境:公网ip(域名解析dns)–内网ip
1、公网ip,防火墙开放。
2、内网进行应用部署
3、nginx配置监听端口,请求转发后端
4、关于有些应用集成了微信支付(只能80端口)。

  • 方案1、则需要开放公网ip的80端口(一般费用较贵,比较麻烦)
  • 方案2、使用内网穿透。

3.5:网络通信原理

3.5.1、概念
公网IP:是唯一的、全球范围内可路由的IP地址,可以通过互联网直接访问云服务器。
公网IP地址通常用于远程访问、网站和应用部署、邮件服务器等需要对外提供服务的场景。
安全配置:配置防火墙、访问控制用于安全控制

内网ip:内网IP则是在云服务器内部或者局域网中使用的IP地址。
在云服务器内部使用,比如nginx负载均衡,数据库连接
3.5.2:ping、telnet、netstat怎么搭配使用

现在有服务器A、B两台
1、两台能互相ping通
2、服务器A启动程序使端口被监听到,并开通防火墙使端口同行
3、启动后的端口就可以在netstat中被监听到了
4、使用服务器B就可以telnet A 端口了。telnet必须经过对应的网卡才能通信

3.6 端口占用

查看端口是否被占用:netstat -ap|grep port 比如netstat -ap|grep 6379
找到被占用的pid:可以使用sudo lsof -i :post查看被占用的进程pid
查看进程:再通过ps -ef |grep pid查看执行的具体命令
根据进程查看启动包的绝对位置:lsof -p pid

其中netstat 执行后的state列下列值表示没有被占用

CLOSED:端口没有正在使用,也没有正在监听连接。
IDLE:端口没有活动,没有正在进行的连接。
WAIT:端口处于等待状态,可能在等待某些事件的触发或条件的满足。
CLOSING:连接正在关闭过程中,但尚未完全关闭。

3.7 逻辑卷和目录的挂载关系

1、查看 /etc/fstab 文件 ,里面有每个逻辑卷挂载了那些目录/,/home,/boot三个目录(未喜显示的其他的/下的目录则都挂载在根目录/下),文件系统的类型

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=12345678-1234-1234-1234-1234567890ab /               xfs     defaults        0 1
UUID=abcdef01-2345-6789-abcd-ef0123456789 /boot           xfs     defaults        0 2
UUID=ghijkl01-2345-6789-ghij-kl0123456789 /boot/efi       vfat    defaults        0 2
UUID=mno0123-4567-89ab-cdef-0123456789ab /home           xfs     defaults        0 2

2、查看df -h /目录查看每个目录的挂载大小
3、再使用mount命令即可查看每个目录使用了哪个逻辑卷。进行过滤出来即可

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐