Linux系统下开发常用命令

  • Linux下系统环境变量和用户环境变量
/*系统环境变量设置*/
/etc/environment
/etc/profile
/etc/bash.bashrc
/*用户环境变量设置*/
~/.profile
~/.bash_profile 或者 ~./bash_login
~/.bashrc
  • 跨服务器拷备

    (86->89 at 86)scp -r /home/hcicloud/tts/bin/VW.tar.gz heyongxin@10.0.1.89:/home/heyongxin
    (86->89 at 89)scp -r hcicloud@10.0.1.86:/home/hcicloud/tts/bin/VW.tar.gz  /home/heyongxin
  • 文件目录中查找函数和文件

    find . | xargs grep func_name
    find -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 
  • 统计网络连接状态

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  • 查看命令使用历史记录,并用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 
  • 当前目录权限

  //用来变更文件或目录的所属群组
  chgrp -R hcicloud_9x VW
  //用来变更文件或目录的拥有者...
  chown -R hcicloud_9x VW
  • 当前目录查找某字符串

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

     grep "key_string" ./r 
  • Linux应用后台启动

    nohup ./jTTSService.exe > /dev/null  &
  • 文件下查找yyy关键字

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

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

     lsb_release -a
    
  • 去除Linux文件中的BOM头

grep -r -I -l $'^\xEF\xBB\xBF' ./   #查找BOM头
find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;  #查找删除当前目录文件BOM头

  • 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 收包主机。多个条件可以用and、or组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
    1、监听网卡eth0
    tcpdumpieth02 t c p d u m p − i e t h 0 2 、 监 听 指 定 协 议 的 数 据 tcpdump -i eth0 -nn ‘icmp’
    3、监听指定的主机
    tcpdumpieth0nnhost192.168.1.231 t c p d u m p − i e t h 0 − n n ‘ h o s t 192.168.1.231 ′ tcpdump -i eth0 -nn ‘dst host 192.168.1.231’
    4、监听指定端口
    tcpdumpieth0nnAport805 t c p d u m p − i e t h 0 − n n A ‘ p o r t 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

sudo tcpdump -i ens33 -nnA ‘dst host 43.255.224.19’ -w xxtest.cap
7、抓取从本机到请求机之间的通信(已验证OK)
sudo tcpdump -i ens33 -nn ‘host 43.255.224.19’ -w hello.cap
“`
- 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中的需要执行指令的那些section
objdump -D test 与-d类似,但反汇编test中的所有section
objdump -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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值