基礎:
- Linux是什么
- Linux用戶、文件、目錄管理
- VIM編輯器
- Linux文件系統管理
進階: - Linux網絡管理
- Linux進程管理
- Linux系統監控
查看操作系統:
- cat /proc/version
查看系統時間: - date
查看IO、系統內存 - cat /proc/cpuinfo 查看cpu詳細信息
- free -m 查看內存使用情況
- top 監控視圖
- lostat 輸出CPU和磁盤I/O相關的統計信息
查看網絡端口狀態 - netstat -anp | grep 18008 查看18008端口狀態
進入某個目錄 - cd /opt/oss 進入根目錄下opt目錄下的oss目錄
查找某個具體的文件 - find . -name "test*" 當前目錄下,查詢名為test開頭的文件
- find / -name "test*" 在根目錄下,查詢名為test開頭的文件
修改文件權限和修改文件名 - chown ossuser:ossgroup test.jar 修改單個
- chown -R ossuser:ossgroup test/ 遞歸修改test目錄下面的文件
- mv 重命名和移動
- cp 拷貝
從一個環境上copy包到當前環境的具體目錄 - scp test.jar root@10.10.10.10:/tmp/test 把當前目錄的test.jar復制到10.10.10.10環境上的/tmp/test目錄下
搜索進程、殺死某個進程: - ps -ef | grep test 查看包含test的進程,其中ps可以繼續查看更多用法
- kill -9 pid 強制殺死進程
VIM:主要是熟悉一些常用的操作。
額外的命令:
- 前言:
- 掃描本地ip地址:
ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | sed 's/addr://g'
- 掃描端口號被哪個進程占用:
netstat -anp | awk '{print $4, $7}' | grep 31006 | sed -n '1p' | awk '{print $2}' | awk -F'/''{print $1}' | xargs ps -lfp | sed -n '2p' | awk '{print $17}'
- 獲取某個進程的堆棧:
ps -elf | grep -v grep | grep necomm_agent | awk '{print $4}' | xargs gstack > yp.txt
- 批量重命名網元license備份的文件名:
for i in `ls`; do mv -f $i `echo $i | sed 's/^[a-zA-Z0-9].*_[a-zA-Z0-9].*_\([0-9]\{8\}\)\(_\)|([0-9]\{6\}\)\(\.txt\)$/Lic_Esn_\1\2\3/'`;done
- 統計某個文件夾下的文件占用的字節數:
ls -l | awk 'BEGIN {size=0;} {size = size + $5;} END{print "[end]size is ", size/1024,1024, "M"}'
-
何時需要xargs?
- 有些命令本身不支持管道,這時候要加xargs,本身支持管道命令有限如 cut grep sort uniq wc tee join split等。比如例子:
echo "/opt" | ls -l
其中,ls 本身不支持管道,所以對于前面管道輸出的內容會忽略,不會輸出/opt目錄下的內容;而echo "/opt" | xargs ls -l
加上xargs,執行的結果就是輸出/opt下目錄的內容 - 命令雖然支持管道,但是加不加xargs意義不同。比如:在某個目錄下查找某個abc字符串:
find ./ | grep "abc"
這個命令不會在目錄下文件查找,而是把find出來的內容查找,相當于在一群文件名中查找是否包含abc文件名。而find ./ xargs grep "abc"
這個命令則是把find出來的東西當作參數傳遞給管道后的內容,相當于find出來的文件內容中查找是否包含字符串abc。
- 有些命令本身不支持管道,這時候要加xargs,本身支持管道命令有限如 cut grep sort uniq wc tee join split等。比如例子:
正則表達式:
POSIX正則表達式分為基本正則表達式(BRE)和擴展表達式(ERE)。目前很多UNIX工具程序沿用某一種正則表達式形式來強化本身的功能。常用的包括:1)grep和egrep;2)sed;3)awk;4)more/less;5)vi
比如:
-
grep 'a\{3\}' test.txt
查找包含3個a的行, -
grep '^aa' test.txt
查找以aa開頭的行, -
grep '^$' test.txt
查找空行
后向引用:用
\(
與\)
包裹子表達式,然后用\digit
來引用, 比如:grep `\(why\).*\1` test.txt
匹配why..whygrep `\(ab\)\(cd\)[def]*\2\1` test.txt
匹配abcddcdab-
grep:主打“查找”,常用的選項:
- -v 過濾指定字符串內容的行
- -i 不區分大小寫
- -n 順便打印出行號
- -c 計算出符合行的次數
- -E 默認grep只支持基本的正則表達式,加上-E支持擴展的正則表達式,grep -E和egrep意義一樣,擴展的正則有'+', '?', '|', '()'
常用的命令:
ps -elf | grep -v grep | grep "necomm_agent"
如果不加grep -v grep則輸出2條內容。grep -i 'abc' test.txt
忽略大小寫,找出test.txt包含abc的行grep -v '^&' test.txt > testnew.txt
過濾test.txt的空行-
sed:主打“編輯”,工作原理:從文件或管道中讀取一行,放在模式空間(sed內部的一個臨時緩存)中,進行處理,處理完輸出一行;再讀取一行,再處理一行。
- 增(a追加文本到指定行后,i插入文本到指定行前)
- 單行增加:
sed '2a abc' test.txt
sed '2i abc' test.txt
- 增加多行
sed '2a abc\ cde' test.txt
執行指定的地址范圍:
-
sed可以對單行或多行進行處理,如果在sed命令前面不指定地址范圍,那么默認會匹配所有行。
/abc/,/fff/{sed-commands}
對匹配abc的行到匹配fff的行操作刪
刪除指定的行
sed '/aaa/d' test.txt
改
用新行取代舊行
sed '2c abc' test.txt
文本替換:
sed 's/abc/bcdd/g' test.txt
g表示全局替換,如果不加g,則替換每行第一個匹配的字符串
sed 's/^/abc /' test.txt
在test.txt每行前插入abc
sed -i '/aaa/s/abc/bcd/g' test.txt
加上-i代表修改了文件test.txt
替換部分有幾個特殊的元字符,分別是:
&: 被pattern匹配的內容
\num: 被pattern匹配的第num個分組(正則表達式的概念,\(...\)括起來的部分成為分組)
sed '/d/s/ab/&jj/' test.txt
將匹配d內容的行中的ab替換為abjj
echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
查:
- p輸出指定內容,默認會輸出2次匹配的結果,用n取消默認輸出
按行查詢
sed -n '2p' test.txt
按字符串查詢
sed -n '/abc/p' test.txt
混合查詢
sed -n '2,/abc/p' test.txt
- 多命令編輯:
sed -e '1,5d' -e 's/test/check/' test.txt
awk:主打“分割處理“:文件逐行輸入,空格默認分割,切片后再分析
不是很懂這些進階的命令,仍需要更多理解和學習。