1 查找然后grep,最后在复制到特定目录

find . -depth -name *.java | xargs grep -i lijiangtao | awk -F ":" '{print $1}' | xargs -i cp {} .  # 注意,awk -F制定分割符'

2 查找当前系统所打开的所有线程数量

pstree -p | wc -l

3 查看文件夹的总大小

**du -s -h [path] : **

-s 查看总大小

-h 以人类可读的方式显示,以m,g为单位

4 top

按照顺序g2,切换显示模式,例如g2模式可以显示ppid

按c可以显示完整的命令

按P按照cpu来排名

按e将内存单位切换为m

top -H -p [pid]:以线程模式显示信息

5 sed

删除文件中包含某些字符的特定行

sed -i '/0,0,0,0/d' jmx_trace.csv

在第12行后面追加hello.txt文件里面的内容

sed -i '12 r hello.txt' file

在查找到的helloworld前面添加insert content

sed -i '/helloworld/i\inesrt content' file

在查找的hellworld后面添加insert content

sed -i '/helloworld/a\insert content' file

6 统计各个文件夹占用的空间大小

sh du -s -h /* | sort -nr

查看当前目录下所有文件/文件夹所占的空间大小:

sh du -h --max-depth=1 .

7 查看二进制文件符号的相关命令

ldd file : 查看当前二进制文件所依赖的所有动态库

nm *.a/*.so:查看当前动态/静态文件里面的所有符号
其中-D选项指定只查看动态符号表

ldconfig -p : 查看当前ld命令可以链接的所有路径

readelf: 可以查看当前so或者a文件里面的信息,包括rpath等

8 perf一些使用技巧

监控进程/线程耗费性能情况,可以监控的事件有很多:cpu,cache-miss,branch预测等,使用perf list可以查看所有的可监控项

perf record -e cpu-clock -t 4882 :捕捉cpu特定线程的cpu使用率

perf report:显示perf record的结果

9 pidstat

用来监控进程后所有线程的cpu占用率(结合java的jstack,通过nid可以查找出对应的线程)

10 dstat

一个用来监控系统资源利用率的工具stat,常用参数dstat -tlcdnm比普通的top更好用

11 taskset

taskset -apc: 查看某个进程下面所有线程绑定的cpu核

14 关于virtual memory和swap

Virtual memory is a layer of abstraction provided to each process. The computer has, say, 2GB of physical RAM, addressed from 0 to 2G. A process might see an address space of 4GB, which it has entirely to itself. The mapping from virtual addresses to physical addresses is handled by a memory management unit, which is managed by the operating system. Typically this is done in 4KB "pages".

This gives several features:

A process can not see memory in other processes (unless the OS wants it to!)

Memory at a given virtual address may not be located at the same physical address

Memory at a virtual address can be "paged out" to disk, and then "paged in" when it is accessed again.

15 将编译输出文件合并为一个静态库

ar -rv libgtest.a gtest-all.o gtest_main.o

16 LIBRARY_PATH和LD_LIBRARY_PATH的区别

LIBRARY_PATH is used by gcc before compilation to search directories containing static and shared libraries that need to be linked to your program.

LD_LIBRARY_PATH is used by your program to search directories containing shared libraries after it has been successfully compiled and linked.

rpath: gcc编译的选项,把需要寻找的库文件的所在路径编译在elf中,这样子就多了一条寻找so库或者a库的路径

17 ldd **.so

可以尝试解析该so中的所有符号,如果未定义符号无法找到,则在运行的时候才会尝试自己去找,如果找到了,那么说明是当前操作系统的相关路径帮助其找到了so

5 ld在链接静态库的时候,一些没有用到的符号会丢失,可以用--whole-archive解决,详细情况如下

#force all symbols
gcc -fPIC -shared -Wl,-soname,libb.so -o libb.so b.o -Wl,--whole-archive liba.a -Wl,--no-whole-archive
#后面--no-whole-archive表示后面的库不需要在这样子了,否则会出bug #force just a specific symbol
gcc -fPIC -shared -Wl,-soname,libb.so -o libb.so b.o -u foobarize liba.a

Why you need it?

A static library is a simple collection of object files. The one major difference from a bunch of object files is the following: when an undefined symbol needs to be resolved, the library is searched and only the object file that actually defines the symbol is linked. No undefined symbols? Nothing is searched, nothing is linked. To override this default behaviour, the GNU linker implements --whole-archive. Most linkers implement -u to force a particular symbol to be treated as undefinmed.

linux常用命令及一些静态动态库相关知识的更多相关文章

  1. Linux环境下c语言静态链接库和动态链接库创建和使用

    库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...

  2. Linux常用命令手册

    Linux常用命令手册 NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件     文件管理 # ls ls ...

  3. Linux常用命令语法+示例

    原文出自:https://blog.csdn.net/seesun2012 Linux常用命令:Linux查看日志命令总结:Tomcat相关:Linux配置网卡,连接外网:Linux下安装JDK:Li ...

  4. Linux 常用命令:系统状态篇

    前言 Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题.本文就简单介绍一下这些命令. 1. 查看系统运行时间--uptime 有时候我 ...

  5. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  6. Linux 常用命令:开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  7. Linux常用命令英文全称与中文解释 (pwd、su、df、du等)

    https://blog.csdn.net/qq_40334837/article/details/83819735 Linux常用命令英文全称与中文解释 apt: Advanced Packagin ...

  8. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  9. Linux常用命令详解上

    Linux常用命令详解上 目录 一.shell 二.Linux命令 2.1.内部命令与外部命令的区别 2.2.Linux命令行的格式 2.3.编辑Linux命令行的辅助操作 2.4.获得命令帮助的方法 ...

随机推荐

  1. CSS&HTML标签

    内容索引: 1. HTML标签:表单标签 2. CSS HTML标签:表单标签 * 表单: * 概念:用于采集用户输入的数据的.用于和服务器进行交互. * form:用于定义表单的.可以定义一个范围, ...

  2. Redis 存储对象信息是用 Hash 还是 String

    Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...

  3. OO第三单元总结——JML规格

    一.JML简介 1.JML语言的理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言 (Behavior In ...

  4. ES6学习-5 解构赋值(2)对象的解构赋值

    啥也不说,先举个栗子: 1 let { myname, myage } = { myage: 18, myname: "郭郭" }; 2 console.log(myname) / ...

  5. 对Linux系统内核版本稳定性测试介绍

    对Linux系统内核版本稳定性测试介绍 在对 Linux 内核版本稳定性的测试中,需要明确地声明并证明为什么版本是稳定的或者是不稳定的. 然而还没有被证明和证实当前现有的系统范围内的压力测试可以测试 ...

  6. 使用Wok管理kvm虚拟机

    [Centos7.4] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# ...

  7. C++知识点案例 笔记-1

    1.重载函数 2.内联函数 3.New.Delete 4.重载与.const形参 5.常数据成员 6.静态成员函数 ==重载函数== #include <iostream> using n ...

  8. DOCKER学习_012:Dockerfile配置指令详解

    1 Dockerfile结构 基础镜像信息 镜像操作指令 容器启动时执行指令 2 FROM 指定基础镜像,用于继承其他镜像使用的 FROM ubuntu:14.06 FROM centos FROM ...

  9. 7.2-5 usermod

    7.2 usermod:修改用户信息 usermod 命令用于修改系统已经存在的用户的账号信息.   -c comment         修改用户password文件中用户的说明栏,同useradd ...

  10. 按时按登录IP记录Linux所有用户操作日志的方法

    背景:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...