基本实用的linux命令

1,在dir目录中查找file文件: find  dir  -name file

2,在dir目录中搜索含有str字符串的文件: grep  -nr  str  dir

3,其他常用的工具:过滤 grep,用指定分隔符取某个字段值 awk,删除替换字符串 sed

4,远程获取文件/文件夹(-r):scp  -P  22345  [email protected]:/dir1/file   /dir2

5,远程上传文件/文件夹(-r):scp  -P  22345  ./file  [email protected]:/dir1     (注:-P 指定端口)

6,查看appname的进程ID情况:ps  auxf | grep "appname"   然后杀死该进程:kill  -9  PID (注:若涉硬件层调用,可能卡死)

7,查看系统cpu实时占用情况:mpstat  -P  ALL 1        cpu详细信息  cat  /proc/cpuinfo           

8,查看系统内存使用情况:free -m         详细点的: cat  /proc/meminfo

9,获取系统识别的磁盘:fdisk  -l        查看各分区的挂在目录及剩余容量:df  -h

10,挂载某个分区到某个目录节点:mount  /dev/sdb1  ./sf-u      验证 df  -h     卸载 umount  /dev/sdb1或者 umount  ./sf-u

11,测试ip联通性: ping  ip   ,(icmp)提示"主机不可达",去的路上挂了! ;提示"超时",来的路上挂了!(找不到回去的路由)

12,查看ip经过的路由节点:win7,tracert  ip            linux,traceroute  ip

13,查看ip对应的mac地址:arp  -a               设置静态的 ip-mac 对: arp  -s  ip  (解决arp攻击的方法之一)

14,抓指定网口的ping(icmp)包: tcpdump  -i  eth0  icmp

15,抓指定ip的arp广播包:tcpdump  -i  eth0  arp  | grep "200\.200\.155\.154"

16,抓指定ip/port的数据包:tcpdump -i eth0 host 200.200.155.154 and port not 47191 -n -c 1000

17,抓包到文件,方便wareshark分析:tcpdump -i eth0 host 200.200.155.154 and port not 47191 -n -c 1000 -nnv -s0 -w  ./sf.cap

18,为指定网口添加ip地址:ip  addr  add  192.168.5.19/24  dev  eth0 , 查看所有ip(含临时): ip a

19,查看路由:ip  route       然后添加静态路由:ip  route  add  200.200.0.0/16  via  200.200.91.254 (若是默认路由,网段改成 default 即可)

20,网口的一些操作及信息查看:ethtool  -i/p/d/S  eth0,ethtool  eth0,ifconfig  eth0,ifconfig  down/up  eth0

21,调试shell脚本:bash  -x  ./test.sh   

22,查看tcp/udp所有端口对应的服务情况:netstat -tunp

23,查看当前目录下的文件占用空间:du -h -d 1

24,解压tar包,tar   -zxvf   xxx.tar.gz    ; 新建压缩包 tar   -zcvf   target.tar.gz   src_dir

25,查看系统内存占用排行:ps auxf | sort -r -n -k 6  ;其中sort -r 表示由大到小,-n表示按数字,-k 6 表示以第六列数字排序

#以下是《程序员的修养》的实践。背景: 在编译环境编译 hydra,然后拷贝到设备使之运行。在设备上 ./hydra 报找不到符号,./hydra: symbol lookup error: /lib/libldap_r-2.4.so.2: undefined symbol: ber_sockbuf_io_udp 的错误的解决方法。

26,查看 hydra 应用程序所引用的库文件:ldd -r ./hydra

...libldap_r-2.4.so.2 => /lib/libldap_r-2.4.so.2 (0x00007f28df88a000)

undefined symbol: ber_sockbuf_io_udp    (/lib/libldap_r-2.4.so.2)

27,验证某个库文件是否包含某个符号:cat /lib/libldap_r-2.4.so.2 | grep "ber_sockbuf_io_udp"

Binary file (standard input) matches

28,验证某个库文件的符号是否是导入符号(符号只是引用并未定义)或者导出符号(符号已定义实现):readelf -s /lib/libldap_r-2.4.so.2 ;从下面的输出 UND 字符串,可以判断 /lib/libldap_r-2.4.so.2 库没有该函数的实现,是导入符号而已。

.......20: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND ber_sockbuf_io_udp

29,查找应用程序引用的库中,某个符号(函数或全局变量)是在哪个库中定义的:(注意在编译环境查找)

ldd -r /usr/bin/hydra | awk '{print $3}' | while read f;do echo $f; readelf -s $f | grep ber_sockbuf_io_udp;done

...

/lib64/libldap_r-2.4.so.2
    xx: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND ber_sockbuf_io_udp

...

/lib64/liblber-2.4.so.2
    xx: 000000000020e460    48 OBJECT  GLOBAL DEFAULT   23 ber_sockbuf_io_udp

...

可以确定,ber_sockbuf_io_udp 符号是在 liblber-2.4.so.2 库中定义的。所以把 liblber-2.4.so.2 库从编译环境拷贝到设备上,删除设备原来的 liblber-2.4.so.2 库,ln -s 一下新库。设备 ./hydra 运行找不到符号的问题得以解决

30,查看linux进程系统调用:strace -p 进程ID号

暂时能想到的就这么多,后续的常用linux命令有待补充...

31,对某个文件或者目录加锁,使root用户都无法使用chmod修改其属性:加锁,chattr +i  文件/目录。解锁,chattr -i 文件/目录。查看某文件底层属性:lsattr 文件/目录。注意 attr 应该是 attribute 属性的缩写。

 

 

plus,测试网络被我搞环路了好几天,今天测试同事终于查明原因,通知我说,是我的设备搞得鬼。刚开始我还死不承认,后来用网线直连打开ESXI,看到其中一个系统的两个网口,分明配置了"透明口",这是谁配置的? 我想一定是某个新同事搞得,为了证实这点,特地看了下操作日志,无奈环路的这段时间就是我的ip在登入。。。有时候自己不经意做的事,等注意到这是自己做的,往往会大吃一惊。呵呵,50 rmb 作为惩罚。。。

网瘫祸首:交换机网口短接,虚拟机网口配置透明,arp代理。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章