本文總結(jié)日常工作中經(jīng)常用到的linux命令活鹰,作為總結(jié)蒂窒,以便學習和回顧歉甚。
1. vim
1.1 查找文件中的指定字符串
a. vim service.log --> ?abc 從倒數(shù)第一行到正數(shù)第一行的遍歷方式查找文件service.log中的字符串a(chǎn)bc,并高亮顯示.
b. vim service.log --> /abc 從第一行到最后一行的遍歷方式查找文件service.log中的字符串a(chǎn)bc,并高亮顯示.
c. n 顯示下一個a或者b搜索到的字符串a(chǎn)bc
d. Ctrl + B 向上翻頁
e. Ctrl + F 向下翻頁
f. $ 顯示最后一頁
g. set hls 打開高亮
h. set nohls 關(guān)閉高亮
2. df
2.1 df -h
查看機器磁盤空間
2.2 du -h .
查看當前目錄(.)下的文件大小
3. netstat
netstat -a 列出所有當前的連接
netstat -at 只列出 TCP 協(xié)議的連接
netstat -au只列出 UDP 協(xié)議的連接
netstat -l 只列出正在監(jiān)聽的鏈接
netstat -p 獲取進程名,進程號以及用戶Id等信息
4. pwd
顯示當前路徑
5. cd
cd abc 切換到abc目錄
cd .. 返回上一目錄
cd ../../.. 連續(xù)返回上一目錄三次
6. ssh
ssh lance@192.168.0.122 使用指定賬戶登陸到指定機器(后續(xù)需要輸入密碼)
ssh 192.168.0.122 使用當前用戶登錄到192.168.0.122機器
7. tail
tail -f service.log 實時顯示文件service.log的最后10行(動態(tài))
tail -1000f service.log 實時顯示文件service.log的最后1000行(動態(tài))
tail -f * 實時顯示當前目錄下所有文件的的最后10行(動態(tài))
8. mkdir
mkdir abc 創(chuàng)建目錄
rmdir 刪除空目錄
9. rm
rm abc辆沦,刪除abc文件
rm * 刪除當前目錄下的所有文件
rm -f 強制刪除文件或目錄
rm -r 遞歸刪除指定目錄下的所有文件和子目錄
rm -rf abc 強制+遞歸刪除目錄為abc的目錄
10. top
動態(tài)顯示當前耗費資源最多進程信息
11.curl 構(gòu)造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 顯示返回的狀態(tài)碼等信息
如果使用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方法轉(zhuǎn)成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:顯示活動內(nèi)頁仰美;
-f:顯示啟動后創(chuàng)建的進程總數(shù);
-m:顯示slab信息儿礼;
-n:頭信息僅顯示一次咖杂;
-s:以表格方式顯示事件計數(shù)器和內(nèi)存狀態(tài);
-d:報告磁盤狀態(tài)蚊夫;
-p:顯示指定的硬盤分區(qū)狀態(tài)诉字;
-S:輸出信息的單位。
后面跟數(shù)字, 如vmstat 2 10 表示每隔2秒采集一次數(shù)據(jù),顯示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∶修改讀取的文件內(nè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.查看曾經(jīng)執(zhí)行的命令歷史記錄
history
17.查看內(nèi)存使用情況
free -h 格式化的顯示linux的內(nèi)存
18.壓縮和解壓縮文件
19.sudo
sudo rm file.txt
sudo -u lance1 rm file.txt 以lance1的身份執(zhí)行刪除命令
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漠趁,并顯示匹配到的數(shù)據(jù)的前后10行
more lance.txt | grep -A 10 zhang 搜索文件lance.txt中的zhang扁凛,并顯示匹配到的數(shù)據(jù)的后10行
more lance.txt | grep -B 10 zhang 搜索文件lance.txt中的zhang,并顯示匹配到的數(shù)據(jù)的前10行
grep -B 10 zhang lance.txt 搜索文件lance.txt中的zhang闯传,并顯示匹配到的數(shù)據(jù)的前10行
less error.log | grep Exception | grep -v WARN 搜索文件error.log中的Exception,并排除含有WARN字符串的行卤妒。
22.查看CPU的信息
lscpu
23 ln 創(chuàng)建連接
ln -s /usr/lance/data /dev/data 創(chuàng)建軟連接甥绿,相當于window的快捷鍵;
ln -d /usr/lance/data.log /dev/data.log 創(chuàng)建硬連接则披,相當于文件的備份共缕,僅支持文件不支持目錄;
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 & 后臺執(zhí)行
nohup [command] [args]
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2
a.默認輸出到nohup.out;
b.使用Ctrl + C會發(fā)送SIGINT中斷信號士复,使程序關(guān)閉;
c.關(guān)閉session發(fā)送SIGHUP掛起信號图谷,程序免疫。
&后臺運行程序
[command] [args] &
java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
a.輸出結(jié)果到終端;
b.使用Ctrl + C會發(fā)送SIGINT中斷信號阱洪,程序免疫;
c.關(guān)閉session發(fā)送SIGHUP掛起信號便贵,程序關(guān)閉。
最佳實踐:
nohup [command] [args] &
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
這樣同時免疫SIGINT中斷信號和SIGHUP掛起信號冗荸,而且信息輸出到了nohup.out文件中承璃,日志信息得以持久保留。
nohup的參數(shù):
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內(nèi)置變量
內(nèi)置變量 | 說明 |
---|---|
FILENAME | awk瀏覽的文件名 |
FNR | 瀏覽文件的記錄數(shù) |
FS | 設(shè)置輸入域分隔符郎仆,等價于命令行 -F選項 |
NF | 瀏覽記錄的域的個數(shù) |
NR | 已讀的記錄數(shù) |
OFS | 輸出域分隔符 |
ORS | 輸出記錄分隔符 |
RS | 控制記錄分隔符 |
ARGC | 命令行參數(shù)個數(shù) |
ARGV | 命令行參數(shù)排列 |
ENVIRON | 支持隊列中系統(tǒng)環(huán)境變量的使用 |
$0 | 當前記錄(作為單個變量) |
$1~$n | 當前記錄的第n個字段,字段間由FS分隔 |
awk提供了print和printf兩種打印輸出兜蠕,printf類似于C++中的格式化輸出扰肌。
28 wc 統(tǒng)計輸出個數(shù)
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 上傳目錄