linux
文章平均质量分 59
路边闲人2
混迹于csdn,不求显山露水,只求共享知识。
展开
-
用gost建立私密的内网穿透网络
vps提供中转,为client 2 提供到client 1的访问, 之前的RTCP的方法会在VPS上有公开的监听端口,此方法不需要。此时,可以在client 2上用ssh 访问client 1网络中的192.168.1.1的ssh服务。本文介绍的是升级版内容,客户端也需要gost才能连接到内网。普通人是连接不了的。client 1 和client 2分别处于不同的局域网内,不能互相通联。现有比较常见的是用FRP,但是FRP需要配置,文档还挺麻烦。注意两端的隧道ID必须匹配才能访问到隧道对应的服务。原创 2024-10-15 17:46:24 · 222 阅读 · 0 评论 -
linux下如何编译一个极度精简的curl
在某些情况下,比如移植curl,可能我们需要一个干净的curl,不需要那么多的功能,不需要支持那么多的协议,就用下面的方法去掉一些不需要的功能。操作系统自带的libcurl-dev是非常全的库,里面包含很多模块,支持很多协议,所以导致需要引用很多的动态链接库。如果我们的程序调用了libcurl库,也会用到许多的不需要的库。主要的步骤就是下面的。原创 2024-07-30 17:53:58 · 286 阅读 · 1 评论 -
用python为目录下的文件生成索引
有一个需求: 我的一个目录下有很多的.html文件, 每个html会包含一些image ,但都在各自的目录中。.html特别多,有好几百个,我需要一个index.hmtl把这些html全部索引起来,使得我一个点击,就可以打开这个html。这些html分布在各自的文件夹中,没有index.html在用的时候有些痛苦。python里面遍历目录当然是用os.walk啦。具体代码如下所示,把每一个.html给找出来,然后。我需要的index.html 大概是这个样子。做个链接,保存到index.html中。原创 2024-05-17 14:43:51 · 255 阅读 · 0 评论 -
swig生成的python代码如何制作package?
openbbf.so 我们用swig生成后编译好的.so, swig生成的默认就是这个名称。当然还可以用下面的命令生成 .tar.gz,也是可以用pip install的。当然,如果你直接把当前目录复制给别人,让他运行下面的命令自行安装也是可以的。我们写了一个非常棒的python脚本,然后也想分享给其他人使用呢,怎么搞?openbbf.py, 我们用swig生成的python封装代码。我们用别人写的库的时候pip install 就行了,爽的一比。setup.py怎么写呢?然后在这个目录中执行。原创 2023-12-20 10:17:33 · 137 阅读 · 0 评论 -
version `GLIBC_2.29‘ not found 的原因和怎么解决问题
程序上经常有在这台Linux上编译,然后放到另一个Linux上运行的情况。如果Linux版本差别不大或都是ubuntu或centos系列还好。如果不是一个系列很容易出现GLIBC 找不到的情况。尤其是ubuntu上编译,然后放到centos系列。因为centos为了追求所谓的稳定,基本用的都是N年前的东西,生怕用新的东西把它给搞的不安全了。原创 2023-12-15 11:18:56 · 23662 阅读 · 0 评论 -
wget 对整站内容进行爬取
加上 --accept-regex 参数后,你可以根据正则来过滤你需要的 uri。加上 -nv 或 --no-verbose 参数后,输出的内容会变得更加简洁;原创 2023-11-21 17:45:08 · 379 阅读 · 0 评论 -
airflow工作流引擎的使用
如果分开运行 airflow schedule和webserver也可以,不过有点麻烦。airflow会在~/airflow目录下创建一系列的文件。默认的配置文件是~/airflow/airflow.cfg。运行airflow,只需要这一个命令即可。原创 2023-10-09 12:12:28 · 849 阅读 · 0 评论 -
github的CodeSpace如何对外提供TCP 端口服务?
github提供了codespace,一个IDE环境,可以远程以WEB的形式,运行VS code进行开发。如果我们希望在这个环境中进行一些网络调试任务,需要外面的TCP连接进来的话,可以采用反向代理的方法进行。反向代理就是类似于FRP这一类工具,把内网中的服务映射到VPS的端口上,使得外面可以访问内网的服务。他会给你提供一个虚拟机,4核16G内存,还是很香的,比普通的VPS性能好多了。下面的命令其实是借助VPS,将codespace中的服务映射出来。第一个:8080指的是 VPS上的端口号。原创 2023-08-19 21:35:19 · 1071 阅读 · 0 评论 -
gzip 和 gunzip的区别
usr/bin/gunzip的内容: 打印了一下help的内容,然后直接调用gzip去了。gzip 和gunzip的区别是什么呢?现用操作系统是ubuntu 20.04。原创 2023-07-26 16:15:04 · 258 阅读 · 0 评论 -
星光2开发板使用ECR6600U无线wifi网卡的方法
visionfive2 开发板性能还是不错的,有些人买的时候会带一个无线wifi网卡,但是官方提供的操作系统没有驱动。所以需要自己编驱动(他大爷的)。还好有人已经踩过坑了。原创 2023-03-02 15:35:15 · 1087 阅读 · 0 评论 -
kcptun的接收和发送窗口不能调的过大
国内的服务器的带宽基本都有一些带宽限制,不是特别大,几Mbps,如果对端的发送窗口过大,超出服务器的带宽限制就会造成大量丢包,从而影响kcp的正常工作。跑的带宽越大,RTT会越高,所以实际的BDP,会比一开始计算的理论值要大,这个具体值,需自行反复调整测试去确定,记得同时更新rmem_max的值。注意窗口不要调得太大,如果超出接收端的带宽,会有反效果。一开始不是计算好了吗?原创 2023-02-03 15:42:16 · 571 阅读 · 0 评论 -
gost 常用tunnel配置示例(隧道模式)
gost是用golang语言实现的一个安全隧道。是一个不可多得的隧道工具。至于什么是隧道?就是可以通过这个工具传输一些其他协议的数据。就像这个样子。原创 2023-01-29 16:46:59 · 3465 阅读 · 0 评论 -
phc2sys[1035.500]: failed to step clock: Invalid argument
意思是时钟源的时钟可能有问题,或当前操作系统的时钟有问题(大概率是时钟源有问题,因为时钟源上的时钟很难查看),比如我遇到的情况是1970-1-1,还在1970年,肯定是不对的。timex定义位于 /usr/include/x86_64-linux-gnu/bits/timex.h。解决方法就是要修改时钟源,让它与现在真实的时间更接近,减小offset。linuxptp作者的解释是: 误差太大超过了32位int 能表示的范围。此时运行结果显示的offset是一个非常大的值。可能是这个问题引起的?原创 2023-01-04 16:08:26 · 2019 阅读 · 3 评论 -
关于linuxptp的几个高质量文档
官方页面对于ptp4l和phc2sys的介绍非常少。原创 2022-12-14 09:47:20 · 547 阅读 · 0 评论 -
undefined reference to ‘gettid‘ 怎么办?
在ubuntu 14.04上面编译程序,出现找不到gettid的问题。解决办法就是自己实现一个gettid 获取线程的id。在ubuntu 20.04上没问题。原创 2022-12-14 09:01:46 · 1156 阅读 · 0 评论 -
unixbench 只对某一个模块进行测试
/Run 模块 -i 迭代次数 -c 进程并发数 -q/-v (输出方式。执行./Run开始进行各项测试,最后输出结果分。对应的就是上面的结果的各个结果对应的case。原创 2022-12-02 14:47:38 · 887 阅读 · 0 评论 -
普通设备能不能接入TSN时间敏感网络?
TSN交换机对TSN网络中数据包的调度是采用VLAN标签技术实现的,因此接入的设备端也要支持VLAN技术,VLAN是00-10年的技术,现在的网卡从硬件上基本都支持VLAN,但是Linux操作系统要支持VLAN,需要有8021q这个模块。802.1AS是PTP协议的简化版,支持PTP的网卡是实现时钟同步的基础。这里看到的是网卡MAC的情况,在实际测试过程中发现,有些板子的PHY不支持时间戳,也会导致网卡无法实现时钟同步。如果是第一种是支持PTP的,如果是第二种,只支持软件时间戳,实时性会差挺多。...原创 2022-07-25 09:45:25 · 1919 阅读 · 0 评论 -
ptp4l进行TSN 802.1AS时钟同步协议测试
最近在研究TSN。TSN网络中最基础的概念和要求是时钟同步,因为在一个网络中,只有时钟达到同步才能进行实时性的评估和处理,如果时钟都不同步,根本无法在时间上达成一致,TSN就无法实现。测试网络拓扑SIG-0101是一款TSN交换机,swp0-swp3是TSN网口。eno0与swp2不需要连接。这个连接只是为了将网关作为一个endpoint而已。这种网卡支持PTP协议,可以使用ptp4l的硬件模式,时钟同步的精度可能会受操作系统的实时性的影响。......原创 2022-07-19 17:08:32 · 3758 阅读 · 2 评论 -
screen 挺好用的,Linux远程长连接必备
screenGNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。会话恢复只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在转载 2022-05-23 10:16:02 · 322 阅读 · 0 评论 -
ubuntu 20.04的NetworkManager 网络配置保存在哪里?
题主安装了ubuntu 20.04 desktop 版本,通过桌面上设置的IP网络地址,可以正常上网,但是查看/etc/netplan目录下的yaml,只看到了下面的内容:network: version: 2 renderer: NetworkManager淦!怎么回事呢?原来是ubuntu 的网络管理分成2个模块进行管理,要么用networkd,要么用NetworkManagernetworkd用的是systemd的服务,一般用在网络不会奕的地方。NetworkManage原创 2022-04-22 15:31:48 · 10737 阅读 · 0 评论 -
如何为ubuntu 上的qemu设置bridge网络
本文在ubuntu 20.04上实测。由于工作需要,装了一下qemu,以前都是用vmware的,反正也不要钱。现在考虑到版权的问题,改用qemu。安装就简单了:sudo apt-get install qemu-kvm libvirt-daemon-system \ libvirt-clients virtinst bridge-utils装好就可以使用virsh工具了virsh --list添加网桥要按以下的步骤:一、编辑netplan下面的网卡配置文件,...原创 2022-04-19 16:16:39 · 4623 阅读 · 0 评论 -
为dockerd 添加http_proxy代理
我们国家的网络大家是知道的,经常timeout,多亏了方校长。一般的方法是添加 http_proxy的环境变量,然而这一招在docker pull image 的时候并不起作用。因为拉镜像的时候是dockerd在拉镜像,因此要添加代理必须在dockerd上想办法。docker 官方已经贴心地为各们小主们想好了办法:Control Docker with systemd | Docker Documentation Create a systemd drop-in directo原创 2022-04-15 16:27:18 · 2810 阅读 · 0 评论 -
Ubuntu 20.04 安装VNC Server超简单教程
1.确保安装了GNOME DESKTOP对于桌面版是不用说了,服务器版操作系统需要安装一下桌面# apt install ubuntu-gnome-desktop# systemctl set-default multi-user.target$ startx2.Installing VNC不要安装tigervncserver一定要安装这个 standalone的,会有一点区别(不识别 下面的 -localhost no)apt install tigervnc-stan原创 2022-04-12 11:55:52 · 57656 阅读 · 4 评论 -
htop显示的CPU编号如何从0开始
众所周知,在程序员的世界里,万事万物都是从0开始的。包括我们在运行lscpu的时候看到的CPU编号也是从0开始的,如下所示:但是htop所显示的CPU是从1开始编号的,太TM反人类了。还好htop提供了一个选项支持修改CPU的起始序号。按F2,弹出选项,选择 Display options,再勾选 Count CPUs from 0 instead of 1.即可。如下图:参考:htop: Quick Guide & Customizationhttps:..原创 2022-04-07 16:40:23 · 765 阅读 · 0 评论 -
linux 网桥说明
networking:bridge [Wiki]Linux Foundation关于网桥的文档。学习就要从官方学,不要从CSDN上学。原创 2022-04-07 16:32:29 · 311 阅读 · 0 评论 -
riscv64板子上运行openjdk java并进行性能对比
为了对比u540和u740运行java的性能1.硬件对比表1 U540和U740硬件参数 U540 U740 Processor Operating Frequency @ 5 GHz Dual-issue in-order 64-bit execution pipeline Quad-core 64-bit SiFive U54(28nm) ·RV64GC (RV64IMAFDC原创 2022-03-10 11:34:25 · 2049 阅读 · 0 评论 -
linux系统的代理设置,socks5与socks5h的区别?
# 设置代理,只在当前终端有效$ export http_proxy=http://<IP>:<PORT>或是$ export http_proxy=socks5://127.0.0.1:1080$ export HTTPS_PROXY=socks5://127.0.0.1:1080# 取消代理$ unset http_proxy$ unset https_proxy写入配置文件(如: .bashrc)永久有效$ vi ~/.bashrc# 添加如下内.原创 2022-02-28 15:31:50 · 7991 阅读 · 0 评论 -
深入学习intel x86 汇编或寄存器细节的方法
对于普通计算机技术人员来讲,了解到的汇编以及操作系统底层、CPU相关知识都是从网上搜来,别人写的。这些资料都是别人二次创作的内容,要想准确的了解还是要拿到第一手资料,也就是intel的软件开发手册。Intel® 64 and IA-32 Architectures Software Developer ManualsThese manuals describe the architecture and programming environment of the Intel® 64 and IA..原创 2022-02-08 17:25:45 · 580 阅读 · 0 评论 -
linux内核/dev/null的实现
使用linux的人对于/dev/null这个设备并不会陌生,通常用于将程序的输出信息扔掉,如果不指定>/dev/null,将会输出到当前控制台,那么它是如何实现的呢?了解驱动编程的人看下面的结构体都知道,file_operations 对应的是libc中read write llseek等函数在驱动中的实现。/dev/null是一个字符型设备,它的驱动代码位于 drivers/char/mem.c中。外部进行读取的时候,会调用read_null函数,此处直接返回读取的长度是0,什么也没读到。原创 2022-02-08 17:08:11 · 1479 阅读 · 0 评论 -
实时操作系统的“硬实时”和“软实时”到底是什么意思?以及如何区分?
在搞一些嵌入式操作系统的时候,经常会接触到硬实时 和 软实时 这两个词,怎么个硬法, 怎么就软了, 一般人对于这两个很难区分。《嵌入式实时操作系统RT-Thread设计与实现》一书中讲到了软实时与硬实时的概念,现摘录在此,供大家学习。实时系统主要关注 时间的正确性和功能的正确性。软实时与硬实时的区别可以用下图来表示:...原创 2022-02-07 17:36:28 · 8755 阅读 · 6 评论 -
在x86_64上运行riscv64的docker镜像
如果要开发riscv相关软件,但是没有riscv的硬件,或者不想用交叉编译环境,比如编译ffmpeg的时候有很多依赖,所有的依赖也要交叉编译,此时一个可以运行riscv64的docker就是你的救命法宝。参考Docker在x86架构的物理机上跑Qemu-arm 容器_sunSHINEEzy的博客-CSDN博客_docker运行qemu一、安装对应的软件apt install --no-install-recommends qemu-user-static binfmt-suppo原创 2022-01-06 09:36:41 · 1808 阅读 · 0 评论 -
linux下运行cpu2006时,runspec出现flock() failed的原因分析
runspec运行 cpu2006测试时,报错Loading runspec modules...............Locating benchmarks...found 31 benchmarks in 12 benchsets.Locating output formats: ASCII, config, CSV, flags, HTML, mail, PDF, PostScript, raw, Screen, Submission CheckReading config fil.原创 2021-12-30 09:49:37 · 1121 阅读 · 0 评论 -
STREAM内存带宽测试工具介绍及其内部实现
lmbench中有stream,https://github.com/keith-packard/lmbench3但是版本有点旧。我们用的是版本更新一点的V5.102013/01/17 , 代码地址:GitHub - jeffhammond/STREAM: STREAM benchmark编译命令gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=2000000 stream.c -o stream.2Mgcc -O3 -fopenmp -DSTREAM..原创 2021-11-29 14:37:07 · 9198 阅读 · 0 评论 -
lat_mem_rd 内存延迟测试工具原理,lmbench编译时llseek链接不到问题解决
命令介绍:LAT_MEM_RD(8) manual page是lmbench中的一个工具,它的主要作用是测试内存访问的延迟。命令使用方法:lat_mem_rdsize_in_megabytesstride [stride stride...]如: lat_mem_rd 128 64 1024即: size是128MB,stride分别为64Byte 1024Byte,如果不指定stride,默认值是512,可以指定多个stride,一个命令进行多次测试。...原创 2021-11-29 11:59:30 · 6811 阅读 · 6 评论 -
如何用acme.sh申请证书
./acme.sh --set-default-ca --server zerossl./acme.sh --issue -d fast123.com --standalone -m gooms@gmail.com以上两行脚本足矣,但更多内容还要看下面的内容:1.关于let's encrypt和acme.sh的简介1.1 let's encryptLet's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂.转载 2021-11-23 10:24:20 · 7883 阅读 · 0 评论 -
cyclictest原理与源码分析
一、原理通过定时器测试操作系统的实时性性能。二、编译源码源码地址cyclictestgit clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.gitcd rt-testsgit checkout -b stable/v1.0 origin/stable/v1.0 #此为稳定分支,用户还可根据需要切换到最新的devel分支#安装依赖:libnuma-devel #cy原创 2021-11-22 15:39:16 · 2413 阅读 · 0 评论 -
letsEncrypt证书生成的4个文件都是什么用途?
Let’s EncryptLet's Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究人员共同创立的免费的凭证中心,目的在于推动全球所有的网站都使用HTTPS加密传输,创建一个更安全、更具隐私性的Web。目前Let’s Encrypt由非营利的网际网路安全研究组织(ISRG)负责营运。 Let’s Encrypt生成证书 我...原创 2021-11-19 12:07:38 · 10889 阅读 · 0 评论 -
python性能测试之pyperformance
是用于测试python性能的一个软件套装。作用是对python不同的版本测试性能,发现Python在实现过程中是否有性能衰减,当然也可以用于测试不同的机器的性能差异。官方的文档位于:Usage — Python Performance Benchmark Suite 1.0.3 documentation大家注意,大多数情况下,我们只需要看官方文档就可以了。因为其他人写的文档肯定没有官方写的好,写的具体,写的全面。我这里只是把大体的情况罗列一下,具体的还是要看官方文档。安...原创 2021-10-31 17:14:18 · 1132 阅读 · 0 评论 -
RiscV运行zephyr和Linux的方法
riscv基金会搞了一个网站,用于介绍如何使用riscv指令集进行开发。对于运行zephyr和linux以及Qemu有非常大的帮助。可以作为riscv开发的相关参考。RISC-V - Getting Started Guide — RISC-V - Getting Started Guidehttps://risc-v-getting-started-guide.readthedocs.io/en/latest/index.htmlRISC-V - Getting Started Gu.原创 2021-10-29 14:40:08 · 481 阅读 · 0 评论 -
linux命令总结之ip命令
Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。要安装ip,请点击这里下载iproute2套装工具。不过,大多数Linux发行版已经预装了iproute2工具。你也可以使用git命令来下载最新源代码来编译: 1 $.转载 2021-10-21 10:28:57 · 2699 阅读 · 0 评论