Linux常用命令匯總

本文總結日常工作中經常用到的linux命令,作為總結,以便學習和回顧。

1. vim

1.1 查找文件中的指定字符串

a. vim service.log --> ?abc 從倒數第一行到正數第一行的遍歷方式查找文件service.log中的字符串abc,并高亮顯示.
b. vim service.log --> /abc 從第一行到最后一行的遍歷方式查找文件service.log中的字符串abc,并高亮顯示.
c. n 顯示下一個a或者b搜索到的字符串abc
d. Ctrl + B 向上翻頁
e. Ctrl + F 向下翻頁
f. $ 顯示最后一頁
g. set hls 打開高亮
h. set nohls 關閉高亮

2. df

2.1 df -h

查看機器磁盤空間

2.2 du -h .

查看當前目錄(.)下的文件大小

3. netstat

netstat -a 列出所有當前的連接
netstat -at 只列出 TCP 協議的連接
netstat -au只列出 UDP 協議的連接
netstat -l 只列出正在監聽的鏈接
netstat -p 獲取進程名,進程號以及用戶Id等信息

4. pwd

顯示當前路徑

5. cd

cd abc 切換到abc目錄
cd .. 返回上一目錄
cd ../../.. 連續返回上一目錄三次

6. ssh

ssh lance@192.168.0.122 使用指定賬戶登陸到指定機器(后續需要輸入密碼)
ssh 192.168.0.122 使用當前用戶登錄到192.168.0.122機器

7. tail

tail -f service.log 實時顯示文件service.log的最后10行(動態)
tail -1000f service.log 實時顯示文件service.log的最后1000行(動態)
tail -f * 實時顯示當前目錄下所有文件的的最后10行(動態)

8. mkdir

mkdir abc 創建目錄
rmdir 刪除空目錄

9. rm

rm abc,刪除abc文件
rm * 刪除當前目錄下的所有文件
rm -f 強制刪除文件或目錄
rm -r 遞歸刪除指定目錄下的所有文件和子目錄
rm -rf abc 強制+遞歸刪除目錄為abc的目錄

10. top

動態顯示當前耗費資源最多進程信息

11.curl 構造http請求

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"context":{"userId":"1967","userName":"lance"},"id": "11223344"}' 'http://service.company.com/business/function'
說明:
curl -v 顯示返回的狀態碼等信息
如果使用GET,且url中有中文,如:
curl -v -X GET 'http://service.company.com/business/Search?keyword=中華人民共和國&pageIndex=1&pageSize=5'
因為有中文,所以會報錯,提示Encoding錯誤:

 HTTP/1.1 400 Bad Request
  Server: Apache-Coyote/1.1
  Transfer-Encoding: chunked
  Date: Fri, 19 Apr 2019 02:43:59 GMT
  Connection: close

可以使用:URLEncoder.encode方法轉成utf-8格式:

 String str = "中華人民共和國";
 System.out.println(URLEncoder.encode(str,"utf-8"));

即:curl -v -X GET 'http://service.company.com/business/Search?keyword=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&pageIndex=1&pageSize=5'

12. vmstat

-a:顯示活動內頁;
-f:顯示啟動后創建的進程總數;
-m:顯示slab信息;
-n:頭信息僅顯示一次;
-s:以表格方式顯示事件計數器和內存狀態;
-d:報告磁盤狀態;
-p:顯示指定的硬盤分區狀態;
-S:輸出信息的單位。

后面跟數字, 如vmstat 2 10 表示每隔2秒采集一次數據,顯示10次。

13. rpm -qa

rpm -qa 查詢安裝了那些軟件包
rpm -qa zip 查看安裝包,且安裝包的名稱包含zip

14.cat

cat lance.txt 顯示整個文件
cat lance.txt | tail -n +100 | head -n 500 從第100行開始,顯示500行,即顯示100~599行
cat lance.txt | head -n 300 | tail -n +100 顯示100行到300行
cat file1 file2 > lance.txt 將file1和file2合并成lance.txt

15.sed

常用選項:
-n∶打印到屏幕
-e∶編輯;
-f∶直接寫入文件;
-i∶修改讀取的文件內容。

常用命令:
a ∶新增
c ∶取代
d ∶刪除
i ∶插入
p ∶打印行
s ∶取代
舉例:
sed '1d' lance.txt 刪除第一行
sed -n '100,200p' lance.txt 顯示第100行到200行
sed -n '/Exception/p' lance.txt 顯示包含Exception的所有行
sed '1c lance' lance.txt 將第一行替換為lance

16.查看曾經執行的命令歷史記錄

history

17.查看內存使用情況

free -h 格式化的顯示linux的內存

18.壓縮和解壓縮文件

19.sudo

sudo rm file.txt
sudo -u lance1 rm file.txt 以lance1的身份執行刪除命令

20.du

du -sh * 查看當前目錄下的所有文件和目錄的大小

21.grep 檢索

ps -ef | grep lance 搜索進程中的lance
ps -ef | grep lance --color=auto 搜索進程中的lance,并高亮顯示lance
cat lance.txt | grep lance --color=auto 搜索文件lance.txt中的lance,并高亮顯示lance
more lance.txt | grep -C 10 zhang 搜索文件lance.txt中的zhang,并顯示匹配到的數據的前后10行
more lance.txt | grep -A 10 zhang 搜索文件lance.txt中的zhang,并顯示匹配到的數據的后10行
more lance.txt | grep -B 10 zhang 搜索文件lance.txt中的zhang,并顯示匹配到的數據的前10行
grep -B 10 zhang lance.txt 搜索文件lance.txt中的zhang,并顯示匹配到的數據的前10行
less error.log | grep Exception | grep -v WARN 搜索文件error.log中的Exception,并排除含有WARN字符串的行。

22.查看CPU的信息

lscpu

23 ln 創建連接

ln -s /usr/lance/data /dev/data 創建軟連接,相當于window的快捷鍵;
ln -d /usr/lance/data.log /dev/data.log 創建硬連接,相當于文件的備份,僅支持文件不支持目錄;

24 查看linux日期和時間

date
date -R

25 移動或重命名文件/目錄

mv file1.txt /opt/lance 將文件移動到/opt/lance目錄
mv file1.txt file2.txt /opt/lance 將文件移動到/opt/lance目錄
mv *.txt /opt/lance 將文件移動到/opt/lance目錄
mv file1.txt file2.txt 將文件file1.txt重命名為file2.txt

26 nohup & 后臺執行

nohup [command] [args]
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2
a.默認輸出到nohup.out;
b.使用Ctrl + C會發送SIGINT中斷信號,使程序關閉;
c.關閉session發送SIGHUP掛起信號,程序免疫。

&后臺運行程序
[command] [args] &
java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
a.輸出結果到終端;
b.使用Ctrl + C會發送SIGINT中斷信號,程序免疫;
c.關閉session發送SIGHUP掛起信號,程序關閉。

最佳實踐:
nohup [command] [args] &
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
這樣同時免疫SIGINT中斷信號和SIGHUP掛起信號,而且信息輸出到了nohup.out文件中,日志信息得以持久保留。

nohup的參數:
0:表示stdin標準輸入;
1:表示stdout標準輸出,為缺省值;
2:表示stderr標準錯誤。

nohup [command] [args] > file.log 等于 nohup [command] [args] 1> file.log 即將標準輸出輸出到file.log文件;
nohup [command] [args] 2> errorFile.log 將錯誤輸出到errorFile.log文件;
nohup [command] [args] 2>&1 將錯誤輸出重定向到標準輸出。

27 awk

awk [-F field-separator] 'commands' input-file(s)
讀入有'\n'換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域。默認域分隔符是"空白鍵" 或 "[tab]鍵"

[lance@172.28.0.172 ~]$ last -n 5
lance   pts/2        172.28.0.172     Tue Jun 11 14:07   still logged in
root    pts/0        172.28.3.250     Tue Jun 11 11:08   still logged in
lance   pts/0        172.28.3.250     Tue Jun 11 10:39 - 10:39  (00:00)
lance   pts/0        172.28.3.250     Mon Jun 10 18:17 - 19:16  (00:59)
zhangz  pts/2        172.29.0.64      Tue Jun  4 15:01 - 21:00 (1+05:58)

[lance@172.28.0.172 ~]$ last -n 5 | awk '{print $3}'
172.28.0.172
172.28.3.250
172.28.3.250
172.28.3.250
172.29.0.64

[lance@172.28.0.172 ~]$ last -n 5 | awk '{print $3}' | awk -F '.' '{print $1}'
172
172
172
172
172



awk -F ':' '{printf("file:%10s,linenum:%s,colums:%s,content:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd
awk -F ':' '{print "file:"FILENAME ",linenum:" NR ",columns:" NF ",content:"$0}' /etc/passwd
awk內置變量

內置變量 說明
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數
FS 設置輸入域分隔符,等價于命令行 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變量的使用
$0 當前記錄(作為單個變量)
$1~$n 當前記錄的第n個字段,字段間由FS分隔

awk提供了print和printf兩種打印輸出,printf類似于C++中的格式化輸出。

28 wc 統計輸出個數

wc [OPTION]... [FILE]... 
  -c, --bytes            print the byte counts
  -m, --chars            print the character counts
  -l, --lines            print the newline counts
      --files0-from=F    read input from the files specified by
                           NUL-terminated names in file F;
                           If F is - then read names from standard input
  -L, --max-line-length  print the length of the longest line
  -w, --words            print the word counts
      --help     display this help and exit
      --version  output version information and exit

舉例:last | wc -l
舉例:last -n 10 | wc -l

29 scp 復制文件

scp lance@172.17.10.21:/home/lance/test.sh . 下載文件
scp test.sh lance@172.17.10.21:/home/lance 上傳文件

scp -r lance@172.17.10.21:/home/lance . 下載目錄
scp -r . lance@172.17.10.21:/home/lance 上傳目錄

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容