Linux系统下开发常用命令

来源:互联网 发布:python gps数据处理 编辑:程序博客网 时间:2024/05/16 09:44
  • 文件目录中查找函数和文件

    find . | xargs grep func_namefind -name "*.mk" | xargs grep file_name.c
  • 持续显示某个文件内容,在当前操作窗口持续更新

    tail -f boot_info.log
  • 打开某个文件并查找关键字

     less ./frame/fei/fe_nse/nse_fsm.c  grep FEI_FEVFP_HEARTBEAT_SendPktProc.c ./ -r
  • 从so中找是否编进去某个函数

     nm libfeife.so | grep FE588X_HODP_TXPKT_Buf2HwBuf 1."-A" 列出符号名的时候同时显示来自哪个文件 2."-a" 列出所有符号,这将会把调试符号也列出来,默认情况下不会被列出; 3."-l",列出符号在源代码中的行号; 4."-n",根据符号的地址来排序,默认是按符号名称的字母顺序来排序的; 5."-u",只列出未定义符号;
  • 列出so中所有函数

    nm -D XXX.so objdump -tT XXX.so 
  • 查看命令使用历史记录,并用less分页显示

     history | less
  • Linux上压缩文件

     tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以gzip压缩 tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以bzip2压缩
  • 当前目录下各文件夹大小

     du -h --max-depth=1 
  • 当前目录查找某字符串

     grep ./ -nr "key_string" 
  • 目录下查找keystring文件

     grep "key_string" ./r 
  • 文件下查找yyy关键字

     cat xxx | grep yyy  xxx 
  • Linux下查看操作系统是多少位的?

     uname -a
  • Linux下查看操修行系统是CentOS还是Ubuntu等

     lsb_release -a
  • Linux查看物理CPU个数、核数、逻辑CPU个数

    总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq 查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l查看CPU信息(型号)cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
  • Linux下查看线程的资源占用情况

     1 先用ps + grep找出该死的进程pid,比如 30420  2 top -H -p 30420,(top然后shift+H可以看出某个线程)所有该进程的线程都列出来了。看看哪个线程pid占用最多,然后将这个pid转换为16进制,如 44bf,注意要小写  3 执行top命令后,输入1 可查看各cpu核单独占用率,top显示的是各个核加起来的总和; 4 输入f 出现列,通过输入行前首字母,选择显示列;
  • Linux下查看进程下所有线程的调用栈

    pstack  -pid (进程ID)     
  • Linux使用tcpdump抓取网络数据包

    ifconfig 查看网卡名字tcpdump [-i 网卡] -nnAX '表达式'-i:interface 监听的网卡。-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。-A:以ascii的方式显示数据包,抓取web数据时很有用。-X:数据包将会以16进制和ascii的方式显示。表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用andor组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。1、监听网卡eth0 $ tcpdump -i eth02、监听指定协议的数据$ tcpdump -i eth0 -nn 'icmp'3、监听指定的主机$ tcpdump -i eth0 -nn 'host 192.168.1.231'$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'4、监听指定端口$ tcpdump -i eth0 -nnA 'port 80'5、监听指定主机和端口$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'6、抓包重定向使用输出在Windows上使用wireshark分析$ tcpdump -i eth0 -nnA 'port 80'  >>test.pncp
  • Linux下反汇编

    linux下objdump命令常见用法举例:objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出;<可查到该文件的的所有动态库>objdump -t obj:输出目标文件的符号表()objdump -h obj:输出目标文件的所有段概括()objdump -j ./text/.data -S obj:输出指定段的信息(反汇编源代码)objdump -S obj:输出目标文件的符号表()  当gcc -g时打印更明显objdump -j .text -Sl stack1 | more-S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。-l 用文件名和行号标注相应的目标代码,仅仅和-d-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。-j name 仅仅显示指定section的信息如何使用linux下objdump命令对任意一个二进制文件进行反汇编?可以使用如下命令:objdump -D -b binary -m i386 a.bin-D表示对全部文件进行反汇编,-b表示二进制,-m表示指令集架构,a.bin就是我们要反汇编的二进制文件objdump -m可以查看更多支持的指令集架构,如i386:x86-64,i8086等另外上面的所有objdump命令的参数同样适用于arm-linux-objdump。同时我们也可以指定big-endian或little-endian-eb-el),我们可以指定从某一个位置开始反汇编等。objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:objdump -f test  显示test的文件头信息objdump -d test  反汇编test中的需要执行指令的那些sectionobjdump -D test  与-d类似,但反汇编test中的所有sectionobjdump -h test  显示test的Section Header信息objdump -x test  显示test的全部Header信息objdump -s test  除了显示test的全部Header信息,还显示他们对应的十六进制文件代码   
  • linux 命令替换文件夹下所有文件指定字符串为

    比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`解释一下:-i 表示inplace edit,就地修改文件-r 表示搜索子目录-l 表示输出匹配的文件名这个命令组合很强大,要注意备份文件。 
  • Linux下查看进程下所有线程的调用栈

    lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 确认系统设置的最大文件句柄数ulimit -a统计系统中当前打开的总文件句柄数lsof|awk '{print $2}'|wc -l根据打开文件句柄的数量降序排列,其中第二列为进程ID:lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more
原创粉丝点击