Linux
未读在进行网络故障排查时,使用合适的工具可以极大地提高效率。本文将介绍三个常用的网络诊断工具:iPerf、nslookup 和 traceroute,并说明它们的使用方法。 iPerf 的使用 iPerf 是一个用于测量TCP和UDP带宽性能的工具。它可以在客户端-服务器模式下运行,测试两端之间的最大带宽。 安装 iPerf 在大多数Linux发行版中,可以通过包管理器安装: 123sudo apt-get install iperf3 # 对于Debian/Ubuntu系统sudo yum install iperf3 # 对于CentOS/RHEL系统sudo dnf install iperf3 # CentOS 9 或 Fedora 基本用法 服务器端:首先,在一台机器上启动iPerf作为服务器。 1iperf3 -s 客户端:然后,在另一台机器上以客户端模式运行iPerf,并指定服务器的IP地址。 1iperf3 -c <服务器IP> 选项 -u:使用UDP而不是默认的TCP。 -b:设置带宽限制(例如,- ...
幽灵进程的困扰 你是否遇到过这样的场景?一个精心编写的Shell脚本明明已经执行完毕或被强制终止后,但通过ps aux查看时,却发现脚本中的后台任务仍在默默运行,甚至时不时向终端输出信息?这种"幽灵进程"不仅会占用系统资源,还可能导致数据不一致或任务重复执行。本文将深入剖析这一问题的根源,并提供多种可靠解决方案。 问题现象:后台任务的"不死之身" 经典示例 123456789101112#!/bin/bashecho "主进程PID: $$"# 后台无限循环while true; do sleep 5 echo "心跳检测: $(date)"done &# 主任务执行sleep 30echo "主流程执行完毕" 执行后观察进程树: 1234$ ps auxf | grep -A2 "test.sh"user 12345 0.0 0.1 113000 3000 pts/0 S+ 14:00 0:00 \_ bash test ...
Golang
未读Golang
未读Go 条件语句 语句 描述 if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。 if…else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。 if 嵌套语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。 switch 语句 switch 语句用于基于不同条件执行不同动作。 select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。 if语句 语法 123if 条件 { 成立后,此代码块执行} 12345if 条件 { 成立后,此代码块执行}else{ 不成立,此代码块执行} 示例: 1234567891011121314151617181920212223242526272829303132333435363738394041424 ...
Golang
未读Go 语言结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": 实例 12345678package mainimport "fmt"func main() { /* 这是我的第一个简单的程序 */ fmt.Println("Hello, World!")} 让我们来看下以上程序的各个部分: 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。 下一行import "fmt"告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行 ...
Golang
未读Go 和 C语言、C++、Python、Java 等一样都是编程语言。学习任何一门编程语言本质上都分3步走: 第一步:安装 解释器 或 编译器。 第二步:学相关编程语言语法,然后写代码。 第三步:用已安装解释器 或 编译器 去运行自己写的代码,这样代码就会去完成我们编写的功能了。 Go是编译型语言,所以我们一般称Go安装是编译器。 Go是开源且跨平台的一门编程语言,所以他支持window、linux、mac操作系统,同时也意味着我们可以在各种系统中安装Go的编译器。 Mac系统 下载Go编译器 https://golang.google.cn/ 点击安装 默认的安装目录:/usr/local/go/ 编译器启动文件:/usr/local/go/bin/go 配置环境PATH 1export PATH=/usr/local/go/bin:$PATH 其他配置 创建一个任意目录 此目录以后放你写的所有go代码。 12345678/Users/jerry/GolangProjects/- bin,通过go install编译时候,生成的可执行文件。- pkg,通过go install编 ...
Docker
未读6bfaebf3e9f67b5202b8d6c1cdcd16f7b5ba01cd0c86fe46b43ae97bedd417e20feb829b798cc4b9d0e0ae0a2e90db4b091a80dbc9582e6d1f08d35e85ecae698ebd980af5418b58ea2e1a99c5c43e8b48263aca1d160bb58bf01d19a9f294966c496a5d3a06cfbd0fb00abdc3120276ccf8d44de2077aa651fb1dba9021de3eb8aef8c75c11b4d0704bff91684d0e816befd67835112f8e5735f04d40db667bdf4523cf4b8749fe3292ce89cf7274c3ccc990a30a382961f48d3a892143c3b8acb93c6989afd971acdb2c69b3884e751270ae588920754e2bb2dac21a8a510e50085f4e5f8103208adc11d60fa41d9ab75d416ea8bad64a2 ...
Docker
未读6bfaebf3e9f67b5202b8d6c1cdcd16f7b5ba01cd0c86fe46b43ae97bedd417e2313b7562fdb676861e211be218dc7c4cdcb67452f544cc95c61631aec63c2593138446b7d22a20f8a0fb4cc9ffca14140318ba799d15cfa1065523d4506dd4c3149e83b399612a81381a8f8c06d19565043ce23a5fe4a2aca5fa4779547a105adce43241ffd68af14702fc894be651f4d819d89b3137abe3f95031bec2e632384eefa06bc683f6ae9c2136d9639cba5e6eff235c750fa787a8f4ed590d21faf92d12122e49900dadc987e0b3acda65c401419a596e3162c1c837d227a8571fc668a54bd3659f910949026ebf0af9f72f6f60f89d8b373b8c3 ...
Docker
未读迁移方式介绍 容器中的数据,如果没有用挂载目录,删除容器后就会丢失数据。 前面我们已经讲解了如何 挂载目录 如果你是用bind mount直接把宿主机的目录挂进去容器,那迁移数据很方便,直接复制目录就好了 如果你是用volume方式挂载的,由于数据是由容器创建和管理的,需要用特殊的方式把数据弄出来。 备份和导入 Volume 的流程 备份: 运行一个 ubuntu 的容器,挂载需要备份的 volume 到容器,并且挂载宿主机目录到容器里的备份目录。 运行 tar 命令把数据压缩为一个文件 把备份文件复制到需要导入的机器 导入: 运行 ubuntu 容器,挂载容器的 volume,并且挂载宿主机备份文件所在目录到容器里 运行 tar 命令解压备份文件到指定目录 备份 MongoDB 数据演示 运行一个 mongodb,创建一个名叫mongo-data的 volume 指向容器的 /data 目录 docker run -p 27018:27017 --name mongo -v mongo-data:/data -d mongo:4.4 运行一个 Ubuntu 的容器,挂载mo ...
Docker
未读使用 Docker 运行后,我们改了项目代码不会立刻生效,需要重新build和run,很是麻烦。 容器里面产生的数据,例如 log 文件,数据库备份文件,容器删除后就丢失了。 目录挂载解决以上问题 几种挂载方式 Docker提供了多种挂载方式,以下是三种主要的挂载方式及其使用方法和推荐: 绑定挂载(Bind Mounts): 使用方式:通过-v或--mount参数将主机上的文件或目录挂载到容器中。例如:docker run -v /host/path:/container/path image_name。 特点:允许容器与主机之间共享文件和目录,对其中一个的更改会直接影响到另一个。 推荐场景:当需要容器与主机之间实时同步文件或目录,或者需要在容器外部直接操作容器内部文件时,绑定挂载是一个很好的选择。 卷挂载(Volume Mounts): 使用方式:通过-v参数将Docker数据卷挂载到容器中。例如:docker run -v volume_name:/container/path image_name。 特点:Docker卷是一个可供容器使用的特殊目录,它绕过了联 ...