全网最详细的VLAN的原理和配置 - 知乎

全网最详细的VLAN的原理和配置 - 知乎

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。

路由协议基础 - 华为

路由协议基础 - 华为

路由协议基础

  • 简介

  • 路由迭代

  • 路由器及路由基本原理

  • 静态路由与动态路由

  • 路由表和FIB表

  • 路由协议的优先级

  • 路由的度量

  • 负载分担与路由备份

  • IP FRR

  • 路由的收敛

  • 缺省路由

  • 不同路由协议的互相引入

  • 自治系统

  • 可变长子网掩码

  • 全0和全1子网

  • 路由策略

  • 策略路由

  • 相关链接

简介

路由(Routing)是数据通信网络中一个基本的概念。路由就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层(即网络层)。我们将具有路由转发功能的设备称为广义上的路由器。

当路由器收到一个IP数据包,路由器会根据目的IP地址在设备上的路由表(Routing Table)中进行查找,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳IP转发出去。路由表中装载着路由器通过各种途径获知的路由条目(Routes)。路由器可通过静态、动态等方式获取路由条目并维护自己的路由表。

什么是路由协议

较小的网络通常可以手动设置路由表(即静态方式),但较大且拥有复杂拓扑的网络可能常常变化,若要手动创建、维护路由表是不切实际的。因此,人们希望路由器可以动态的(即动态方式)按照某种协议来自动创建维护路由表以解决这个问题,从而使得网络能够近自主的适应变化,避免故障。这些协议被称为路由协议。

路由协议的分类

路由协议可以有多种分类方式,常见的分类方式如下:

按照路由协议使用的算法分:

  • 距离矢量路由协议,例如:RIP(Routing Information Protocol)

  • 链路状态路由协议,例如:OSPF(Open Shortest Path First)

按照路由协议作用的区域划分:

  • 内部网关协议(Interior Gateway Protocol),在单一的自治系统中交换路由信息,例如:OSPF(Open Shortest Path First)

  • 外部网关协议(Exterior Gateway Protocol),在不同的自治系统中交换路由信息,例如:BGP(Border Gateway Protocol)

常见的路由协议有哪些

目前常用的路由协议有:

  • OSPF(Open Shortest Path First)

  • RIP(Routing Information Protocol)

  • IS-IS(Intermediate System to Intermediate System)

  • BGP(Border Gateway Protocol)

其中,最多被使用到的路由协议为OSPF和BGP。

路由器及路由基本原理

在因特网中,网络连接设备用来控制网络流量和保证网络数据传输质量。常见的网络连接设备有集线器(Hub)、网桥(Bridge)、交换机(Switch)和路由器(Router)。这些设备的基本原理类似,下面就以路由器为例来介绍一下设备的基本原理。

路由器是一种典型的网络连接设备,用来进行路由选择和报文转发。路由器根据收到报文的目的地址选择一条合适的路径(包含一个或多个路由器的网络),然后将报文传送到下一个路由器,路径终端的路由器负责将报文送交目的主机。

路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时,可以实现负载分担,缓解网络压力;当多条路由的协议优先级与路由度量不同时,可以构成路由备份,提高网络的可靠性。

路由迭代

路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由迭代。BGP路由、静态路由和UNR路由的下一跳都有可能不是直连的,都需要进行路由迭代。

例如,BGP路由的下一跳一般是非直连的对端loopback地址,不能指导转发,需要进行迭代。即根据以BGP学习到的下一跳为目的地址在IP路由表中查找,当找到一条具有直连的下一跳、出接口信息的路由后(一般为一条IGP路由),将其下一跳、出接口信息填入这条BGP路由的IP路由表中并生成对应的FIB表项。

对于BGP私网路由,需要隧道进行转发,路由的下一跳一般是远端PE的Loopback地址,不能指导转发,也需要进行路由迭代,即在隧道列表中查找到达该Loopback地址的隧道,将该隧道信息填入路由表中并生成对应的FIB表项。

静态路由与动态路由

静态路由与动态路由的区别

路由协议是路由器之间维护路由表的规则,用于发现路由,生成路由表,并指导报文转发。依据来源的不同,路由可以分为三类:

  • 通过链路层协议发现的路由称为直连路由。

  • 通过网络管理员手动配置的路由称为静态路由。

  • 通过动态路由协议发现的路由称为动态路由。

静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。

动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源和系统资源。

动态路由的分类

对动态路由协议的分类可以采用以下不同标准:

根据作用范围不同,路由协议可分为:

  • 内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括RIP、OSPF和IS-IS。

  • 外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。

根据使用算法不同,路由协议可分为:

  • 距离矢量协议(Distance-Vector Protocol):包括RIP和BGP。其中,BGP也被称为路径矢量协议(Path-Vector Protocol)。

  • 链路状态协议(Link-State Protocol):包括OSPF和IS-IS。

以上两种算法的主要区别在于发现路由和计算路由的方法不同。

linux c程序员副业赚钱攻略

2024新加坡市场程序员低投入高回报副业创意 - LinuxGuide 2024新加坡 2024新加坡LinuxGuide

2025新加坡市场程序员低投入高回报副业创意 - LinuxGuide 2025新加坡 2025新加坡LinuxGuide

2025年高级运维工程师的四大副业方向经典案例及实操步骤 - LinuxGuideLinuxGuide

基于你的技能组合(Linux、C语言、网络编程、系统编程),以下是一些边际成本低且能快速启动的副业方向,结合技术特性与商业化潜力:

  1. 开发高性能系统工具方向:针对开发者或运维人员痛点,开发Linux环境下的效率工具

案例:

  • • 网络调试工具:封装tcpdump/strace为交互式CLI工具(如增强版网络包分析器)

  • • 系统监控工具:基于eBPF开发实时资源监控工具(替代htop,支持自定义指标)

  • • 日志分析器:用C语言实现高性能日志过滤/统计工具(替代grep+awk组合)

  • 变现方式:

  • • 开源核心功能,通过GitHub Sponsors或企业定制版收费

  • • 在Gumroad销售预编译二进制包(针对非技术用户)

技术栈:C + libbpf(eBPF)、ncurses(终端UI)

  1. 嵌入式/Linux驱动开发方向:为小众硬件或开发板提供软件支持
  • 案例:

  • • IoT设备驱动:为树莓派扩展模块(如传感器、工业控制器)编写Linux内核驱动

  • • 性能优化:为ARM架构设备(如路由器)优化TCP/IP协议栈,减少延迟

  • • 旧设备兼容层:为老旧工业设备开发Linux兼容驱动(企业刚需)

  • 变现方式:

  • • 通过Upwork接单(硬件厂商常外包驱动开发)

  • • 在Tindie(硬件极客平台)销售配套固件

  1. 网络协议栈优化与中间件方向:解决高并发、低延迟场景的通信问题
  • 案例:

  • • 自定义负载均衡器:基于epoll实现轻量级反向代理(对标Nginx但更轻量)

  • • 游戏服务器框架:用C语言开发低延迟UDP通信库(适用于实时对战游戏)

  • • 金融交易中间件:优化FIX协议实现,用于高频交易场景

  • 变现方式:

  • • 提供商业许可证(如“个人免费,企业收费”)

  • • 在AWS Marketplace上架付费AMI镜像(预装优化中间件)

  1. 安全攻防工具开发方向:利用C语言底层控制能力开发安全工具
  • 案例:

  • • 漏洞利用POC:编写CVE漏洞验证工具(售卖给安全团队)

  • • Rootkit检测工具:基于Linux内核模块开发隐蔽后门扫描器

  • • 网络蜜罐:模拟脆弱服务诱捕攻击者,记录攻击行为

  • 变现方式:

  • • 在HackerOne等平台提供私有化部署版本

  • • 通过Patreon订阅发布高级攻击技术分析报告

  1. 开源项目商业化方向:从开源项目延伸出企业级需求
  • 案例:

  • • Linux性能调优工具包:集成perf、ftrace等工具的可视化界面

  • • 协议解析库:开源基础版,销售协议模糊测试(Fuzzing)插件

  • • POSIX兼容层:为嵌入式RTOS实现Linux API兼容层(如兼容pthreads)

  • 变现模式:

  • • Open Core模式(核心功能开源,企业功能收费)

  • • 提供商业技术支持合同(按小时计费)

  1. 技术内容创作方向:将深度技术经验转化为付费内容
  • 案例:

  • • 《Linux系统编程黑魔法》电子书:揭秘/proc调优、内存屏障等高级技巧

  • • GDB高级调试实战课程:演示如何用C语言调试内核死锁

  • • 付费技术咨询:在Codementor平台提供1对1 Linux内核问题指导

  • 工具链: • 用Pandoc将Markdown笔记转为PDF/EPUB • 通过Leanpub或自建Hugo站点销售

  1. 自动化运维工具方向:解决服务器运维中的重复性工作
  • 案例: • 批量部署工具:用C语言实现SSH集群管理工具(替代Ansible部分功能) • 日志压缩传输工具:基于zstd算法开发高性能日志收集器 • 内核热补丁工具:在不重启系统的前提下替换内核模块

  • 变现方式: • 在运维社区(如Server Fault)提供付费支持 • 为企业提供定制化开发服务

  1. 边缘计算服务方向:为边缘设备开发轻量级服务
  • 案例: • MQTT协议栈优化:为物联网网关优化消息吞吐量 • 边缘AI推理框架:用C语言实现TensorFlow Lite替代方案 • 轻量级容器运行时:基于runc开发低内存占用的容器引擎

  • 变现方式: • 与硬件厂商分成(每预装一份软件收取授权费) • 在Balena等边缘计算平台发布付费应用

执行策略

快速验证:用2周时间开发一个最小可行产品(如netstat增强版工具),发布到GitHub和Hacker News测试反馈

精准定价:• 个人开发者:$9-$49/许可证

• 企业客户:$500+/定制需求

自动化交付:• 用Stripe集成自动发放许可证密钥• 通过GitHub Actions自动构建多平台二进制包

技术营销:• 在Reddit的r/linux_programming发技术解析文章引流 • 用C语言为开源项目(如Redis)提交PR,增加技术背书

避坑指南

  • 避免过度工程化:优先用静态链接减少依赖(如musl libc编译)

  • 注意GPL传染性:若用GPL库开发,需明确许可证对商业化的影响

  • 聚焦利基市场:例如专攻工业控制系统(ICS)的Linux兼容层,而非通用领域

你的技能在底层开发领域有极高壁垒,建议从开发工具+开源组合拳切入,既能建立技术影响力,又能通过企业服务实现高溢价变现。

Linux常用命令之信息显示

Linux常用命令之信息显示

本篇继续分享Linux中常用命令。主要分享Linux系统的信息显示和文件搜索相关的命令。

Linux常用命令之信息显示,掌握关键指令提升效率。详细解析系统信息查看方法,适合初学者与进阶用户。Linux常用命令 信息显示, Linux系统信息显示命令, Linux常用命令大全, Linux文件搜索命令, Linux uname 命令详解, Linux 查看系统信息命令, Linux 命令行信息显示, Linux 系统命令教程, Linux 常用命令之信息查看, Linux 命令行技巧

uname命令——显示系统信息

选项:

-a显示系统所有相关的信息-m显示计算机硬件架构-n显示主机名称-r显示内核发行版本号-s显示内核名称-v显示内核版本-o显示操作系统名称

常用操作:

[root@localhost ~]# uname -a //显示系统所有相关的信息Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux[root@localhost ~]# uname -r //显示内核发行版本3.10.0-1160.el7.x86_64[root@localhost ~]# uname -v#1 SMP Mon Oct 19 16:18:59 UTC 2020

hostname命令——显示或设置系统的主机名

相关文件:

/etc/hosts :配置域名的文件

/etc/hostname :centos7修改主机名的文件

/etc/sysconfig/network :centos6修改主机名的文件

常用操作:

[root@localhost ~]# hostname liyongbin //临时设置文件名,重启后失效[root@localhost ~]# hostname //查看主机名liyongbin[root@localhost ~]# hostnamectl set-hostname rudy //永久修改文件名,重启不失效,也可以直接修改/etc/hostname文件[root@localhost ~]# hostname rudy[root@localhost ~]# hostname -I //显示主机的所有IP地址,不依赖DNS解析,有多少块网卡就有多少个IP地址10.13.2.13

dmesg命令——系统启动异常诊断

dmesg用于显示内核环形缓冲区(kernel-ring buffer)的内容。保存在/var/log目录下

[root@localhost ~]# dmesg |grep -i error //查看系统启动过程中的错误信息[ 0.955079] BERT: Boot Error Record Table support is disabled. Enable it by using bert_enable as kernel parameter.

du命令——显示目录或文件所占用的磁盘空间

选项:

-s显示总计容量-h以人为可读的形式显示,以K,M,G为单位-m以MB为单位–exclude=<目录或文件》忽略指定的目录或文件

常用操作:

[root@localhost ~]# du -sh * //查看当前目录所有子目录和文件的大小0 anaconda-ks.cfg4.0K md5.log4.0K test.txt[root@localhost ~]# du -sh md5.log //查看hosts文件大小4.0K md5.log

date命令——显示和设置时间

选项:

-d显示字符串所指的日期与时间-s指定当前系统时间-u打印或设置协调世界时(UTC)

时间格式:

%F显示年月日%T显示时分秒%Y显示年份%m显示月份%d显示一个月的第几天%H显示时%M显示分%S显示秒%w显示星期几

常用操作

[root@localhost ~]# date //显示当前时间2023年 10月 22日 星期日 15:29:40 CST[root@localhost ~]# date +%F //显示年月日2023-10-22[root@localhost ~]# date +%T //显示时分秒15:33:35[root@localhost ~]# date -s “2024-10-22 15:30:00” //设置指定时间2024年 10月 22日 星期二 15:30:00 CST[root@localhost ~]# date 2024年 10月 22日 星期二 15:30:06 CST[root@localhost ~]# date +%F -d “100day” //显示100天后的时间2024-01-30[root@localhost ~]# date +%F -d “-100day” //显示100天前的时间2023-07-14[root@localhost ~]# date +”%Y-%m-%d %H:%M:%S” //指定格式显示当前时间2023-10-22 15:37:24

echo命令——显示一行文本

[root@localhost ~]# echo $PATH //打印环境变量/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin[root@localhost ~]# echo manager > test.sh //将打印字符重定向到文本[root@localhost ~]# cat test.sh manage[root@localhost ~]# echo manager |passwd –stdin root //修改密码更改用户 root 的密码 。passwd:所有的身份验证令牌已经成功更新。

watch命令——监视命令执行情况

watch 命令以周期性的方式执行给定的命令,并全屏显示执行结果。watch 可以帮助监测一个命令的运行结果,省得我们一遍遍地手动运行。

选项:

-n指定监测间隔,单位秒。默认 2s,不能低于 0.1s-d高亮显示最近两次更新之后的差异

[root@localhost ~]# watch -n 1 -d netstat -lntup //每隔 1s 高亮显示网络连接数的变化情况。[root@localhost ~]# watch uptime //每2s显示负载情况Ctrl+C退出watch命令界面

which命令——显示命令的全路径

[root@localhost ~]# which date //查看date命令的全路径/usr/bin/date[root@localhost ~]# which which //如果设置了别名,那么使用which功能还将会显示别名alias which=’alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde’ /usr/bin/alias /usr/bin/which[root@localhost ~]# which shutdown poweroff //同时显示多个/usr/sbin/shutdown/usr/sbin/poweroff

详解/bin,/sbin,/usr/sbin,/usr/bin 目录区别、

/sbin 和/bin

  1. 从命令功能区分

/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统

/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到

  1. 从用户权限角度区分

/sbin目录下的命令通常只有管理员才可以运行

/bin下的命令管理员和一般的用户都可以使用。

/bin是系统的一些指令,主要放置一些系统的必备执行命令

比如:

1
cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等

/sbin一般是指超级用户指令。主要放置一些系统管理的必备程式

比如

1
dump、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod ,lsmod、reboot、shutdown 等。

/usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档

比如:

1
c++、g++、gcc、make wget 等

/usr/sbin 放置一些用户安装的系统管理的必备程式

例如

1
dhcpd、httpd、imap、、inetd、named、netconfig、samba、sendmail、squid、swap、tcpdump 等

这些命令的目录都可以通过which命令来查看路径,无需记住其路径。

https://www.calcguide.tech/2025/08/26/linux开源软件路线图/

https://www.calcguide.tech/2025/05/11/linux常用命令之信息显示/

Linux常用命令之文件处理

本篇分享一下文件处理的相关常用命令。

cat命令——查看文件内容

语法:

1
cat   选项   文件

选项:

-n 输出行号-b输出行号,并忽略空白行,统计的是非空白行数

常用操作:

[root@localhost ~]# cat /etc/passwd //查看文件内容root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@localhost ~]# cat >> /etc/fstab << EOF //追加内容到文件尾部> /dev/sdb /data xfs defaults 0 0> EOF[root@localhost ~]# cat /dev/null > file.txt //清空文件内容

more命令——分页显示文件内容

cat命令是查看所有内容,对于内容较长的文件无法一屏显示所有内容,所以就需要分页显示内容,more命令就有这种分页显示功能。

常用操作:

1
&#91;root@localhost ~]# more /var/log/messages      //分页查看

常用按键:

空格键查看下一页回车键查看下一行b键查看前一页q键退出查看页面/file查看包含file的内容

less命令——分页显示文件内容

less命令和more命令的功能相似,都是分页显示文件内容,但是less命令在交互界面有更灵活的操作

1
&#91;root@localhost ~]# less /var/log/messages      //分页查看

空格键查看下一页回车键查看下一行b键查看前一页q键退出查看页面/字符串向下查看包含file的内容?字符串向上搜索内容n向后查找下一个匹配的文本g移动到第一行G移动到最后一行

总结下more 和 less的区别:

  • less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示

  • less不必读整个文件,加载速度会比more更快

  • less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容

head命令——显示文件内容头部

默认显示文件的前10行。

常用操作:

[root@localhost ~]# head /etc/passwd //默认显示文件10行[root@localhost ~]# head -n 20 /etc/passwd  //显示文件的前20行

tail命令——显示文件内容尾部

默认显示文件最后10行。

选项:

-f实时输出文件变化后追加的数据-n <行数>指定显示行数

常用操作

[root@localhost ~]# tail -n 20 /var/log/messages //显示文件的最后20行[root@localhost ~]# tail -f /var/log/messages //动态追踪日志信息

cut命令——从文件中提取一段文字并输出

选项:

-c以字符为单位进行分割-d自定义分隔符,默认以tab键为分隔符-f指定显示哪个区域,常和-d使用

常用操作:

cut -c 2-10 test.txt   //剪切每行2-10位置的字符cut -d :  -f 1  /etc/passwd     //指定以:作为分割符,-f指定显示第一个区域

split命令——分割文件

选项:

-l指定分割后文件的最大行数-b-d以数字为后缀

常用操作:

split -l  10  test.txt   new_        //每10行分割一次,分割的文件名以new_开头split -l  10  -d  test.txt   new_     //参数-d使用数字后缀split -b 500M -d   test.txt   new_    //每500M分割一次

paste命令——合并文件

-d :指定合并的分隔符,默认是TAB

sort命令——文件排序

选项:

-n依照数值大小进行排序-r倒序排序-t指定分隔符-k按指定区间排序

常用操作:

sort -n test.txt //按照数值大小进行排序sort -nr test.txt //sort默认按照从小到大排序,使用-r选项就可以实现从大到小sort -t “ “ -k2 test.txt //以空格为分隔符,按照第二列进行排序

uniq命令——去除重复行

选项:

-c去除重复行,并计算每行出现的次数

常用操作:

uniq -c test.txt sort -n test.txt | uniq -c //结合sort使用,先排序后去重

wc命令——统计文件的行数、单词或字节数

选项:

-l统计行数-c统计字节数-w统计单词数-L打印最长行的长度

常用操作:

[root@localhost ~]# wc /etc/passwd   //不加任何参数会打印出行数,单词数据,字节数等三个参数20 28 901 /etc/passwd[root@localhost ~]# cat /var/log/messages |wc -l   //通过管道符来统计文件的行数

tee命令——多重定向

用于将数据重定向到文件,同时提供一份重定向数据的副本输出到屏幕上

常用操作:

1
ls   | tee -a  ls.txt     //将输出内容记录到ls.txt文件中,并输出到屏幕上

iconv命令——转换文件的编码格式

语法:

1
iconv   选项   原编码    新编码      输入文件

选项

-f 编码A从编码A转换-t 编码B转变成编码B-l显示系统支持的编码-o将输出输入到

常用操作:

1
iconv -f gbk -t utf-8   test.txt     # 将test.txt文档的编码从gbk改为utf-8

diff:比较两个文件的不同

vimdiff:VIM可视化比较工具  

vim:文本编辑器,后续会在单独篇章详细讲解

Linux常用命令之文件备份和压缩

Linux常用命令之文件备份和压缩

本篇继续分享Linux中常用命令。主要分享Linux系统的文件备份和压缩相关的命令。掌握Linux文件备份与压缩技巧,轻松管理数据!本指南深入解析常用命令,助您高效完成任务。立即学习,提升技能!

tar命令——压缩备份

tar命令是linux非常使用频率非常高的一个命令。打包是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

选项:

-c创建一个新的tar压缩包-x解压tar包-t 查看压缩包的内容-C指定解压路径-f指定要处理的文件名-j使用bzip2方式进行压缩或解压-z使用gzip方式进行压缩或解压–exclude=PATHERN打包时排除不需要处理的文件或目录-v显示详细过程

常用操作:

1、 解压缩包到指定位置[root@localhost ~]# tar -zxvf jdk-8u202-linux-x64.tar.gz -C /data [root@localhost ~]# ll /data总用量 0drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_2022、 压缩文件[root@localhost data]# tar -zcvf jdk8.tar.gz jdk1.8.0_202/[root@localhost data]# ll总用量 189500drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202-rw-r–r– 1 root root 194045097 10月 22 20:26 jdk8.tar.gz3、 查看压缩包内容[root@localhost data]# tar -tf jdk8.tar.gz

gzip命令——压缩或解压文件

gzip命令用于将一个大的文件通过压缩算法变成一个小的文件。gzip命令不能直接压缩目录,因此目录需要先用tar打包成一个文件,然后tar再调用gzip进行压缩。

选项:

-d解开压缩文件-v显示执行过程-c将内容输出到标准输出,不改变原始文件

常用操作:

1、压缩文件,默认不保留源文件,将源文件做成.gz压缩包[root@localhost ~]# gzip hosts [root@localhost ~]# ll总用量 8-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r–r– 1 root root 94 10月 22 20:36 hosts.gzdrwxr-xr-x 2 root root 6 10月 22 20:36 test2、解开压缩包[root@localhost ~]# gzip -d hosts.gz [root@localhost ~]# ll总用量 8-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r–r– 1 root root 177 10月 22 20:36 hostsdrwxr-xr-x 2 root root 6 10月 22 20:36 test3、压缩目录(压缩失败,只能压缩文件,不可压缩目录)[root@localhost ~]# gzip test/gzip: test/ is a directory – ignored4、保留源文件压缩[root@localhost ~]# gzip -c hosts >hosts.gz[root@localhost ~]# ll总用量 12-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r–r– 1 root root 177 10月 22 20:36 hosts-rw-r–r– 1 root root 94 10月 22 20:44 hosts.gz

zip命令——打包和压缩文件

zip压缩格式是Windows与Linux等多平台通用的压缩格式。和gzip命令相比,zip命令压缩文件不仅不会删除源文件,而且还可以压缩目录。

选项:

-r递归压缩目录和文件-x压缩文件时排除某个文件

常用操作:

1、压缩文件[root@localhost ~]# cp /etc/services .[root@localhost ~]# ll总用量 660-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r–r– 1 root root 670293 10月 22 20:50 services[root@localhost ~]# zip services.zip ./services adding: services (deflated 80%)[root@localhost ~]# ll总用量 796-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r–r– 1 root root 670293 10月 22 20:50 services-rw-r–r– 1 root root 136227 10月 22 20:50 services.zip2、压缩目录[root@localhost data]# zip jdk.zip ./jdk1.8.0_202/ //没有压缩updating: jdk1.8.0_202/ (stored 0%[root@localhost data]# zip -r jdk.zip ./jdk1.8.0_202/ [root@localhost data]# ll总用量 192112drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202-rw-r–r– 1 root root 196719566 10月 22 20:53 jdk.zip

unzip命令——解压zip命令压缩的文件

选项:

-d指定解压的路径-v显示解压详细过程,默认选项-o解压时不提示是否覆盖文件

常用操作:

1、默认解压到当前目录[root@localhost data]# unzip jdk.zip[root@localhost data]# ll总用量 192112drwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_202-rw-r–r– 1 root root 196719566 10月 22 20:53 jdk.zip2、解压到指定目录[root@localhost data]# unzip -d /root jdk.zip //解压到/root目录[root@localhost data]# ll /root/总用量 4-rw——- 1 root root 1506 3月 13 2022 anaconda-ks.cfgdrwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_2023、再次解压不提示,直接覆盖[root@localhost data]# unzip -d /root jdk.zip //再次执行会提示是否覆盖Archive: jdk.zipreplace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: error: invalid response [{ENTER}]replace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^C[root@localhost data]#[root@localhost data]# unzip -o -d /root jdk.zip //添加-o操作后就不会询问是否覆盖。

scp命令——远程复制文件

scp使用的是ssh协议。每次都是全量复制。适合第一次复制。

选项:

-r递归复制-p保留文件原始属性-P 端口号指定传输的端口号-q不显示传输进度

常用操作:

1、将本机的文件复制到远端主机,需要知道远端的服务器密码 scp -rp jdk1.8.0_202/ root@10.10.10.3:/data root是远端用户,也可以是其他普通用户10.10.10.3是远端IP地址/data是远端服务器的目录,要写绝对路径2、将远端主机文件复制到本机。[root@localhost data]# scp root@10.10.10.3:/etc/services /dataroot@10.10.10.3‘s password: //输入远端主机密码services 100% 655KB 64.4MB/s 00:00 3、指定端口复制,有些不是常规端口时就需要指定[root@localhost data]# scp -P 22 root@10.10.10.3:/etc/hosts /dataroot@10.10.10.3‘s password: hosts 100% 158 110.7KB/s 00:00

rsync命令——文件同步工具

rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。

选项:

-z传输时进行压缩-a以递归方式传输文件,并保持原有属性,相当于-rtopgDI-r递归复制传输-t保持文件的时间信息-o保留文件的属主信息-p保留文件的权限-g保留文件的属组信息-D保留设备文件信息-l保留软链接–exclude-from=file排除指定的文件不需要传输–delete使目标目录内容和源保持目录一直,删除不同的文件

三种模式:

1、本地模式:用于本机传输文件,相当于cp命令

rsync 选项 源文件 目标文件[root@localhost ~]# rsync -av /etc/hosts /tmpsending incremental file listhostssent 267 bytes received 35 bytes 604.00 bytes/sectotal size is 177 speedup is 0.59[root@localhost ~]# ll /tmp总用量 4-rw-r–r– 1 root root 177 5月 6 2022 hosts

2、远程访问模式:将文件传输给远端主机或拉去远端主机的文件

-

拉取:rsync 选项 用户@主机:源文件 目标文件推送:rsync 选项 源文件 用户@主机:目标文件1、拉取远程文件[root@localhost ~]# rsync -avz root@10.10.10.3:/etc/hostname ./ 2、拉取远程目录下的所有文件[root@localhost ~]# rsync -avz root@10.10.10.3:/root/ /data/ 3、本地文件推送给远程目录[root@localhost ~]# rsync -avz /data root@10.10.10.3:/tmp/

3、守护进程模式:需要安装客户端

守护进程模式后期使用单独的篇章来详细解读。先了解一些基本用法。

拉取:rsync 选项 用户@主机::源文件 目标文件rsync 选项 rsync://用户@主机:端口/源文件 目标文件示例:rsync -avz rsync_backup@10.10.10.3::backup/ /mnt/ –password-file=/etc/rsync.password推送:rsync 选项 源文件 用户@主机::目标文件rsync 选项 源文件 rsync://用户@主机:端口/源文件示例: rsync -avz /mnt/ rsync_backup@10.10.10.3::backup/ –password-file=/etc/rsync.password

https://www.calcguide.tech/2025/05/11/linux常用命令之文件备份和压缩/

SSH免密登录配置指南与运维应用全景解析

Linux的150个常用命令汇总,运维大神不一定全部掌握!

Linux常用命令之文件管理

Linux常用命令之文件管理,掌握运维必备技能,提升系统操作效率。对于开发人员来说Linux系统命令行是必须掌握的技能,Linux中一切皆文件,本次分享的是文件管理相关的命令。

以下就是本次主要讲解的命令。

1、ls命令

语法:

1
ls  &#91;选项] &#91;文件]

选项:

“-a” :显示所有文件和目录(.开头的隐藏文件也会列出)”-l” :显示当前目录下文件的详细信息。”-d” :显示目录本身,一般结合-l使用”-i” :显示文件时,同时显示文件的索引节点”-r” :倒序显示文件”-h” :以人们可读的方式显示文件大小,比如1k,200M,2G等)

常用操作:

ls //查看当前目录下的所有目录和文件ls -a //查看当前目录下所有的目录和文件(包含隐藏文件)ls -l // 列表查看当前目录下所有目录和文件,与“ll”效果一样ls / // 查看指定目录下的所有目录和文件

2、cp命令

语法:

1
cp  &#91;选项]   源文件   目标文件

选项:

“-r” :递归复制,用于复制目录”-i” :询问,如果目标文件已经存在,则会询问是否覆盖。默认设置”-d” :如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接”-p”:复制后目标文件保留源文件的属性(包括所有者,所属组,权限和时间)”-a” :相当于-d、-p、-r选项的集合。

常用操作:

cp /tmp/tool /opt //将/tmp/tool目录复制到/opt目录下cp /tmp/tool/* /opt //将/tmp/tool目录下的文件复制到/opt目录下cp -r /tmp/tool/ /opt //将/tmp/tool目录下的文件及目录复制到/opt目录下

3、pwd命令

显示当前目录

4、mkdir命令

语法:

1
mkdir  &#91;选项]  目录..

选项:

1
"-p"  :创建多级目录

常用操作:

mkdir dir // 创建目录dirmkdir -p dir/dir1/dir2 //创建多级目录

5、mv命令

语法:

1
mv   源文件/目录    目标文件/目录

常用操作:

mv file1 file2 //移动file1到file2中,如果不存在file2,相当于重命名file1,同样适用于目录。mv /opt/* /tmp //将/opt目录下所有文件移动到/tmp目录下

6、rm命令

语法:

1
rm &#91;选项]   文件/目录

选项:

“-i” :删除之前需要确定”-r” :递归删除,用于删除目录”-f” :强制删除,不需要确认

常用操作:

rm file1 //删除当前目录下的文件rm -f file1 //强制删除文件rm -rf dir //强制删除dir目录及dir目录里的所有目录和文件rm -rf * //删除当前目录的所有目录和文件,慎用rm -rf /* //慎用,跑路命令。

7、ln命令

语法:

1
ln  &#91;选项]   源文件   链接文件

选项:

“-s” :创建符号链接”-f” :强制执行,覆盖现有文件

常用操作:

ln test.txt hard_link //创建一个硬链接,删除了源文件,链接文件仍然可用ln -s test.txt soft_link // 创建一个软链接,删除了源文件,链接文件不可用,相当于window的快捷方式。

8、chmod命令

语法:

1
chmod  &#91;选项]  权限  文件/目录

选项:

1
"-R"    :递归处理指定目录以及其子目录下的所有文件

常用操作:

chmod +777 /tmp # 给特定目录添加777权限chmod +x /tmp # 给/tmp目录添加执行权限

以下是权限对应列表

9、chown命令

语法:

1
chown  &#91;选项]  属主权限.组权限  文件/目录

选项:

1
"-R"   :递归更改目录的用户和用户组

常用操作:

1
chown -R rudy.rudy   /tmp       # 将/tmp的属主和属组修改为rudy权限。

10、chattr命令

语法:

1
chattr &#91;-RV]&#91;-v<版本编号>]&#91;+/-/=<属性>]&#91;文件或目录...]

选项:

-R 递归处理,将指定目录下的所有文件及子目录一并处理。-V 显示指令执行过程。  +<属性> 开启文件或目录的该项属性。  -<属性> 关闭文件或目录的该项属性。  =<属性> 指定文件或目录的该项属性。属性:a:让文件或目录仅供附加用途。c:将文件或目录压缩后存放。i:不得任意更动文件或目录。u:预防意外删除。

常用操作:

[root@localhost ~]# chattr +a /etc/passwd //只能向文件中添加数据,而不能删除,多用于服务器日志文件安全 。 -a 可去掉该属性[root@localhost ~]# chattr +i /etc/passwd //设定文件不能被删除、改名、写入或新增内容 -i 可去掉该属性

11、lsattr命令

常用操作:

[root@localhost ~]# lsattr /etc/passwd //查看文件扩展属性—-ia———- /etc/passwd

12、xargs命令

作用:将标准输入转换成命令行参数

选项:

“-n” :指定每行的最大参数量”-i” :以{}替代前面的结果

常用操作:

xargs -n 3 < test.txt //每行最多输出三个字符xargs :所有输出都变为一行find / -name “.log” | xargs -i mv {} dir1 //将以.log结尾的所有文件移动到dir1目录下find / -name “.log” | xargs rm -rf //将以.log结尾的所有文件删除。等同于find / -name “*.log” -exec rm -rf {} ;

其他文件处理命令:

cd:切换目录

cd - //切换到上次操作目录cd ../.. //切换到上两级目录

tree:以树形结构显示目录下的内容

该命令最小化安装时默认不安装,需要自行安装:yum install -y treetree -d //只显示目录不是显示文件tree -L 1 / //只列出根目录下第一层的结构

touch:创建空文件或改变文件的时间戳属性

rename:重命名文件

1
rename  .jpg  .txt  *.jpg      //将所有文件的.jpg替换为.txt

file:显示文件的类型

[root@localhost ~]# file anaconda-ks.cfg anaconda-ks.cfg: ASCII text

Linux文件类型说明:

  • 普通文件类型:Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]

  • 目录文件: 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]

  • 块设备文件 :就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]

  • 字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]

  • 套接字文件:这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型

  • 管道文件:FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]

  • 链接文件:分类硬链接和软连接,类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]

md5sum:计算和校验文件的MD5值

选项: -c //从指定文件中读取MD5校验值,并进行校验 [root@localhost ~]# md5sum anaconda-ks.cfg //输出两部分,第一部分是md5值,后面是文件名d862f17d783eaf1abcf4f376b5c85527 anaconda-ks.cfg [root@localhost ~]# md5sum anaconda-ks.cfg >md5.log //生成校验文件[root@localhost ~]# md5sum -c md5.log //使用-c参数检查,结果OK表示文件没有变化anaconda-ks.cfg: OK

umask:显示或设置权限掩码

可以通过/etc/profile和/etc/bashrc文件来修改

Linux常用命令之用户管理

本篇继续分享Linux中常用命令。主要分享Linux系统的用户管理相关的命令。

useradd命令——创建用户

原理:在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中的所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。

选项:

-r创建用户时不创建家目录-d指定创建时的家目录位置,默认创建在/home目录,在/etc/default/useradd可修改默认目录。-M 不建立家目录,虚拟用户一般需要建立家目录。-s用户登录使用的shell,默认是/bin/bash,可在/etc/default/useradd修改默认值-g指定用户组,这个用户组必须提前存在。-G指定多个附属组,可成为不同组的成员,多个使用逗号(,)隔开。-u uid指定用户的ID值。

常用操作:

// 创建用户的同时还会创建一个与用户名相同的用户组useradd  test  // 创建用户rudy,属于mysql组,uid为1002 useradd -g mysql  -u 1002  rudy   // 创建禁止登陆的用户 ,/sbin/nologin表示禁止登录useradd -M -s  /sbin/nologin   rudy

usermod命令——修改用户信息

参数大部分和useradd相同,usermod是修改用户,useradd是增加用户。

选项:

-d 家目录修改用户的家目录-s shell修改用户登录的shell-G group修改此用户为多个不同组的成员-l修改用户的账号名称

常用操作:

// 修改家目录和uidusermod -d /dataroot/rudy -u 1002 rudy// 将rudy用户名称更改为zhangsanusermod -l zhangsan  rudy// 将rudy添加到这些组里面usermod -G public,wangluo rudy

userdel命令——删除用户及该用户相关的文件

选项:

-f强制删除用户,即使用户已登录-r删除用户的同时,删除与用户相关的所有文件

常用操作

// 不加参数删除用户,家目录还存在userdel rudy// 加-r参数删除用户,连同家目录一起删除userdel -r rudy// 强制删除用户userdel -l -r  rudy

在实际工作中尽量不要使用userdel删除用户,而是采用在/etc/passwd里注释用户的方法,防止用户误删带来的系统及服务不正常。

groupadd命令——创建新的用户组

groupadd命令的用途一般不大,因为useradd命令在创建用户的同时还会创建与用户同名的用户组。

常用操作:

添加GID为1020的rudy组groupadd -g 1020  rudy

groupdel命令——删除用户组

groupdel不能删除还有用户归属的主用户组。

常用操作:

1
groupdel rudy

passwd命令——修改用户密码

说明:

root用户可以修改任何用户的密码,普通用户只能修改自身的密码。

root用户修改密码时,如果不符合系统密码规则,则给出警告信息,但密码设置仍然生效。普通用户修改密码时,如果使用弱密码,则给出告警信息,且修改无效。

选项:

-k为密码已经过期的用户更新有效期–stdin 从标准输入读取密码字符串-l锁定用户-d 删除用户密码,是密码为空

常用操作:

1、修改自身密码[root@localhost ~]# passwd root更改用户 root 的密码 。新的 密码:重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。2、一条命令修改密码,但不安全。[root@localhost ~]# echo manager |passwd –stdin root更改用户 root 的密码 。passwd:所有的身份验证令牌已经成功更新

实战:批量创建10个用户user01-user10,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道来实现。

-

1
&#91;root@localhost tmp]# echo user{01..10}| tr " " "\n"|sed -r 's#(.*)#useradd \1; pass=$((RANDOM+10000000)); echo "$pass" |passwd --stdin  \1; echo -e "\1 \t  `echo "$pass"`">/tmp/rudyli.txt#g'|bash

su命令——切换用户

将当前用户切换到指定用户或者以指定用户的身份执行命令或程序

选项:

-,-l,–login切换用户的同时,将用户的家目录、系统环境等重新按切换后的用户初始化-c向Shell传递单个命令

操作:

只切换用户,不切换家目录su liyb # 切换家目录,su - root# 让系统每一次开机时能自动以普通用户启动指定的服务脚本cat /etc/rc.localsu - liyb -c ‘/bin/sh /data/scripts/install.sh’

注意:

1、普通用户切换到root用户,需要输入密码

2、root切换到普通用户不需要密码

visudo命令——编辑sudoers文件

-c手动执行语法检查

操作:

visudo # 等价于vi /etc/sudoers编辑

大约100行下面添加需要提升root权限的普通用户名及对应权限

root ALL=(ALL) ALLliyb ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdelrudyli ALL=(ALL) NOPASSWD:ALL

检查语法

visudo -c/etc/sudoers:解析正确

待授权的用户或组机器=(授权角色)可以执行的命令userMACHING=COMMANDSliybALL=(ALL)/usr/sbin/useradd, /usr/sbin/userdel

sudo命令——以另一个用户身份执行命令

可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限。普通用户不需要知道root用户密码。这个授权在visudo配置管理。

who命令——显示已登录用户信息

[root@harbor ~]# who -a 系统引导 2023-12-25 09:55 运行级别 3 2023-12-25 09:55登录 tty1 2023-12-25 10:03 2894 id=tty1root + pts/0 2023-12-29 11:36 . 94994 (172.16.1.203)

last命令——显示用户登录列表

last命令能够从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表

[root@harbor ~]# lastroot pts/0 172.16.1.203 Fri Dec 29 11:36 still logged inroot pts/0 172.16.1.203 Thu Dec 28 13:58 - 14:09 (00:11)root pts/0 172.16.1.203 Thu Dec 28 13:06 - 13:11 (00:05)root pts/0 172.16.1.203 Thu Dec 28 11:47 - 12:07 (00:19)root pts/0 172.16.1.203 Thu Dec 28 10:23 - 10:38 (00:14)root pts/0 172.16.1.203 Thu Dec 28 10:12 - 10:17 (00:05)

lastb命令——显示用户登录失败的记录

lastb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录,用于发现系统登录异常

[root@harbor ~]# lastbrudyli pts/0 Fri Dec 29 12:46 - 12:46 (00:00)Administ ssh:notty 172.16.1.203 Thu Dec 28 13:58 - 13:58 (00:00)Administ ssh:notty 172.16.1.203 Thu Dec 28 11:47 - 11:47 (00:00)Administ ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)Administ ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)(unknown tty1 Sat May 6 17:12 - 17:12 (00:00)btmp begins Sat May 6 17:12:19 2023

lastlog命令:显示所有用户的最近登录记录

从日志文件/var/log/lastlog中读取信息,并显示所有用户的最近登录记录,用于查看系统是否有异常登录

[root@harbor ~]# lastlog用户名 端口 来自 最后登陆时间root pts/0 172.16.1.203 五 12月 29 11:36:08 +0800 2023bin 从未登录过daemon 从未登录过adm 从未登录过lp 从未登录过sync 从未登录过shutdown 从未登录过halt 从未登录过

Linux常用命令之磁盘管理

本篇继续分享Linux中常用命令。主要分享Linux系统的磁盘管理相关的命令。

fdisk命令——磁盘分区工具

fdisk是Linux系统下常用的分区工具。受mbr分区表的限制,fdisk工具只能给小于2TB的磁盘划分分区。如果大于2TB,无法识别超过2TB那部分容量。如果磁盘大于2TB最好使用parted分区工具。

选项:

-l显示所有磁盘分区的信息

交互式命令:

m帮助n新建一个分区d删除一个分区t更改分区格式l查看分区类型p打印分区表w保存退出q不保存退出

操作:

[root@localhost ~]# fdisk -l磁盘 /dev/vda:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x000a4dca 设备 Boot Start End Blocks Id System/dev/vda1 2048 6143 2048 83 Linux/dev/vda2 * 6144 4200447 2097152 83 Linux/dev/vda3 4200448 209715199 102757376 83 Linux磁盘 /dev/vdb:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节[root@localhost ~]# fdisk /dev/vdc欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x5eb87e6d 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):m命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition’s system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)命令(输入 m 获取帮助):n # 新增加一个分区Partition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): p # 新增一个主分区分区号 (1-4,默认 1):1起始 扇区 (2048-209715199,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+10G分区 1 已设置为 Linux 类型,大小设为 10 GiB命令(输入 m 获取帮助):p # 打印分区表磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d 设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 83 Linux命令(输入 m 获取帮助):t # 更换分区格式已选择分区 1Hex 代码(输入 L 列出所有代码):LHex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):p # 查看磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d 设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 8e Linux LVM命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。[root@localhost ~]# lsblk # 查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 9.5G 0 romvda 253:0 0 100G 0 disk├─vda1 253:1 0 2M 0 part├─vda2 253:2 0 2G 0 part /boot└─vda3 253:3 0 98G 0 part /vdb 253:16 0 200G 0 disk /datavdc 253:32 0 100G 0 disk└─vdc1 253:33 0 10G 0 part

注意:操作时一定要谨慎,如果不小心操作错了,直接使用交互指令q不保存退出,这样先前的操作就会无效。如果输入w则会保存所有修改。

partprobe命令——更新内核的硬盘分区表信息

更新内核中的硬盘分区表数据,主要用于磁盘分区发生变化时。对磁盘分区进行修改后,找不到新分区,可以使用partprobe命令来刷新一下。

-

1
&#91;root@localhost ~]# partprobe /dev/vdc

parted命令——磁盘分区工具

parted命令用于对大于2TB的磁盘进行分区,需要将磁盘转换为GPT格式。

选项:

-l 显示所有磁盘分区的信息-h查看帮助

操作:

1、查看帮助

[root@localhost ~]# parted /dev/vdcGNU Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type ‘help’ to view a list of commands.(parted) h align-check TYPE N # 检查磁盘分区 help [COMMAND] # 查看帮助 mklabel,mktable LABEL-TYPE # 创建分区表 mkpart PART-TYPE [FS-TYPE] START END # 创建分区 name NUMBER NAME # 为分区命名 print [devices|free|list,all|NUMBER] # 显示分区表 quit # 退出 resizepart NUMBER END # 重设分区大小 rm NUMBER # 删除编号为NUMBER的分区 select DEVICE # 选择要编辑的分区 set NUMBER FLAG STATE # 改变分区的标志 toggle [NUMBER [FLAG]] # 设置分区标志 unit UNIT # 设置默认单位 version # 显示版本号(parted)

2、创建新分区

根据/dev/vdc磁盘创建新分区[root@localhost ~]# parted /dev/vdc GNU Parted 3.1使用 /dev/vdc(parted) mklabel gpt # 为vdc创建GPT分区表警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?是/Yes/否/No? yes(parted) mkpart primary 0 5G # 创建主分区,大小为5G警告: The resulting partition is not properly aligned for best performance.忽略/Ignore/放弃/Cancel? Ignore(parted) p # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary(parted) mkpart logical 5001 10G # 创建逻辑分区,大小为5G(parted) p # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical(parted) q # 退出信息: You may need to update /etc/fstab.

查看分区情况,可见vdc1和vdc2已经创建出来

[root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 9.5G 0 rom /mntvda 253:0 0 100G 0 disk├─vda1 253:1 0 2M 0 part├─vda2 253:2 0 2G 0 part /boot└─vda3 253:3 0 98G 0 part /vdb 253:16 0 200G 0 disk /datavdc 253:32 0 100G 0 disk├─vdc1 253:33 0 4.7G 0 part└─vdc2 253:34 0 4.7G 0 part

3、删除分区

[root@localhost ~]# parted /dev/vdcGNU Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type ‘help’ to view a list of commands.(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical(parted) rm 2 # 删除第二个分区(parted) rm 1 # 删除第一个分区(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name 标志(parted) q信息: You may need to update /etc/fstab.[root@localhost ~]# lsblk # 再次查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 9.5G 0 rom /mntvda 253:0 0 100G 0 disk├─vda1 253:1 0 2M 0 part├─vda2 253:2 0 2G 0 part /boot└─vda3 253:3 0 98G 0 part /vdb 253:16 0 200G 0 disk /datavdc 253:32 0 100G 0 disk

4、非交互方式创建分区

直接使用一条命令创建一个分区。

[root@localhost ~]# parted /dev/vdc mklabel gpt yes mkpart primary 0 10G Ignore p警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?警告: The resulting partition is not properly aligned for best performance.Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name 标志 1 17.4kB 10.0GB 10000MB primary信息: You may need to update /etc/fstab.

mkfs命令——创建文件系统

mkfs命令用于在指定的设备(或磁盘分区)上创建格式化并创建文件系统。创建分区后并不能使用分区,需要对分区进行格式化为特定文件系统后才能用来存取数据。

选项:

-t 指定要创建的文件系统类型-c 创建文件系统时检查磁盘坏块

mkfs只是一个前端命令,它通过-t参数指定文件系统类型后会调用相应的命令mkfs.fstype。因此可以直接使用mkfs.ext4这个命令创建ext4文件系统。

操作:

将/dev/vdc1格式化为xfs文件系统[root@localhost ~]# mkfs.xfs /dev/vdc1# 将/dev/vdc2格式化为ext4系统[root@localhost ~]# mkfs -t ext4 /dev/vdc2

resize2fs命令——调整ext2/ext3/ext4文件系统大小

resize2fs命令用于扩容或收缩未挂载的ext2/ext3/ext4文件系统。在Linux 2.6或更高版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容后的分区使用。

1
&#91;root@localhost ~]# resize2fs /dev/centos/root           # 扩容文件系统,ext4文件系统格式

xfs_growfs命令——调整xfs文件系统的系统大小

xfs_growfs针对的是使用xfs格式化的的文件系统,ext4文件系统使用resize2fs调整文件系统大小。

操作:

直接扩展整块磁盘,需要在管理平台增加容量后操作[root@localhost ~]# xfs_growfs /dev/vdb # 扩展逻辑卷创建的文件系统,需要先使用lvextend扩展逻辑卷大小[root@localhost ~]# xfs_growfs /dev/centos/root

fsck命令——检查并修复Linux文件系统

fsck命令用于检查并修复文件系统中的错误。需要注意的是:文件系统必须是卸载状态,否则可能会出现故障;不要对正常的分区使用fsck,fsck会根据/etc/fstab进行文件系统检查。

选项:

-a自动修复文件系统,不询问任何问题-s按顺序检查多个文件系统-t指定要检查的分区的文件系统类型-A检查文件/etc/fstab内所列的全部文件系统

只有当系统开机显示磁盘错误时,才需要执行。

1
&#91;root@localhost ~]# fsck -A

dd命令——转换或复制文件

选项:

if=<输入文件>从指定文件中读取,input fileof=<输出文件>写入到指定文件,output filebs=<字节数>一次读写的字节数,block sizecout=<块数>指定复制的block块的个数obs=<字节数>一次性写的字节,默认是512ibs=<字节数>一次读的字节,默认512

操作:

生成任意大小的测试文件(/dev/zero是一个特殊块设备,相当什么都没有)[root@localhost ~]# dd if=/dev/zero of=datatest bs=1M,# 制作Linux系统的ISO镜像[root@localhost ~]# dd if=/dev/cdrom of=CentOS7.9.iso# 删除分区/dev/vdb1分区的数据,谨慎操作![root@localhost ~]# dd if=/dev/zero of=/dev/vdb1

monut命令——挂载文件系统

一个分区被格式化后并不可以直接使用,还需要将其挂载到指定的挂载点上才可以被访问。

选项:

-l显示已经挂载的设备相关信息-a挂载/etc/fstab文件中的配置信息-t指定挂载的文件系统类型。如nfs,iso9660(光盘)-o后接一些挂载选项。

操作:

显示系统的挂载信息[root@localhost ~]# mount/dev/vda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)nfsd on /proc/fs/nfsd type nfsd (rw,relatime)/dev/vdb on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)/dev/vda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)# 挂载光盘光驱,前提是有光驱镜像[root@localhost ~]# mount /dev/cdrom /media[root@localhost ~]# ll /media# 挂载nfs文件系统[root@localhost ~]# mount -t nfs -o nodev,noatime 172.16.1.27:/data /data永久挂载要写入到/etc/fstab中[root@localhost ~]# cat >> /etc/fstab <<EOF172.16.1.27:/data /data nfs nodev,noatime 0 0EOF# 文件系统只读时,需要重新挂载根目录为读写模式。[root@localhost ~]# mount -o remount,rw /# 确认fstab文件中配置正确,避免重启失败[root@localhost ~]# mount -a

永久性挂载的磁盘都需要写入/etc/fstab文件中,若这个文件配置有错误会导致系统重启无法正常进入系统。可以使用mount -a进行挂载测试,如果能挂载成功,重启一般会正常。

umount命令——卸载已挂载的文件系统

umount卸载可以接挂载点目录,也可以接设备文件。

选项

-f强制卸载-l将文件系统从文件系统层次结构中分离出来,并清除我对文件系统的所有引用

操作:

卸载挂载点/media[root@localhost ~]# umount /media# 强制删除[root@localhost ~]# cd /media/[root@localhost media]# umount /media # 如果处于挂载点中,则无法卸载,可以退出挂载点再卸载或强制卸载umount: /media:目标忙。 (有些情况下通过 lsof(8) 或 fuser(1) 可以 找到有关使用该设备的进程的有用信息)[root@localhost media]# umount -lf /media

sync命令——刷新文件系统缓存区

sync命令会将内存缓冲区的数据强制刷新到磁盘

操作:# 手动将数据从缓冲区刷到磁盘中并重启系统syncsyncreboot

写SSD磁盘性能不佳怎么排查 - LinuxGuideLinuxGuide

Linux磁盘管理命令-xfs 管理命令 - LinuxGuideLinuxGuide

SSD性能优化策略 - LinuxGuideLinuxGuide

SSD性能优化策略 - LinuxGuideLinuxGuide

Linux常用命令之网络管理

本篇继续分享Linux中常用命令。主要分享Linux系统的网络管理相关的命令。

ifconfig命令——配置或显示网络接口信息

ifconfig命令用于配置网卡IP地址等网络参数或显示当前网络的接口状态,需要以root用户的身份来执行。

如果命令不存在则安装

1
yum install -y net-tools

使用ifconfig命令配置网卡信息仅会临时生效,重启网络或服务器就会失效。

选项:

up激活指定的网络接口down 关闭指定的网络接口hw设置网卡的MAC地址

操作:

查看所有已启动的网卡信息 ifconfig# 查看eth0网卡信息ifconfig eth0# 查看所有网卡信息(包括未开启的)ifconfig -a# 启动eth1网卡ifconfig eth1 up# 关闭eth1网卡ifconfig eth1 down# 为网卡配置信息ifconfig eth0 172.16.1.30# 为网卡配置多个IPifconfig eth0:0 172.16.1.28 netmask 255.255.255.0  upifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.1.27 netmask 255.255.255.0 broadcast 172.16.1.255 inet6 fe80::ffaa:cae4:9cc0:3250 prefixlen 64 scopeid 0x20 inet6 fe80::eb49:7220:1bb9:df4f prefixlen 64 scopeid 0x20 inet6 fe80::21b6:b00:310a:19d3 prefixlen 64 scopeid 0x20 ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet) RX packets 5035132 bytes 609739285 (581.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2070630 bytes 384120838 (366.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.1.28 netmask 255.255.255.0 broadcast 172.16.1.255 ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet)

网卡的配置文件在/etc/sysconfig/network-scriprts/目录下。eth0对应的是ifcfg-eth0文件。

ifup命令——激活网络接口

ifup命令可读取配置文件/etc/sysconfig/network和/etc/sysconfig/network-scripts/ifcfg-对网络接口进行相应的操作。

操作:

激活eth0网络接口,等同于ifconfig eth0 upifup eth0   # 查看eth0网络接口状态ifconfig eth0

ifdown命令——用于禁用指定的网络接口。

操作:

关闭eth0网卡接口,该操作导致断开SSH连接,谨慎操作ifdown eth0# 重启网卡ifdown eth0 && ifup eth0

route命令——管理路由表

route命令可以为服务器设置静态路由。

选项:

-n查看路由信息-ee显示更详细的路由信息add添加路由信息del删除路由信息-net到一个网络的路由,后面接网络号地址-host到一个主机的路由,后面接一个主机地址netmask添加子网掩码gw指定网关dev If指定由哪个网卡出去,如eth0

操作:

查看系统路由信息route -n # 删除路由信息route del default   //删除默认网关route del default gw 172.16.1.254 route del default  gw 172.16.1.254 dev eth0# 添加路由信息route add default gw 172.16.1.254route add default gw 172.16.1.254 dev eth0# 配置去往某一网络或网段的路由172网段主机访问192网段的主机。route add -net 192.168.4.0/24 gw 172.16.1.254route add -net 192.168.4.0/24 netmask 255.255.255.0 dev eth1删除路由route del -net 192.168.4.0/24 dev eth1# 配置去往某个主机的路由route add -host 172.16.2.250 dev eth0删除路由:route del -host 172.16.2.250 dev eth0

以上配置在重启网络时都会失效需要写到配置中。

需要写到/etc/sysconfig/network-scripts/route-eth*或/etc/rc.local文件中,重启会重新加载。

1
192.168.4.0/24 via 172.16.1.254

arp命令——管理系统的arp缓存

arp是地址解析协议,主要是根据IP地址获取物理地址。arp可以显示缓存区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址的对应关系。

选项:

-n显示IP地址对应的MAC地址信息-s <主机>指定主机的IP地址与MAC地址的静态映射-d <主机>删除制定主机的arp条目

操作:

显示arp缓存区的所有条目[root@localhost ~]# arp -nAddress HWtype HWaddress Flags Mask Iface172.16.1.20 ether 28:6e:d4:8a:02:c0 C eth0172.16.1.25 ether 28:6e:d4:8a:15:61 C eth0172.18.0.9 ether 02:42:ac:12:00:09 C br-7f15bb750845172.16.1.254 (incomplete) eth0172.16.1.22 ether 28:6e:d4:89:e0:09 C eth0172.16.1.24 ether 28:6e:d4:88:eb:3d C eth0# 查看指定主机的arp条目arp -n 172.16.1.27  # 绑定IP地址和MAC地址(临时,)[root@localhost ~]# arp -s 172.16.1.20 28:6e:d4:8a:02:c1[root@localhost ~]# arp -nAddress HWtype HWaddress Flags Mask Iface172.16.1.20 ether 28:6e:d4:8a:02:c1 CM eth0# 删除静态ARP绑定[root@localhost ~]# arp -d 172.16.1.20

ip命令——网络配置工具

ip命令用于显示或管理linux系统的路由、网络设备、策略路由和隧道。

语法格式:

1
ip  &#91;选项]  &#91;网络对象]  &#91;操作命令]

操作:

查看网卡信息[root@localhost ~]# ip a# 关闭网卡[root@localhost ~]# ip link set eth0 down# 开启网卡[root@localhost ~]# ip link set eth0 up# 添加IP地址[root@localhost ~]# ip a add 172.16.1.31/24 dev eth0# 删除IP地址[root@localhost ~]# ip a del 172.16.1.31/24 dev eth0# 查看路由[root@localhost ~]# ip routedefault via 172.16.1.254 dev eth0 proto static metric 100172.16.1.0/24 dev eth0 proto kernel scope link src 172.16.1.27 metric 100172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1172.18.0.0/16 dev br-7f15bb750845 proto kernel scope link src 172.18.0.1

注意:

1、删除网卡的主IP地址,同时会删除该网卡的所有IP地址。

2、删除网卡的辅助IP地址,不会影响该网卡的其他IP地址。

3、ip命令集成了ifconfig和route的功能,逐渐替代这两个IP

netstat命令——查看网络端口信息

用于显示本机网络的连接状态、运行端口和路由表等信息。

选项:

-n显示数字形式的地址而不是去解析主机-a显示处于监听状态和非监听状态的socket信息-c <秒数>每隔几秒刷新一次-l仅显示处于监听状态的网络状态-t显示所有的TCP连接情况-u显示所有的UDP连接情况-p显示socket所属进程的PID和名称

常用组合:

列出所有处于监听状态的端口信息[root@localhost ~]# netstat -lntup# 列出所有处于监听和非监听状态的端口信息[root@localhost ~]# netstat -antup

重要的两个状态:

1、ESTABLISHED:表示处于连接的状态,认为有一个EASTABLISHED是一个服务的并发连接。

2、LISTEN:socket正在监听连接请求。

ss命令——查看网络端口信息

ss命令和netstat功能类似,但它能显示更多更详细的网络连接信息,比netstat更快更高效

安装ss命令:

1
yum -y install iproute

列出所有处于监听状态的端口信息[root@localhost ~]# ss -lntup# 列出所有处于监听和非监听状态的端口信息[root@localhost ~]# ss -antup

ping命令——测试主机之间网络的连通性

ping命令发出请求后,远端主机网络联通的话,就会收到回应消息。可判断主机是否正常或两者的网络是否可以互通。

选项:

-c <次数>指定发送ICMP报文的次数,默认一直发送报文-i <时间>发送报文的间隔时间,默认是1s-t <生存期>设置发送的数据包其生存期TTL值

操作:

直接ping域名[root@localhost ~]# ping harbor.liyb.com# 测试IP地址[root@localhost ~]# ping 172.16.1.27# 每次ping间隔2秒,一共5次。[root@localhost ~]# ping -t 2 -c 5 172.16.1.27PING 172.16.1.27 (172.16.1.27) 56(84) bytes of data.64 bytes from 172.16.1.27: icmp_seq=1 ttl=64 time=0.029 ms64 bytes from 172.16.1.27: icmp_seq=2 ttl=64 time=0.032 ms64 bytes from 172.16.1.27: icmp_seq=3 ttl=64 time=0.032 ms64 bytes from 172.16.1.27: icmp_seq=4 ttl=64 time=0.028 ms64 bytes from 172.16.1.27: icmp_seq=5 ttl=64 time=0.026 ms— 172.16.1.27 ping statistics —5 packets transmitted, 5 received, 0% packet loss, time 3999msrtt min/avg/max/mdev = 0.026/0.029/0.032/0.005 ms

注意:如果不加-c参数会一直ping下去,这时需要使用Ctrl + c来终止。

traceroute命令——追踪数据传输路由状态

traceroute命令和window下的tracert命令类似,用于显示网络数据包传输到指定主机的路径信息

安装traceroute:

1
yum install -y traceroute

操作:

-

1
traceroute www.baidu.com

注意:

1、有时会看到一些星号。可能是因为网络设备封堵或丢弃了返回的信息,所以得不到返回信息。

2、traceroute默认使用UDP协议(受网络影响性能不太好),可以使用-I参数来调用icmp协议。

telnet命令——远程登录主机或检测远程端口

telnet命令使用23端口进行远程,但是使用明文传输,安全性不好。目前远程连接一般使用安全性更好的SSH服务。现在telnet的主要应用场景是判断远端服务器的端口是否开放。

操作:

端口放通的现象[root@localhost ~]# telnet 172.16.1.20 22Trying 172.16.1.20…Connected to 172.16.1.20.Escape character is ‘^]’.SSH-2.0-OpenSSH_7.4 # 看到这种情况,代表22端口是放通的。# 端口无法连接的现象[root@localhost ~]# telnet 172.16.1.20 3306Trying 172.16.1.20…telnet: connect to address 172.16.1.20: Connection refused

ssh命令——远程登录主机

ssh命令可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。

语法格式:

1
ssh  &#91;选项]  &#91;用户]@&#91;主机名或IP地址]  &#91;远程执行的命令]

选项:

-p指定ssh登录端口,默认是22端口-t强制分配伪终端-v调试模式

操作:

首次连接会提示,再次连接就不会提示,输入正确密码就可以远程[root@k8s-master03 ~]# ssh -p 22 root@172.16.1.20The authenticity of host ‘172.16.1.20 (172.16.1.20)’ can’t be established.ECDSA key fingerprint is SHA256:ANt+WLWZpyB8YH14ROYVMTS68fEcEqoIrdVAi2FtwvU.ECDSA key fingerprint is MD5:d0:f1:19:71:df:cb:39:b3:b2:cb:9a:83:39:f2:05:cb.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘172.16.1.20’ (ECDSA) to the list of known hosts.root@172.16.1.20‘s password:# 远程执行命令[root@localhost ~]# ssh root@172.16.1.20 “free -h”root@172.16.1.20‘s password: # 输入正常密码 total used free shared buff/cache availableMem: 15G 1.4G 2.4G 743M 11G 13GSwap: 0B 0B 0B# 调试[root@localhost ~]# ssh -v root@172.16.1.20

wget命令——命令行下载工具

wget命令用于从网络上下载某些资料,可以直接从网络上下载自己的所需要的文件

选项:

-o将文件的执行结果写入文件中-O指定保存的文件名后下载文件-c断点续传–limit-rate限速下载

操作:

下载单个文件,直接后面加链接wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.98/src/apache-tomcat-8.5.98-src.tar.gz# 指定保存的文件后下载wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 限速下载wget –limit-rate=5k -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

nslookup命令——域名解析查询工具

安装:yum -y install bind-utils

语法:

1
nslookup &#91;选项]  &#91;域名/IP]  &#91;DNS服务器]

操作

查看DNS配置文件[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManagersearch liyb.comnameserver 172.16.1.27# 交互模式[root@localhost ~]# nslookup> server 172.16.1.27 # 指定DNS服务器Default server: 172.16.1.27Address: 172.16.1.27#53> harbor.liyb.com # 解析域名Server: 172.16.1.27Address: 172.16.1.27#53Name: harbor.liyb.comAddress: 172.16.1.26# 非交互模式[root@localhost ~]# nslookup harbor.liyb.comServer: 172.16.1.27Address: 172.16.1.27#53Name: harbor.liyb.comAddress: 172.16.1.26

dig命令——域名查询工具

dig命令用于测试域名系统的工作是否正常

选项:

@<DNS的IP地址>指定DNS服务器来进行解析-t指定要查询的DNS数据类型+trace从根域名开始跟踪查询结果+short仅输出最精简的CNAME和A记录

操作:

查询指定域名的IP地址[root@localhost ~]# dig harbor.liyb.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> harbor.liyb.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6359;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;harbor.liyb.com. IN A;; ANSWER SECTION:harbor.liyb.com. 86400 IN A 172.16.1.26;; AUTHORITY SECTION:liyb.com. 86400 IN NS www.liyb.com.;; ADDITIONAL SECTION:www.liyb.com. 86400 IN A 172.16.1.27;; Query time: 0 msec;; SERVER: 172.16.1.27#53(172.16.1.27);; WHEN: 五 1月 26 12:04:32 CST 2024;; MSG SIZE rcvd: 94# 指定DNS服务器[root@localhost ~]# dig @172.16.1.27 harbor.liyb.com# 精简输出[root@localhost ~]# dig +short harbor.liyb.com172.16.1.26

tcpdump命令——监听网络流量

tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。

选项:

-c <数量>接收到指定的数据包数目后退出-i <网络接口>指定要监听的网络接口-n不进行DNS解析,加快显示速度-nn不将协议和端口数字等转换成名字-q以更快速输出的方式运行。-v显示命令执行的详细信息

操作:

不加参数将启动监视第一个网络接口所流过的数据包[root@localhost ~]# tcpdump# 指定网络接口进行监听[root@localhost ~]# tcpdump -i eth0# 指定监听主机的数据包[root@localhost ~]# tcpdump -n host 172.16.1.26# 监听指定端口的数据包[root@localhost ~]# tcpdump -nn port 22常见的协议关键字有ip、arp、icmp、tcp、udp等类型。# 使用tcpdump对tcp数据进行抓包[root@localhost ~]# tcpdump tcp dst port 80 or src 172.16.1.26 -i eth0 -n

以下是TCP状态机制:

图片来自网络

本篇Linux常用命令分析完结!