windows以及linux常用运维命令
cdm目录切换1:ctrl+r进去cmd2:dir:当前目录文件展示,相当于linux的ll3:目录切换磁盘名。例如:或者f:即可进入目录: cd 路径4:查看ip
windows以及linux常用运维命令
文章目录
- windows以及linux常用运维命令
- 1:windows
- 2:linux
- 2.1:磁盘空间:df -h
- 2.2:内存使用:free
- 2.3:目录占用空间大小:du -sh *
- 2.4 cpu分析:top
- 2.5 磁盘io分析:iostat -x 1
- 2.6:端口、进程查看:netstat和ps -ef
- 2.7:时间同步:date
- 2.8:文件查找
- 2.9:防火墙firewalld或者iptables
- 2.10:文件解压缩tar
- 2.11:管道|
- 2.12:网络ifconfig
- 2.13:chmod 修改文件读取权限
- 2.14:获取进程jvm堆栈jstack
- 2.15:service/systemctl操作服务
- 2.16:linux的三剑客grep,awk,sed
- 2.17 磁盘分区fdisk
- 2.18 网卡路由配置
- 2.19:ip端口连接检测telnet
- 2.20:ping网络连接路由跟踪:Tracert
- 2.21:netstat查看系统的网络情况
- 2.22:linux系统的包管理器
- 2.23:linux中的wget 下载
- 2.24:linux服务器cpu、内存、硬盘存储配置查看
- 2.25:linux操作系统部署
- 3:linux实战
1:windows
ctrl+r 输入以下命令实现快捷打开
1.1 cmd使用
1:ctrl+r进去cmd
2:dir:当前目录文件展示,相当于linux的ll
3:目录切换
磁盘名。例如: 或者f:
即可
进入目录: cd path
4:查看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等虚拟容器中使用的端口
Proto | Recv-Q | Send-Q | Local Address | Foreign Address | State |
---|---|---|---|---|---|
协议类型。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命令即可查看每个目录使用了哪个逻辑卷。进行过滤出来即可
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)