ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • Git知识总结
  • nvm使用小结
  • 随笔(持续更新)
    • 2.1 Linux环境下:
    • 2.2 Windows环境下
    • 第一点:要将虚拟机的网络适配器改为桥接模式
    • 第二点:配置内网环境(每个公司的内网网段不一样哦)
    • 第三点:终端连接另一台机器
    • chown 命令详解
    • 8.1 先重定向 ip 地址 GitLab 那里
  • 虚拟机固定ip地址
  • VScode 插件 CodeGeex 使用教程
  • KylinV10 将项目上传至 Github
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • 个人博客代码推送教程
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD项目编译环境配置
  • Shell 脚本学习笔记
  • Git 备忘清单
  • Power_Destory 项目
  • U盘清除工具编译教程
  • Git 创建删除远程分支
  • 开发日常
霜晨月
2023-12-04
目录

随笔(持续更新)

# 随笔(持续更新)

# 1、某个网络有没有连通

要获取某个网站的ip地址,可以通过ping它的域名就可以得到IP地址

例如:我想获取百度的ip地址(Windows环境)

C:\Users\tq>ping www.baidu.com

正在 Ping www.a.shifen.com [14.119.104.189] 具有 32 字节的数据:
来自 14.119.104.189 的回复: 字节=32 时间=6ms TTL=56
来自 14.119.104.189 的回复: 字节=32 时间=6ms TTL=56
来自 14.119.104.189 的回复: 字节=32 时间=6ms TTL=56
来自 14.119.104.189 的回复: 字节=32 时间=7ms TTL=56

14.119.104.189 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 6ms,最长 = 7ms,平均 = 6ms
1
2
3
4
5
6
7
8
9
10
11
12

如上述cmd终端中所示的14.119.104.189就是百度的一个ip地址

所以直接用命令行ping 14.119.104.189也能ping通

而在Linux环境下要检查是否ping通,除了ping 14.119.104.189这个命令,还可以使用telnet但是要加上本机已经开放的端口号这里使用80端口

kylin@kylin:~/桌面$ telnet 14.119.104.189 80
Trying 14.119.104.189...
Connected to 14.119.104.189.
Escape character is '^]'.
GET / HTTP/1.1
Host:14.119.104.189
Connection closed by foreign host.
1
2
3
4
5
6
7

我们发现使用虚拟机telnet百度的ip地址会出现以下画面

1699421819074

我们输入

GET / HTTP/1.1
Host:14.119.104.189
1
2

发送一个HTTP 1.1的请求,发现连接会被百度的服务器所关闭,被对方的防火墙拦截了。但是实际上已经是连通了,只是对方把我们拦截住了。

# 2、如何查看某个端口号是否已开放

# 2.1 Linux环境下:

可以使用以下几种方法:

  1. 使用 netstat 命令: 使用 netstat 命令可以列出当前系统上的网络连接和监听端口。你可以运行以下命令,将端口号替换为你要检查的端口:

    netstat -tuln | grep <端口号>
    #例如,要检查端口 80 是否开放,可以运行:
    netstat -tuln | grep 80
    
    1
    2
    3

    如果该端口处于监听状态,表示它是开放的。

    例如:

    kylin@kylin:~/桌面$ netstat -tuln
    激活Internet连接 (仅服务器)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:8751            0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN     
    tcp6       0      0 :::139                  :::*                    LISTEN     
    tcp6       0      0 ::1:53                  :::*                    LISTEN     
    tcp6       0      0 :::22                   :::*                    LISTEN     
    tcp6       0      0 ::1:631                 :::*                    LISTEN     
    tcp6       0      0 :::445                  :::*                    LISTEN     
    ......
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    根据你的 netstat -tuln 输出,可以看到正在监听的端口以及它们的状态。以下是一些端口和状态的解释:

    • 0.0.0.0:139 和 :::139:这是端口 139,通常用于 NetBIOS 会话服务,用于文件和打印共享。

    • 0.0.0.0:8751:这是一个定制端口(非标准端口),目前不清楚它的具体用途。

    • 127.0.1.1:53 和 127.0.0.1:53:这是端口 53,用于 DNS 服务,但它仅绑定到本地主机(loopback)地址。这表示 DNS 服务仅对本地主机可用。

    • 0.0.0.0:22 和 :::22:这是端口 22,用于 SSH(Secure Shell)服务,用于远程访问和管理主机。

    • 127.0.0.1:631 和 ::1:631:这是端口 631,用于 CUPS(Common Unix Printing System)服务,用于打印服务。

    • 0.0.0.0:445 和 :::445:这是端口 445,通常用于 SMB(Server Message Block)文件共享服务,用于 Windows 文件共享。

    根据输出,端口 80 并没有显示在 netstat 结果中,这意味着在默认的配置下,端口 80 当前没有正在监听的服务。如果希望开放端口 80,需要启动或配置一个 Web 服务器(如 Apache 或 Nginx)来监听端口 80。

  2. 使用 ss 命令: ss 命令与 netstat 类似,也可以用来列出网络连接和监听端口。运行以下命令来检查端口是否开放,将端口号替换为你要检查的端口:

    ss -tuln | grep <端口号>
    
    1

    例如,要检查端口 80 是否开放,可以运行:

    ss -tuln | grep 80
    
    1

    如果端口处于监听状态,它就是开放的。

  3. 使用 telnet 命令: 你可以使用 telnet 命令来尝试连接到特定端口。如果连接成功,表示端口是开放的。运行以下命令,将 <IP地址> 替换为目标 IP 地址,<端口号> 替换为要检查的端口号:

    telnet <IP地址> <端口号>
    
    1

    例如,要检查 IP 地址为 192.168.1.100 的主机上的端口 80 是否开放,可以运行:

    telnet 192.168.1.100 80
    
    1

    如果连接成功,表示端口是开放的。

# 2.2 Windows环境下

可以使用以下方法来查看特定端口是否开放:

  1. 使用 Telnet 命令:

    打开命令提示符(Command Prompt)并运行以下命令,将 <IP地址> 替换为目标 IP 地址,<端口号> 替换为要检查的端口号:

    telnet <IP地址> <端口号>
    
    1

    例如,要检查 IP 地址为 192.168.1.100 的主机上的端口 80 是否开放,可以运行:

    telnet 192.168.1.100 80
    
    1

    如果端口是开放的,你将看到成功的连接消息。如果连接失败,表示端口可能是关闭的或受到防火墙的阻止。

  2. 使用 PowerShell 的 Test-NetConnection 命令:

    打开 PowerShell 并运行以下命令,将 <IP地址> 替换为目标 IP 地址,<端口号> 替换为要检查的端口号:

    Test-NetConnection -ComputerName <IP地址> -Port <端口号>
    
    1

    例如,要检查 IP 地址为 192.168.1.100 的主机上的端口 80 是否开放,可以运行:

    Test-NetConnection -ComputerName 192.168.1.100 -Port 80
    
    1

    该命令将提供关于连接状态的信息,包括是否成功连接到该端口。

这些方法可以帮助你在 Windows 环境中检查特定端口是否开放。请注意,如果你尝试连接到远程主机上的端口,确保你具有适当的权限,并且目标主机处于运行状态。如果连接失败,可能是因为防火墙或网络配置的问题。

# 3、通过内网拉取其他电脑的文件

==笔者这里是kylinV10操作系统==

# 第一点:要将虚拟机的网络适配器改为桥接模式

1701164237011

# 第二点:配置内网环境(每个公司的内网网段不一样哦)

1701164692492

1701165171141

1702374121000

1702261894008

# 第三点:终端连接另一台机器

  1. 在终端输入
ssh 主机名@地址
# 比如我的是
ssh kylin@192.168.0.213
# 然后需要输入你要远程连接的那台主机的虚拟机登陆密码
1
2
3
4

1701165523235

  1. 然后在你想存放从远程拷贝过来的文件的位置打开终端

    1701165716950

输入命令

scp -r 主机名@地址:需要拷贝的文件的路径 .
# 笔者这里是
scp -r kylin@192.168.0.213:/data/king_check/ .
# 注意最后还有一个点的,指的是当前目录
1
2
3
4

# 2023.12.12 更新

# 4、关闭麒麟系统的 kysec 安全控制

不关闭这个 KylinV10SP1 系统的 kysec 安全控制,编译途中会总是需求手动允许,未允许将会报错。

sudo setstatus disable
1

1702447153254

想具体了解的看一看着篇文章https://zhuanlan.zhihu.com/p/349663329

# 5、KylinV10 系统下 VScode 1.85 版本一直闪退问题

以下是笔者的麒麟版本

1702373193967

一开始笔者直接去官网下载 deb 包版本是 November 2023 (version 1.85) 的 code_1.85.0-1701902998_amd64.deb

# 先卸载系统可能自带的或者以前残留的(也可能没有自带)
sudo apt-get --purge remove code
# 安装
sudo dpkg -i code_1.85.0-1701902998_amd64.deb
# 运行打开试试
code
# 很好,画面一闪而过,网上查了N天资料,试了N种办法,无法解决
# 最后还是选择广撒网,安装旧版本的VScode
1
2
3
4
5
6
7
8

其实只要老版本基本都能成功,但是,它不支持 CodeGeeX 插件啊,我要你何用!果断换新一点的版本,最后选择了 code_1.74.3-1673284829_amd64.deb 版本成功!没有闪退啦

这是链接:https://code.visualstudio.com/updates/v1_74

1702373764549

OK,这个 bug 完结撒花

# 6、KylinV10下VScode终端显示“[1] + Done..."如何去除

[1] + Done                       "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-qxfiruw4.fji" 1>"/tmp/Microsoft-MIEngine-Out-moepe4ci.c51"
1

找到launch.json文件

1702974787590

1702974885516

# 可能是这种情况(区别就在gdb的路径而已)
"miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /bin/gdb -q --interpreter=mi"
# 第一种不行就下面这种
"miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi"
# 还是不行就用 which gdb 看看自己的 gdb 在什么路径下
1
2
3
4
5

1702975018204

然后把自己的路径替换进去就行了,也就 是 "miDebuggerArgs" :里面的 /usr/bin/gdb 这里换成你自己的路径

# 2024.1.10更新

# 7、kylinV10SP1 的数据盘下执行脚本需要 sudo 如何更改

正常来说,执行脚本,即使脚本里涉及到需要创建文件,而且是在 root 组里的文件创建文件,也不需要加 sudo,在 root 组里加 sudo 创建文件很危险,容易导致整个目录更改。

所以,我们需要更改脚本所属文件的组别,即可以实现在 root 组的目录里含有 用户组的目录文件,效果如下图

data目录本身属于 root 级别的组别,其子目录,直接创建的话一般都是 root 组别,需要使用命令去更改组别

如何查看某个文件是什么组别:

ls -l
1

1704850185832

1704850030418

具体命令如下:

# 在 data 目录下执行以下命令,这里加 sudo 是因为操作在 root 组别目录下
sudo chown -R kylin:kylin king_check/
1
2
  • 这条命令的意思是用管理员权限把 king_check 目录(包括其下所有子目录和文件)的所有者和所属组都改为 kylin。
  • 其中,chown 是改变文件所有者的命令,“-R”选项代表级联操作,也就是对目标目录以及其所有子目录和文件进行操作;kylin:kylin 表示将所有者和所属组都改为 kylin 用户;king_check/ 则是你要操作的目标目录。

# chown 命令详解

常见的 chown 命令格式如下:

chown [选项]… [所有者][:[组]] 文件…
1

这里的 "所有者" 是用户名,"组" 是组名,"文件" 是待修改所有者或所属组的一个或多个文件。你可以只指定所有者,也可以同时指定所有者和所属组。

常用选项有:

  • -R 或 --recursive :递归改变指定目录及其子目录下的所有文件的所有者和组。这是在处理整个目录时常用的选项。
  • -c 或 --changes :类似 --verbose,但只在发生改变时才会显示详细信息。
  • -v 或 --verbose :详细显示执行过程,这对于排查问题非常有用。
  • -f 或 --silent 或 --quiet :屏蔽大部分错误信息。

例如,如果你想把所有者和所属组都改为 kylin,操作文件 file1.txt,则可以这样操作:

# 如果在用户目录下就不用加 sudo 
chown kylin:kylin file1.txt
1
2

如果你想递归地改变目录 dir1 及其所有子目录和文件的所有者为 tq,则可以这样操作:

chown -R kylin dir1
1

# 8、 从公司 GitLab 拉取部分代码更新项目

# 8.1 先重定向 ip 地址 GitLab 那里

先查看自己的 ip 地址(192.168.0.177),和网卡(ens33)

1705475293502

公司 GitLab 地址是 192.168.6.2

比如,笔者这里想更新 usbdesktop 目录的内容,就在这个目录下进行操作

sudo ifconfig ens33:1 192.168.6.177
git pull
1
2

ifconfig ens33:1 192.168.6.177 表示为这个别名分配 IP 地址 192.168.6.177

1705475769832

# 如果显示地址文件已存在,说明 IP 地址冲突了,换一个试试,比如 103 换成 104
sudo ifconfig ens33:1 192.168.6.178
1
2

1705475675645

上次更新: 2024/6/3 14:54:44
nvm使用小结
虚拟机固定ip地址

← nvm使用小结 虚拟机固定ip地址→

Theme by Vdoing | Copyright © 2023-2024 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式