工具
文章平均质量分 94
温暖的电波
这个作者很懒,什么都没留下…
展开
-
在两个不同的vim之间进行复制粘贴
转自:https://blog.csdn.net/trochiluses/article/details/9237379使用vim进行编辑的时候,如果我们打开了两个不同的vim,此时不能用yy和p在两个Vim窗口之间进行复制和粘贴,此时,需要分割窗口,然后就可以复制粘贴了。步骤如下:假如我们有两个需要编辑的文件a和b1.分割:此时先打开a,然后在命令界面下输入sp2.打...转载 2020-04-07 22:16:39 · 3499 阅读 · 0 评论 -
利用systemd的定时器来定时停止服务
需求背景:有时候我们有这样的一种需求:需要一些服务在定时运行一段时间后就停止。实现这种需求的方法有许多种,这里介绍一种基于systemd实现方式。场景:希望在dockerd服务在每次启动1个小时后就关闭服务。实现:利用systemd中的timer来实现。具体方法:1 创建定时器处理服务 在/usr/lib/systemd/system/目录下创建dockert...原创 2020-02-23 21:50:52 · 1154 阅读 · 0 评论 -
如何为qemu制作Qcow2格式文件系统
一、 制作8G大小的raw镜像文件qemu-img create -f raw ./virt-disk 8G"上面的命名生成一个大小为8G的raw镜像virt-disk。二、将virt-disk于loop设备关联sudo losetup /dev/loop1 ./virt-disk三、对loop1进行分区sudo parted /dev/loop1"#这个步骤是交互...原创 2020-01-21 20:23:57 · 2837 阅读 · 1 评论 -
Registry私有仓库的镜像清理
一、背景 在私有registry仓库的场景中,对于私有镜像的升级操作是一个比较常见的操作。然而在我们升级私有镜像、并push到私有仓库后,升级前的镜像也就失去了它存在的意义;而随着时间的积累,旧镜像将会越来越多,旧镜像的数据有可能会占用大量磁盘空间。为了解决此问题,我们需要对私有仓库中的旧镜像进行清理以释放空间。二、具体操作2.1 清理blobs、_manifests和_lay...原创 2020-03-09 22:18:08 · 3595 阅读 · 0 评论 -
通过简单工具定位ext4文件系统中的裸数据
一、工欲善其事必先利其器 我在系统上通过如下2条命令创建了一个ext4格式的“内存磁盘”mkfs.ext4 /dev/ram0mount /dev/ram0 /ram 接着拷贝一些文件到 /ram目录下,其中一个就是 /ram/uio/uio_begin.sh 首先通过 dumpe2fs /dev/ram0了解到文件系统的如下信息Blocks per group: ...原创 2019-02-03 21:25:20 · 889 阅读 · 2 评论 -
容器内生成core_dump文件
有时候docker容器中的程序可能出现类似段错误,此时要去跟踪问题的话有core_dump会方便很多;但是容器中有时候还不一定能够生成core_dump文件,需要做如下事情: (1)启动容器时,增加--privileged选项; (2)容器启动后,通过"ulimit -c unlimited",以使能产生core_dump文件; (3)通过 cat /proc/sys/kerne...原创 2019-01-04 00:10:56 · 1487 阅读 · 0 评论 -
aarch64-linux-gnu/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status解决方案
起因 从linaro下载的aarch64工具链不包含libz库,导致有些static参数的编译程序无法通过,出现类似如下问题:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: ca...原创 2019-07-05 22:14:19 · 11176 阅读 · 0 评论 -
交叉构建sqlite与libseccomp
背景 在交叉构建第三方的一些组件时需要依赖sqlite以及libseccomp,此时就需要先交叉构建sqlite和libseccomp。下面简单说明如何交叉构建sqlite和libseccomp。获取源码 可以根据自己需要分别从https://www.sqlite.org/download.html和https://github.com/seccomp/libseccom...原创 2019-07-20 10:15:08 · 519 阅读 · 0 评论 -
制作一个最简单ftpd容器镜像
准备基本的根文件系统镜像 先从dockerhub pull busybox镜像到本地。Pull完成后可以通过docker images看到busybox:latest镜像。准备entrypiont文件 然后编写entrypiont.sh作为ftpd镜像的入口函数。如下:#!/bin/shsh -c "exec tcpsvd 0 21 ftpd -w /"编写...原创 2019-08-07 21:59:57 · 295 阅读 · 0 评论 -
制作简单的http镜像
一、编写简单的http服务首先写一个简单的http服务器程序:package mainimport ( "fmt" "net/http")type MyHandler struct{}//实现接口的ServeHTTP方法func (this *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques...原创 2019-08-07 21:59:19 · 715 阅读 · 0 评论 -
利用脚本查看一个任务的heap
计算某个人物的heap占多少个pagetaskname=$1#为了更方便的对16进制的地址进行运算需要进行16<-->10进制转换DecToHex(){ echo $(printf "%x" $1)}HexToDec(){ echo $(printf "%d" 0x$1)}####################pid=$(ps aux | grep $ta...原创 2018-12-24 00:38:02 · 155 阅读 · 0 评论 -
利用git制作内核补丁(简易版)
利用git制作、检查内核补丁原创 2017-02-14 21:30:54 · 622 阅读 · 0 评论 -
lmbench基本的部署与使用
讲解lmbench的获取、编译(交叉与本地)、修改、安装、配置、运行与结果分析。原创 2017-03-11 13:21:47 · 17552 阅读 · 3 评论 -
cgroup中的cgroup_subsys[]数组解析
cgroup中的子系统数组cgroup_subsys[]的定义原创 2017-05-05 21:10:13 · 2294 阅读 · 0 评论 -
使用loop模拟一个ext4设备
一、 准备工作1. dd工具 用于创建一个指定大小的文件2. losetup工具 用于设置loop设备3. mke2fs工具 ext4文件系统制作工具二、制作流程1 创建一个128M大小的文件 $ dd if=/dev/zero of=ext4.img bs=128M count=12 利用losetup将文件虚拟成块设备$ losetup /dev原创 2017-04-26 18:32:14 · 1183 阅读 · 0 评论 -
使用源码交叉构建libgcrypt库
使用源码交叉构建libgcrypt库原创 2017-07-13 20:41:30 · 5220 阅读 · 0 评论 -
交叉编译构建logrotate工具
通过源码和交叉工具链构建嵌入式环境的logrotate工具。原创 2017-07-05 21:19:07 · 1841 阅读 · 0 评论 -
使用cgroup的sched_load_balance
Sched_load_balance是cgroup中cpuset子系统提供的负载均衡功能。它用于控制当前cgroup以及下层的cgroup中任务的负载均衡性。要控制一个组的负载均衡,必须先将所有与本组共享cpu的其他组的负载均衡先关闭。 举例:12个核的系统,cpu0~cpu11,可以通过如下例子来了解sched_load_balance:1 创建cpuset控制组mkdir /cpuset...原创 2018-02-10 14:13:16 · 1190 阅读 · 0 评论 -
Docker容器使用/dev/mem与HOST端映射同一段物理内存
我们知道docker容器与HOST端有一定的隔离性,但同时也共享着一些资源,比如内存资源。今天我们就看一下Docker容器通过/dev/mem设备节点与HOST共享一段物理内存。 要达到这个目的需进行如下操作:1) 划分一段用于映射到/dev/mem设备文件的保留物理内存;2) 准备一段在容器和HOST端可运行的映射和读写物理内存的代码;3) 启动一个带有--privileged参数...原创 2018-03-02 20:48:32 · 3244 阅读 · 0 评论 -
容器网络-物理网卡绑定到网桥
一 背景 默认情况下dockerd服务启动会创建一个默认网桥(采用一个未使用网段IP)。这样此机器上的容器就通过这个默认网桥进行通信(容器与宿主机通信也通过网桥),同时达到隔离外部网络的目的。有时候我们有这样的需求:一个宿主机器上的容器可以直接和其他宿主机器上互通网络,这里作为实验,可以用“暴力”的方式实现: 宿主机host1 网口eth0:192.168.0.100 宿主机ho...原创 2018-07-02 22:02:23 · 2613 阅读 · 0 评论 -
容器网络--为docker容器添加网络接口
一 背景 默认情况下容器启动后只有一个网络接口,一般外围为eth0,且其IP地址已经提前分配。有时候我们希望为一个容器创建多个网络接口,此时可以尝试如下的方式。二 为容器添加网络接口 1 以默认的网络方式运行一个容器# docker run --name tst_add_inf -it tst_img /bin/bash 这样,我们就通过宿主机器上的镜像tst_img创建了一个名字...原创 2018-07-02 22:28:12 · 7770 阅读 · 2 评论 -
脚本监控一个任务的调度情况
有时候我们需要查看一个任务的调度情况可以通过 cat /proc/$pid/status | grep switch来判断任务有没有切换。但是任务出问题,得不到调度的时机是不确定的。 如果我们希望在任务没有及时得到调度的时候及时的做出报告,以便我们能够及时处理,下面这个脚本值得一试:#!/bin/shif [ $argc != 1 ]; then echo "US...原创 2018-09-04 21:24:03 · 505 阅读 · 0 评论 -
ramdisk的解压与制作
一、修改、解压、生成ramdisk.bin前提:有一个原始的ramdisk.bin文件1 改名字mv ramdisk.bin ramdisk.bin.tar.gz 2 解压gunzip ramdisk.bin.tar.gz 3 导出ramdisk.binmkdir initrd cd initrd cpio -i < ../ramdisk.bin.ta...原创 2018-08-30 22:07:34 · 1756 阅读 · 0 评论 -
通过任务名字打印任务的亲和性
有时候我们调试系统时,需要在运行过程中查看某个任务的状态,如一些任务的cpu亲和性。但是我们我们只知道要监控的任务的名字,任务的pid是动态分配的。 下面这个程序就是在c中通过popen()执行一段shell程序以通过任务名字找到对应的PID,然后再根据PID查看任务的cpu亲和性:#include <string.h> #include <sys...原创 2018-09-04 21:19:57 · 467 阅读 · 0 评论