Antkillerfarm Hacking V7.5

linux » 各种压缩包的压缩和解压方法, awk&sed&grep, 性能分析工具, Linux学习心得(六)

2023-04-04 :: 7056 Words

各种压缩包的压缩和解压方法

安装

安装 7zip:

sudo apt install p7zip

安装 rar:

sudo apt install rar unrar

rar比较奇怪,压缩和解压是使用不同的包,这点和7zip是不一样的。

常按Win键,会弹出Unity所用的键盘快捷键。

.tar.gz和.tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

PS:tar命令对于长选项和短选项的顺序有要求,例如,不覆盖已有文件的选项--skip-old-files:

tar --skip-old-files -zxvf FileName.tar.gz #正确

tar -zxvf --skip-old-files FileName.tar.gz #错误

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.bz2

解压1:bzip2 -d FileName.bz2

解压2:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

.bz

解压1:bzip2 -d FileName.bz

解压2:bunzip2 FileName.bz

.tar.bz

解压:tar jxvf FileName.tar.bz

.tar.xz

解压:tar xvJf FileName.tar.xz

压缩:tar cvJf FileName.tar.xz DirName

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.z

解压:tar Zxvf FileName.tar.z

压缩:tar Zcvf FileName.tar.z DirName

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

.rar

解压:rar x FileName.rar

压缩:rar a FileName.rar DirName

.lha

解压:lha -e FileName.lha

压缩:lha -a FileName.lha FileName

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

.deb

解包:ar p FileName.deb data.Tar.gz | Tar zxf -

万能脚本

解压:sEx x FileName.*

压缩:sEx a FileName.* FileName

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

sEx官网:

http://sourceforge.net/projects/sex

7zip

7-Zip是Igor Pavlov于1999年开发的压缩软件。

官网:

https://sparanoid.com/lab/7z/

它虽然支持多种压缩算法,但最重要的还是LZMA(Lempel-Ziv-Markov chain-Algorithm)算法。

该算法的SDK:

https://sparanoid.com/lab/7z/sdk.html

参考:

https://mp.weixin.qq.com/s/NB12KQOHjso9wH8Ju1ueSA

ZIP也能边下载边解压?流式解压技术揭秘!

参考

主流的压缩格式(zip、7z等)不支持保留Unix风格的文件访问权限,一旦在Linux系统里解压,解压出来的文件可能会出现“拒绝访问”的现象,而tar支持保留文件的访问权限。

https://www.zhihu.com/question/335911358

为什么Linux要用tar.gz,很少用7Z或ZIP?


https://mp.weixin.qq.com/s/9kdeSj0RwUvlIi4oBEF_Wg

速度与压缩比如何兼得?压缩算法在构建部署中的优化

awk&sed&grep

这三个工具是文本处理中用的比较多的工具,各有各的特色,且都支持正则表达式。

一般来说,行处理优先考虑使用sed和grep,列处理优先考虑使用awk。通常情况下,组合使用多个命令,其命令编写的难度小于只使用一个命令。比如sed和grep也可以进行列处理,但语法难度远超awk,反之亦然。

这里不打算列出各个命令的选项,而仅列出使用它们的一些示例:

这里假设我们有一文件名为ab。

awk

awk '{print $1}' ab #显示第一列

参考:

https://mp.weixin.qq.com/s/-mWYn195TBSB1lDlncuYeA

常用命令之awk常用实例

https://mp.weixin.qq.com/s/IXHKtRKd7Zl8iT9zd2ONsg

活跃了40年的AWK现在怎么样了?

AWK,1977年诞生于贝尔实验室。其名称来自其作者的名字缩写:Alfred Aho,Peter Weinberger和Brian Kernighan。

sed

sed '1d' ab #删除第一行 
sed '$d' ab #删除最后一行
sed '1,2d' ab #删除第一行到第二行
sed '2,$d' ab #删除第二行到最后一行

sed -n '1p' ab    #显示第一行 
sed -n '$p' ab    #显示最后一行
sed -n '1,2p' ab  #显示第一行到第二行
sed -n '2,$p' ab  #显示第二行到最后一行

sed -n '/ruby/p' ab #查询包括关键字ruby所在所有行
sed -n '/\$/p' ab #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替换ruby为bird
sed -n '/ruby/p' ab | sed 's/ruby//g'        #删除ruby

sed -e 's/.$//' mydos.txt > myunix.txt #dos->unix

grep

grep 'ruby' ab #查询包括关键字ruby所在所有行
grep -nri 'ruby' #n 显示行号,r 子目录搜索,i 忽略大小写

综合

ip addr show br-lan | grep 'inet ' | awk  '{print $2}' | sed 's/\/.*//g'

参考:

https://mp.weixin.qq.com/s/o1vuL3RrWz9tyUPguZeSWA

简单快捷的数据处理,数据科学需要注意的命令行

性能分析工具

linux常用的调试工具:

vmstat、iostat、mpstat、netstat、sar、top:查看系统、程序信息等。

gprof、perf、perf top:定位到具体函数、调用等。

strace、ltrace:系统调用、函数调用、库函数调用等。

pstack、ptree、pmap:堆栈信息。

dmesg:系统log信息。

mallinfo:获得内存分配信息。

sudo systemctl status xrdp -n50:打印xrdp服务的log,显示最新的50行。

linux-tools-perf:Android中的perf。

Simpleperf: Android上的Native CPU剖析分析工具。

Android Stuido CPU Profiler:Android Studio提供的CPU剖析工具,本质上就是基于Simpleperf和systrace进行剖析。

GPU Profiler: GPU剖析工具。

heapprofd:Android进程本地内存分析工具。

Perfetto:针对Linux/Android/Chrome平台和用户空间应用性能检测和跟踪工具。基于ftrace,atrace和heapprofd。

Profilo: Facebook开发Android性能剖析库,用于在线收集应用程序的性能跟踪数据。


打印文件/proc/{pid}/maps查看内存地址和文件的映射关系,可以得到函数在哪个文件里。


https://blog.csdn.net/anualday/article/details/51483993

流量测试三个工具(iperf/netperf/Flowgrind)

黑盒测试

Linux上主要有perf、gprof和valgrind三个性能分析工具。

参考:

https://cloud.tencent.com/developer/article/1063652

Linux性能分析工具与图形化方法

https://mp.weixin.qq.com/s/HvADkICPYflS2VTuSB16rg

Linux入门必看:如何60秒内分析Linux性能

https://www.zhihu.com/question/63946754

C++怎么检测内存泄露,怎么定位内存泄露?

https://mp.weixin.qq.com/s/FMYimnxcAya6bhvdGD5LUw

惊魂48小时,阿里工程师如何紧急定位线上内存泄露?

https://blog.csdn.net/xiaowei_cqu/article/details/104238289

性能分析工具:开篇

valgrind

Valgrind是一个用于构建动态分析工具的工具框架。

官网:

https://valgrind.org/

它包含了一系列的工具:

https://valgrind.org/info/tools.html

它还有一个叫做QCacheGrind(KCacheGrind)的图形化性能分析工具。

sudo apt install valgrind kcachegrind

参考:

https://zhuanlan.zhihu.com/p/111556601

valgrind排查内存泄露

https://developer.mantidproject.org/ProfilingWithValgrind.html

Profiling with Valgrind

白盒测试

上面提到的主要是黑盒测试工具。

白盒测试工具主要是Linux Test Project和Gcov。

官网:

http://linux-test-project.github.io/

代码:

https://github.com/linux-test-project/ltp

参考:

https://mp.weixin.qq.com/s/Od17bQhpd3FYE2GQd-kvaQ

iOS代码染色原理及技术实践(gcov,gcno,gcda)

https://www.sohu.com/a/329177032_120104204

一文详解C/C++代码覆盖率–gcov/lcov/gcovr

代码检查

clang-format:可以格式化排版多种不同语言的代码。

clang-tidy:一个基于clang的静态代码分析框架。

KLEE:一款开源的自动软件测试工具,基于LLVM编译底层基础,能够自动生成测试样例检测软件缺陷。

官网:

http://klee.github.io/

参考:

https://blog.csdn.net/weixin_43721070/article/details/122638851

C++代码自动检测工具clang-format和clang-tidy

pahole

pahole可用来检查结构体中的内存漏洞,可作为内存优化的一个工具。

代码:

https://git.kernel.org/pub/scm/devel/pahole/pahole.git

DWARF

DWARF第一版发布于1992年,主要是为UNIX下的调试器提供必要的调试信息。

https://zhuanlan.zhihu.com/p/419908664

DWARF, 调试信息存储格式

backtrace

https://zhuanlan.zhihu.com/p/611579770

嵌入式C代码调试利器—backtrace

https://zhuanlan.zhihu.com/p/31630417

拒绝超大coredump-用backtrace和addr2line搞定异常函数栈

Linux学习心得

https://mp.weixin.qq.com/s/-hfI4GLkChRJQDqcLcvbGg

嵌入式C编程实现上下文的快速切换(cpost)

https://zhuanlan.zhihu.com/p/400200921

x86 Linux下实现10us误差的高精度延时

https://www.zhihu.com/question/496656138

为什么Windows文件设计成占用无法删除?

https://mp.weixin.qq.com/s/h4LwSRAsDgRqOq3mLt_SCw

浅谈mmap

https://mp.weixin.qq.com/s/djEPqxZSfMp13Uf_h6TSiA

认真分析mmap:是什么 为什么 怎么用

https://zhuanlan.zhihu.com/p/424240082

编译一个属于自己的最小Linux系统

https://www.zhihu.com/question/66902460

为什么Linux下要把创建进程分为fork()和exec()(一系列函数)两个函数来处理?

https://zhuanlan.zhihu.com/p/464204319

Linux网络子系统中DMA机制的实现

https://mp.weixin.qq.com/s/1JiXL1f3SSjsBojlJSNOpQ

Linux的启动流程

https://mp.weixin.qq.com/s/ZfprFQjVANuCE2N693gZBQ

用户空间和内核空间

https://mp.weixin.qq.com/s/P14VsWwSh9jiF-jBHSXXOw

申请内存时底层发生了什么?

https://mp.weixin.qq.com/s/OJHQZjxa6u8aA6jZyJnNPg

一文浅析内存管理机制

https://mp.weixin.qq.com/s/lAN0GKjkfkkWCurwRQb6DQ

如何排查句柄泄露问题

https://mp.weixin.qq.com/s/9UmzFxRdE4FFdrqEeBZtOQ

如何实现一个定时器?

https://mp.weixin.qq.com/s/zVi45pZka_kPpKIoNXNVBA

当初我要是这么学习“进程和线程”就好了

https://mp.weixin.qq.com/s/A8TnhOFLQOhEqphE760yvw

15个相见恨晚的Linux神器,你可能一个都没见过

https://mp.weixin.qq.com/s/ejGjsGA1ijPP–j3BLcEFA

Linux并发与同步

https://mp.weixin.qq.com/s/CAPU8bjJWobQs6JHHMasvQ

Linux服务端最大并发数是多少?

https://mp.weixin.qq.com/s/bPqnaMqhi_4p1mwjmvyoIw

多图详解10大高性能开发核心技术

https://mp.weixin.qq.com/s/ESLO1RH6Q8udwI13Z2Pz_w

详解linux io flush

https://mp.weixin.qq.com/s/LLlzPB2emr9Hqr7gql0B4Q

为什么Linux需要Swapping

https://mp.weixin.qq.com/s/fzLcAkYwKhj-9hgoVkTzaw

CPU飙高,系统性能问题如何排查?

https://www.zhihu.com/question/456916638

printf是怎么输出到控制台的呢?(app->libc->syscall->console)

Fork me on GitHub