基本實用的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代理。

 

 

 

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