自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 问答 (3)
  • 收藏
  • 关注

原创 常用一句话shell命令行

1、一句话while循环while :; do echo `data`;sleep 0.5;done2、输出毫秒级时间date +%Y-%m-%d ' '%H:%M:%S.%N | cut -b 1-233、awk命令解析shell输出awk '{print $1,$2}'4、排除特定目录或文件ls | grep -v "filea \| fileb"5、shell字符串分割cat xxx | awk -F "-" '{print $2}'6、xargs传参把前序

2021-07-09 10:34:54 7

原创 基础办公软件安装记录

基础办公软件安装1、beyondcompare版本:beyond compare 4.2.3验证可用秘钥:H1bJTd2SauPv5Garuaq0Ig43uqq5NJOEw94wxdZTpU-pFB9GmyPk677gJvC1Ro6sbAvKR4pVwtxdCfuoZDb6hJ5bVQKqlfihJfSYZt-xVrVU27+0JahFbqTmYskatMTgPyjvv99CF2Te8ec+Ys2SPxyZAF0YwOCNOWmsyqN5y9tq2Kw2pjoiDs5gIH-uw5U49JzO

2021-07-05 16:28:10 11

原创 H323场景电话场景验证

验证拓扑pc1(1001) GNUGK服务器(10.10.11.12)ip:10.20.11.200/24 --------------------| ||----eth2(10.20.11.1)-----| | eth5(10.10.11.1) pc

2021-04-21 09:35:33 18

原创 win&linux端口转发使用

应用场景: pc1<---------------->pc2211.20.3.1 172.36.56.2pc1可以与外网互通,pc2在内网,与外网不通,但pc1和pc2可以互通;需求:通过pc1访问pc2pc1为windows1、管理员权限打开cmd;2、添加端口转发;netsh interface portproxy add v4tov4 listenport=10022 connectaddress=172.36.56.2 connectport=22

2021-03-30 10:48:56 38

原创 dpdk示例程序l2fwd、l3fwd测试

编译l2fwd运行拓扑l3fwd运行拓扑

2021-03-28 18:27:58 157 2

原创 sed、awk、tr命令使用

sed命令:1、模糊匹配文件某行并替换内容sed -i '/s/test1.*/要替换的内容/g' file.txtawk命令:1、以:为分隔符输出第三列cat abc:test:hello | awk -F ":" '{print $3}'

2021-03-16 19:23:39 40

原创 性能调试工具perf使用

定位进程运行的cpu:ps -o pid,psr,comm -p `pidof testd`查看cpu1热点:perf top -C 1查看当前cpu的系统调用:perf trace -C 1 --syscalls --call-graph dwarf查看cache-misses:

2021-03-12 09:23:34 41

转载 linux下cpu、内存、硬盘、网卡故障注入

1、下载使用软件下载路径:https://github.com/chaosblade-io/chaosblade/releases/download/v0.9.0/chaosblade-0.9.0-linux-amd64.tar.gz无需编译安装,解压即可使用。1、cpu压力注入帮助信息查看:./blade create cpu --help创建任务:./blade create cpu fullload --cpu-list 0,1,2 --cpu-percent 90{"code":2

2021-03-01 20:51:26 179

原创 进程出core相关

可以导致出core的信号不产生core文件的条件:在下列条件下不产生core文件:( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;a,b可以通过设置/proc/sys/kernel/suid_dumpable来改变,这样suid的也可以产生core文件( c )用户没有写当前工作目录的许可权;( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。利用GD

2021-02-06 11:00:39 60

原创 SIGKILL与SIGTERM的区别

SIGTERM SIGKILL的区别前者可以被阻塞、处理和忽略,但是后者不可以。KILL命令的默认不带参数发送的信号就是SIGTERM.让程序有好的退出。因为它可以被阻塞,所以有的进程不能被结束时,用kill发送后者信号,即可。即:kill -9 进程号。BLOCKED如果进程设置了SIGTERM可以被block,则进程处于block状态时无法被SIGTERM信号杀死。 sigset_t blockSet, savedSigMask; sigemptyset(&blockSe

2021-01-16 19:01:24 245

原创 fork之子进程随父进程死亡prctl

利用prctl的PR_SET_PDEATHSIG属性设置父进程死亡时,发送给子进程的信号。int pid;pid = fork()if (pid == 0) {//子进程//设置父进程死亡时自动给子进程发的信号prctl(PR_SET_PDEATHSIG, SIGKILL)....} else {//父进程}相关属性如下:PR_SET_PDEATHSIG (since Linux 2.1.57) Set the parent death sign

2021-01-16 18:49:52 82

原创 杀死进程组内所有进程

进程组概念 在 linux 中,进程不但有自己的 id 号,还会有一个组 id 号。我们把拥有相同组 id 号的进程的集合称为一个进程组。发送信号给进程和进程组使用 kill -n -pgid 可以将信号 n 发送到进程组 pgid 中的所有进程。例如命令 kill -9 -4115 表示杀死进程组 4115 中的所有进程使用kill -n pid 可以将信号n发送到指定pid进程。进程组的生命周期从进程组被创建开始,到组内所有进程终止或者离开。进程组组长进程组组长是进程组中

2021-01-15 20:07:07 151

原创 linux下terminal重命名方法

1、vim .bashrc后插入如下内容function title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$*\a\]" PS1=${ORIG}${TITLE}}2、title命名title 192.168.1.2

2020-12-17 21:09:32 308 1

原创 替换glibc中malloc、free的几种方法

方案1 使用环境变量LD_PRELOAD方案2 malloc调试变量方案3 编译自己的libmalloc.a方案4 链接过程控制参考链接:https://blog.csdn.net/littlefang/article/details/6052563https://blog.csdn.net/littlefang/article/details/50381587?depth_1-...

2020-11-30 09:29:25 92

原创 代码解耦tips

1、添加type字段,使用RESERVE=0保留原有接口,新的接口type字段重新复制;

2020-11-21 14:47:42 27

转载 exec系列函数(execl,execlp,execle,execv,execvp)使用

一、exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新的子进程,在利用exec系统调用将新产生的子进程完全替换成ps进程。二、exec系列函数(execl、execlp、execle、e

2020-11-21 11:33:36 213

原创 线程变量__thread使用

#define MAX_CALLBACK_TYPE 100static struct { char stu_type; int flags; void *callback;} msg_callback[MAX_CALLBACK_TYPE] ;如上结构体初始化:#define MAX_CALLBACK_TYPE 100static struct { char stu_type; int flags; void *callback;} msg_callback[MAX_CALLBACK

2020-11-16 20:02:43 85

原创 docker使用

基于镜像创建容器:docker run -it IMAGE_NAME /bin/bash进入某个存在的容器:docker ps查看存在的容器id;进入某个在运行的容器:docker exec -it CONTAINER_ID /bin/bash

2020-11-04 10:07:25 27

原创 kill信号0使用

kill -0 pid 不发送任何信号,但是系统会进行错误检查。所以经常用来检查一个进程是否存在,存在返回0;不存在返回1;If signal is 0, then no actual signal is sent, but error checking is still performed.

2020-11-02 20:35:06 248

原创 shell编程基础

1、文件测试运算符“-e file”:检测文件是否存在(包含了:目录和文件),如果是,返回truefile="hello.sh"if [ -e $file ]thenecho "文件存在"elseecho "文件不存在"fi“-s file”:检测文件是否为空(文件有内容),如果是,那么返回truefile="hello.sh"if [ -s $file ]thenecho "文件有内容"elseecho "文件没有内容"fi"-f file"检测一个文件是否是普通文件

2020-10-28 14:17:37 28

原创 linux服务service的使用(包含看门狗)

1、添加服务:/usr/lib/systemd/system/下添加xxx.service,内容如下:[Unit]:服务的说明Description:描述服务After:描述服务类别 [Service]服务运行参数的设置Type=forking 是后台运行的形式ExecStart 为服务的具体运行命令ExecReload 为服务的重启命令ExecStop 为服务的停止命令Restart 为服务的重启命令PrivateT

2020-10-26 19:40:05 228

原创 openwrt安装软件提示[Errno 28] No space left on device

openwrt路由器安装软件时提示:ERROR: Could not install packages due to an EnvironmentError: [No space left on device使用如下命令指定TMPDIR即可:TMPDIR=/mnt/sdc1 pip install lxmlTMPDIR=/mnt/sdc1为一个比较大的存储空间可添加额外的参数,如:TMPDIR=/folder/address/here/ pip install --upgrade --ca

2020-08-23 21:22:05 500

原创 openwrt路由器挂载sdcard为overlay

原料:openwrt路由器(Newifi 2、极路由1s也可以)这个机子自带了一个 Micro SD 插槽,刷了 OpenWrt 之后一直没怎么用到。闲着来折腾一下把 Micro SD 卡挂载到 /overlay 分区,增加内部可用的空间。首先要使用 Micro SD 卡槽,需要安装以下两个内核模块:opkg install kmod-sdhci kmod-sdhci-mt7620接下来在 /dev 下应该可以看到有 mmcblk0 的文件了,那就是我们的 Micro SD。然后再安装一些文件系

2020-08-23 12:57:54 890

原创 centos8环境pidof获取准确进程pid

基本思路:获取进程所有pid,然后根据当前pid对应的进程文件系统中status文件获取到进程名,与当前进程名完全匹配的即为当前进程的pid。app_name="test"real_pid=-1for pid in `pidof $app_name`; do process_name = `cat /proc/${pid}/status/|grep "Name"|awk '{print $2}'` if [ $process_name == $app_name ]; then real_pi

2020-08-18 10:19:43 332

原创 极路由1(HC5661)刷openwrt固件及zerotier配置教程

极路由1 hc5661 cpu为MTK7620 mips 24kec1、刷不死breed2、openwrt网站下载最新的刷机包https://archive.openwrt.org/releases如https://archive.openwrt.org/releases/19.07.2/targets/ramips/mt7620/3、进入breed升级界面选择固件选择升级包升级4、界面或者后台执行opkg源更新1)opkg update或这页面software下点击update lists;

2020-08-02 12:33:00 3512

原创 emac使用

打开文件: emacs test.c搜索字符串:ctrl-s(向下搜索,ctrl-r向上搜索) 输入要搜索的字符串即可撤销输入:删除:ctrl-backspce保存文件:ctrl-x ctrl-s关闭文件:ctrl-x ctrl-c

2020-07-22 14:42:20 69

转载 LINUX_VERSION_CODE与KERNEL_VERSION

由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件/usr/include/linux/version.h#define LINUX_VERSION_CODE 263213#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c))安装完linux-header之后,在下面这个目录找到了version.h这个文件/usr/li

2020-07-06 20:08:23 567

翻译 TCMalloc:线程缓存的Malloc

动机TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要50纳秒。malloc版本的速度是至关重要的,因为如果malloc不够快,应用程序的作者就很有可能在malloc之上写一个自己的自由列表。这就可能导致额外的代码复杂度,以及更多的内存占用――除非作者本身非常仔细地划分自

2020-06-23 15:01:49 118

转载 Linux内存布局

我们先来看下Linux内存布局,此图比我之前写的那篇文章写的布局更详细在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如上图所示;这个进程使用的物理内存,即常驻内存RSS页数,这个内存使用的虚拟地址空间VSZ页数,还有这个进程虚拟内存区域集合和页表。

2020-06-05 20:20:11 127

转载 ssh(或sftp)连接慢问题解决

问题1:ssh连接很慢解决方案:这是应为linux系统默认开启DNS认证,我们关掉即可。 vim /etc/ssh/ssh_config UseDNS yes 改为no(122行左右); GSSAPIAuthentication yes改为no(81行左右)然后重启sshd服务service restart sshd;问题2:ssh连接突然就卡断了解决方案:这个是 linux 的安全问题,如果 60s 内没用任何数据,将会自动断开。 vim /etc/ssh/ssh_con

2020-06-02 15:11:15 2101

原创 链路带宽测试工具iperf使用

下载安装iperfhttps://iperf.fr/iperf-download.php下载安装对应版本,不区分服务端和客户端;运行udp模式测试:(tcp模式去掉-u参数即可)服务端执行:iperf -p 8000 -s -i -u监听8000端口,以服务端模式运行;客户端运行:iperf -u -c 192.168.1.1 -p 8000 -i 1 -d -b 100M使用8000端口以udp方式连接服务端192.168.1.1,指定带宽100M,测试上下行带宽并按照1s间隔输出测试

2020-06-02 10:10:18 753

原创 网络常用python函数

字符串mac地址转换:def str2mac(s): return ("%02x:" * 6)[:-1] % tuple(orb(x) for x in s)mac地址转字符串:def mac2str(mac): return b"".join(chb(int(x, 16)) for x in plain_str(mac).split(':'))参考链接:https://github.com/secdev/scapy/blob/2e87889089e5593988911309

2020-05-20 10:22:22 117

原创 tcmalloc编译使用

一、编译https://github.com/gperftools/gperftools/releases如上链接页面下载需要版本的代码;cd /home/code/;tar -zxvf gperftools-2.7.90.tar.gz;cd gperftools-2.7.90;../configure --prefix=/usr/local/lib --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --d

2020-05-15 18:46:49 835

原创 gdb报错(A program is being debugged already)

用 gdb attach pid 的方式将gdb挂到一个正在运行的进程上,有时会提示A program is being debugged already. Kill it? (y or n)可能是由于正在执行的进程对应的binary被替换了造成的。如果被替换过的binary和先前的差别不大,并且要调试的部分没有变化,可以用下面的方式做gdb attach:gdb 或者可以将先前被替换...

2020-05-06 17:22:02 393

翻译 linux malloc内存申请相关参数设置

情况一、malloc小于128k的内存malloc小于128k的内存时使用brk分配内存,将_edata往高地址推(只分配虚拟空间,不对应物理内存(因此没有初始化),第一次读/写数据时,引起内核缺页中断,内核才分配对应的物理内存,然后虚拟地址空间建立映射关系),如下图:1、进程启动的时候,其(虚拟)内存空间的初始布局如图1所示。其中,mmap内存映射文件是在堆和栈的中间(例如libc-2.2...

2020-04-23 21:58:35 1284

原创 gdb编程打印全局变量

以某个全局数组为例说明如何gdb编程打印所有变量:写变量遍历代码创建search.gdb文件写如下内容:define print_hash_table set $cnt =1 set $use=2 while $cnt set $hash_entry=(g_hash_entry_t *)(hash_table.table + 123 * $cnt) if $hash_entry...

2020-04-03 16:24:33 455

转载 Python调用shell命令常用方法

Python调用shell指令方法一、使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景。举例说明:1. 列举当前目录下的所有文件。1 import os2 val = os.system('ls -al')3 print...

2020-03-18 10:02:26 435

转载 __typeof__(type)的用法(gcc扩展)

__typeof__(struct s *) xxx;等同于: struct s * xxx;下面的例子可以证明:#include <stdio.h>#include <stdlib.h>struct s { int x; int y; int z;};int main(void){ __typeof__...

2020-03-16 19:26:52 482

转载 Linux top命令的用法详细详解

首先介绍top中一些字段的含义:VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out2、包含其他进程的共享3、...

2020-03-13 15:36:37 94

原创 问题排查积累

1、查看进程启动时间ps -eo pid,lstart,etime | grep pid(lstart为启动时间,etime为运行多长时间)

2020-03-10 22:28:16 69

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除