自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下容易被忽視的那些命令用法

系統(tǒng) Linux
工作中發(fā)現(xiàn)很多同學(xué)對(duì)于Linux下的命令不太熟悉,尤其是一些功能強(qiáng)大的工具,使用者很少。正所謂工欲善其事,必先利其器。本文總結(jié)了Linux下常用命令的用法,希望能夠幫助大家提升日常開發(fā)的效率。

本文適合在linux下開發(fā)的同學(xué)閱讀,需要具備基本的linux操作命令。

一、前言

工作中發(fā)現(xiàn)很多同學(xué)對(duì)于Linux下的命令不太熟悉,尤其是一些功能強(qiáng)大的工具,使用者很少。正所謂工欲善其事,必先利其器。本文總結(jié)了Linux下常用命令的用法,希望能夠幫助大家提升日常開發(fā)的效率。

Linux下容易被忽視的那些命令用法

二、命令

1.strace

strace用于跟蹤程序執(zhí)行過程中的系統(tǒng)調(diào)用,如跟蹤test進(jìn)程,只需要:

  1. strace -p [test_pid] 或直接strace ./test 

但如果需要:

  • 跟蹤進(jìn)程內(nèi)的線程: -f 選項(xiàng)
  • 統(tǒng)計(jì)時(shí)間段內(nèi)的各個(gè)系統(tǒng)調(diào)用次數(shù)分布:-C 選項(xiàng)
  • 過濾某些系統(tǒng)調(diào)用:-e trace選項(xiàng),如-e trace=network只顯示網(wǎng)絡(luò)相關(guān)的系統(tǒng)調(diào)用,-e trace=open,close,read,write只顯示這4個(gè)系統(tǒng)調(diào)用,常用于只獲取某些特定的系統(tǒng)調(diào)用
  • 顯示系統(tǒng)調(diào)用的時(shí)間:-ttt選項(xiàng)
  • 詳細(xì)顯示每行的數(shù)據(jù),而不是... -s選項(xiàng)加大字符串的長度限制如-s 1024

比如,跟蹤pid為12345的進(jìn)程中所有線程的read和write系統(tǒng)調(diào)用,輸出字符串的長度限制為1024:

  1. strace -s 1024 -f -e trace=read,write -p 12345 

2.tcpdump

tcpdump是Linux上的抓包工具,如抓取eth0網(wǎng)卡上的包,使用:

  1. sudo tcpdump -i eth0 

但如果需要:

  • 文本形式顯示抓包數(shù)據(jù):-A選項(xiàng)
  • 顯示16進(jìn)制的報(bào)文數(shù)據(jù):-X選項(xiàng)
  • 輸出結(jié)果到文件中 -w選項(xiàng),如-w 1.cap將報(bào)文輸出到1.cap文件,此文件可用wireshark查看
  • 過濾主機(jī)和端口號(hào) 如host 11.11.11.11 and port 12345過濾主機(jī)ip為11.11.11.11,端口號(hào)為12345的tcp報(bào)文

比如,抓取80端口的HTTP報(bào)文,以文本形式展示:

  1. sudo tcpdump -i any port 80 -A 

這樣你就可以清楚看到GET、POST請(qǐng)求的內(nèi)容了。

3.nc

nc可以在Linux上開啟TCP Server、TCP Client、UDP Server、UDP Client。

如在端口號(hào)12345上開啟TCP Server和Client模擬TCP通信:

 

  1. Server:  nc -l 127.0.0.1 12345 
  2. Client:  nc 127.0.0.1 12345 

在端口號(hào)12345上開啟UDP Server和Client模擬TCP通信:

 

  1. Server:  nc -ul 127.0.0.1 12345 
  2. Client:  nc -u 127.0.0.1 12345 

Unix Socket通信示例:

 

  1. Server:  nc -Ul /tmp/1.sock 
  2. Client:  nc -U /tmp/1.sock 

4.curl

curl用于模擬HTTP請(qǐng)求,在終端模擬請(qǐng)求時(shí)常用,如最基本的用法:

  1. curl http://www.baidu.com 

但如果需要:

  • 指定HTTP首部 -H選項(xiàng),如-H "Host: xx.xx.xx.xx"
  • 指定請(qǐng)求方法 -X選項(xiàng),如-X POST,-d指定post數(shù)據(jù)
  • 顯示請(qǐng)求詳細(xì)信息,包括請(qǐng)求和響應(yīng)首部 -v選項(xiàng)
  • 重定向請(qǐng)求自動(dòng)追蹤 -L選項(xiàng)

常見的curl請(qǐng)求選項(xiàng)-sSfL表示: 不顯示進(jìn)度信息,顯示錯(cuò)誤信息,發(fā)生HTTP錯(cuò)誤時(shí)失敗,自動(dòng)跟蹤重定向

5.find

find可用于查找文件,比如:

  1. find . -name "1.txt" 

表示在當(dāng)前目錄及其子目錄下查找文件名為1.txt的文件,結(jié)合xargs使用功能更加強(qiáng)大,如:

  1. find . -type f|xargs grep 'abcd' 

表示在當(dāng)前目錄及其子目錄下查找包含abcd字符串的文件行,經(jīng)常用于搜索代碼。

6.lsof

lsof命令主要用法包括:

  • sudo lsof -i :[port] 查看端口占用進(jìn)程信息,經(jīng)常用于端口綁定失敗時(shí)確認(rèn)端口被哪個(gè)進(jìn)程占用
  • sudo lsof -p [pid] 查看進(jìn)程打開了哪些文件或套接字

7.ss

Linux上的ss命令可以用于替換netstat,ss直接讀取解析/proc/net下的統(tǒng)計(jì)信息,相比netstat遍歷/proc下的每個(gè)PID目錄,速度快很多。

常見示例:

  • ss -t -a 顯示所有的TCP Sockets
  • ss -u -a 顯示所有的UDP Sockets
  • ss -x src /tmp/a.sock 顯示連接到/tmp/a.sock的進(jìn)程
  • ss -o state [state TCP-STATE] 如ss -o state established顯示所有建立的連接

8.awk/sed

awk和sed在文本處理方面十分強(qiáng)大,其中,awk按列進(jìn)行處理,sed按行進(jìn)行處理。

如采用冒號(hào)分隔數(shù)據(jù),輸出***列數(shù)據(jù)($0代表行全部列數(shù)據(jù),$1代表***列,$2代表第二列...)

  1. awk -F ":" '{print $1}' 

在awk的結(jié)果基礎(chǔ)上,結(jié)合sort、uniq和head等命令可以輕松完成頻率統(tǒng)計(jì)等功能

 

  1. 查看文件的第100行到第200行: 
  2. sed -n '100,200p' log.txt 
  3. 替換字符串中的特定子串 
  4. echo "int charset=gb2312 float"|sed "s/charset=gb2312/charset=UTF-8/g" 
  5. 替換test文件每行匹配ab的部分為cd 
  6. sed -i 's/ab/cd/g' test 

9.screen

當(dāng)采用telnet或SSH登錄遠(yuǎn)程主機(jī)時(shí),因?yàn)榫W(wǎng)絡(luò)中斷的原因會(huì)導(dǎo)致session終止,此時(shí)會(huì)觸發(fā)SIGHUP信號(hào)使得任務(wù)終止,因此我們常常會(huì)看到有些任務(wù)采用nohup的方式運(yùn)行,避免任務(wù)被打斷。screen通過多終端的方式,巧妙地解決了這個(gè)問題。 示例:

  • screen -S test 開啟一個(gè)screen,這時(shí)擁有一個(gè)終端,所有執(zhí)行的程序都會(huì)在ps中展示
  • Ctrl+a鍵+d鍵 退出當(dāng)前screen,切到上級(jí)窗口
  • screen -ls 查看所有screen列表,如

 

  1. 13333.test      (Detached) 
  2. 14039.test4     (Detached) 
  3. 表示兩個(gè)screen,screen標(biāo)識(shí)為13333.test和14039.test4 
  • screen -r [pid.]tty.host 進(jìn)入選定的screen,如screen -r 13333.test
  • exit 關(guān)閉當(dāng)前screen

注:本文假定讀者已經(jīng)知道類似top、netstat、df、vmstat等常見命令的用法,所以介紹的都是一些容易被忽視卻很實(shí)用的命令用法。本文對(duì)于這些命令進(jìn)行了簡化和提煉,所有命令的完整功能需要具體參考命令手冊(cè)。

責(zé)任編輯:未麗燕 來源: 軟件編程之路
相關(guān)推薦

2017-02-08 09:51:27

JavaScript細(xì)節(jié)

2014-04-10 16:33:48

iOS 7新特性

2012-11-28 15:53:16

災(zāi)難恢復(fù)

2022-11-29 12:11:25

2023-08-04 14:31:43

Python核心項(xiàng)目

2023-11-06 18:02:28

Linux實(shí)用命令

2017-11-27 12:08:10

后端服務(wù)spring mvc項(xiàng)目

2024-02-29 07:48:55

Python編程語言上下文管理器

2019-01-18 13:22:10

布線事項(xiàng)網(wǎng)絡(luò)

2009-11-17 16:14:28

無線路由器

2009-11-09 09:57:39

交換機(jī)路由器

2023-11-07 12:25:22

2019-08-30 12:01:48

2010-01-28 10:11:18

IT金飯碗

2019-02-28 19:45:06

SQL錯(cuò)誤用法數(shù)據(jù)庫

2013-01-22 09:21:28

云計(jì)算成本私房云

2013-08-01 13:55:55

Android 4.3新特性

2023-10-24 18:05:00

2022-04-27 22:07:32

SQL數(shù)據(jù)庫分頁查詢

2010-01-22 15:45:57

局域網(wǎng)交換機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)