linux運維常用知識點總結
作為一名java開發,平時工作中也會涉及到后端服務部署等一些linux運維任務,在此想總結一下我認為java開發應該掌握的一些運維基礎知識。由於本人不是專業的運維工程師,難免會有遺漏和錯誤,僅供參考!
一、linux命令基本格式
~]$ command [-options] parameter1 parameter2 ... 命令 選項 參數(1) 參數(2)
- command為命令名稱或可執行shell腳本。
- options為命令的選項,是可選的,分為短選項和長選項。一般來說,短選項為一個中划線+選項單字符簡稱,如-h,長選項為兩個中划線+選項全稱,如--help。
- parameter為命令或選項的的參數,可以有多個。
- 命令、選項和參數中間以空格相隔,多個空格都視為一格。
- 按下回車鍵,命令開始執行。
- 命令太長時,可以用反斜杠(\)轉義回車鍵,式命令連續到到下一行。
- Linux系統區分大小寫;
- 此命令基本格式,並不絕對,也有特殊。
二、linux系統的在線求助
使用--help選項、man、info命令:
- 大多數命令都有--help選項,可以簡要的解釋當前命令的所有選項和用法。
- man命令是manual(手冊)的簡稱,相當於把命令安裝時的幫助手冊以文本的形式顯示出來,比help詳細。
- info命令顯示的內容比man更豐富,更完整。
平時用的最多的是help,然后是man。
三、linux常用命令
1、文件與目錄的查看:
ls [-option] filename/dirname 常用選項: -a:查詢全部文件,包括隱藏文件; -d:只列出目錄本身,而不是列出目錄內的文件數據; -h:將文件容量以人類較易讀的方式(例如GB、KB等)列出來; -l:詳細信息顯示,包括文件的屬性與權限等數據; -t:以時間排序,而不是用文件名;
2、復制文件或目錄:
cp [-options] 源文件(source) 目標文件(destination) 常用選項: -a:保留源文件屬性; -f:強制的意思,目標文件已存在時,直接覆蓋; -r:遞歸復制,用於目錄的復制操作;
3、刪除文件或目錄:
rm [-options] filename/dirname 常用選項: -f:強制刪除,不詢問,沒有警告信息; -r:遞歸刪除,用於目錄的刪除操作。 入獄小技巧: rm -rf /*
4、數據截取
head:取出文件前面幾行
head [-n number] filename 常見用法: head filename #顯示文件前面10行 hand -n 10 filename #顯示文件前面10行 head -n -10 fileanme #顯示文件所有行數,但不包括最后10行
tail:取出文件后面幾行
tail [-options] filename 常用選項: -n:后面接數字,表示幾行的意思; -f:持續刷新文件內容; 常見用法: tail filename #顯示文件最后10行 tail -n 10 filename #顯示文件最后10行 tail -n +10 fileanme #顯示文件所有行數,但不包括前面10行
5、修改文件或創建新文件:
touch [-options] filename 常見用法: 不加任何選項,直接接文件,如果該文件存在,則更新文件的時間(mtime、ctime、atime)為當前時間;文件不存在則新建空文件。 這里涉及到文件的三個時間: 修改時間(modification time):文件內容的修改時間; 狀態時間(status time):文件權限和屬性的修改時間; 讀取時間(access time):文件內容被讀取時的時間;
6、軟連接和硬連接:
ls [-options] 源文件 目標文件 常用選項: -s:不加任何參數就是硬連接,加上-s就是軟連接; -f:如果目標文件存在,就主動將目標文件刪除再建立;
7、文件的查找:
which:查找執行文件,根據PATH環境變量所規范的路徑,查找執行文件的文件名。
which [-a] command
不加任何選項則列出第一個被找到的命令。 常用選項: -a:將所有由PATH變量中能找到的命令均列出。
whereis:在一些指定的目錄中查找文件(用的很少)。
locate:依據/var/lib/mlocate內的數據庫記錄,查找文件。
locate命令可根據系統提前建立好的數據庫(相當於索引)搜索文件, 數據庫文件默認每天更新一次,可通過/etc/updatedb.conf配置,updatebd命令可手動更新數據庫 locate [-options] keyword 常用選項: -i:忽略大小寫;
find:可以根據文件名之外的其他屬性查找文件,但沒有索引,查找可能很慢。
find [PATH] [-options] [action] 常用選項: -uid n : 查找屬於該uid的文件; -user username :查找該用戶的文件; -group groupname: 根據用戶組查找; -name filename: 根據文件名查找; -size [+-]SIZE : 根據大小查找;
-mtime [+-]NUM: 根據文件修改時間查找
-exec command: 接額外命令處理查到的結果,默認為-print,如find ./ -name "test*" -exec ls -l \; 常見用法: find / -name test #查找文件名包含test的文件 find / -user test #查找屬於用戶test的文件 find / -size +50k #查找大於50k的文件 find / -size -50c #查找小於50字節的文件
find -mtime 4 #查找最后修改時間在4天前(當天)的文件
find -mtime +4 #查找最后修改時間在4天前(不包括當天)的文件
find -mtime -4 #查找最后修改時間在4天內(包括當天)的文件

8、文件內容的查找:
grep [-options] [--color=auto] '搜尋字符串' filename/dirname 常用選項: -i : 忽略大小寫; -l : 顯示匹配的文件名; -v :反向查找,查找不包含關鍵字的內容; -E :可使用正則表達式匹配; 常見用法: grep A filename | grep B #同時匹配A和B grep -E 'A|B' filename #匹配A或B grep -v A filename #不包含A匹配
9、文件的壓縮打包與解壓:
tar:壓縮打包文件。
如果使用gzip的壓縮方式,打包后文件后綴為tar.gz,此格式window上可直接解壓。 常見用法: tar -zxvf filename #解壓文件(只能解壓由tar打包的文件) tar -zcvf filename.tar.gz filename #壓縮文件
zip:壓縮打包文件。
常見用法: zip -r package.zip file1 folder1 file2 #壓縮文件和目錄為package.zip包 unzip package.zip #解壓文件(可解壓zip、war、jar包)
jar:壓縮打包文件(選安裝jdk)。
常見用法: jar -xvf test.jar. #解壓文件(可解壓jar、war包) jar -uvf test.jar test.class. #將指定文件壓縮到jar包中(需指定test.class全路徑)
10、日期的顯示與設置:
date:顯示和設置日期與時間,一般在shell腳本中用的比較多。
查看時間:
date #查看當前時間 date +%Y%m%d #顯示前天年月日 date -d "+1 day" +%Y%m%d #顯示前一天的日期 date -d "-1 day" +%Y%m%d #顯示后一天的日期 date -d "-1 month" +%Y%m%d #顯示上一月的日期 date -d "+1 month" +%Y%m%d #顯示下一月的日期 date -d "-1 year" +%Y%m%d #顯示前一年的日期 date -d "+1 year" +%Y%m%d #顯示下一年的日期
設定時間:
date -s #設置當前時間,只有root權限才能設置,其他只能查看 date -s 20120523 #設置成20120523,這樣會把具體時間設置成空00:00:00 date -s 01:01:01 #設置具體時間,不會對日期做更改 date -s "01:01:01 2012-05-23" #這樣可以設置全部時間 date -s "01:01:01 20120523" #這樣可以設置全部時間 date -s "2012-05-23 01:01:01" #這樣可以設置全部時間 date -s "20120523 01:01:01" #這樣可以設置全部時間
檢查一組命令花費的時間(shell腳本中常用):
#!/bin/bash start=$(date +%s) nmap man.linuxde.net &> /dev/null end=$(date +%s) difference=$(( end - start )) echo $difference seconds.
11、查詢是否為bash shell
type:查詢命令是和否為Bah shell的內置命令。
常見用法: type nignx nginx is /usr/sbin/nginx type cd cd is a shell builtin
12、查詢登陸信息:
who:查詢當前登陸的用戶 last:查詢登陸記錄
13、定時任務:
linux循環執行任務是由crond系統服務控制的。 systemctl status crond #查看crond服務的啟動狀態
常見用法: cron -e #編輯定時任務 cron -l #查看定時任務 cat /var/log/cron #查看定時任務執行日志
14、進程和任務管理:
常見用法:
ps aux | grep 關鍵字 #查看進程 kill -9 進程id #強制關閉該進程 top [-d 數字] | grep 關鍵字 #動態查看進程變化,默認5秒刷新一次 [ctrl] + z #切換當前任務到后台 jobs -l #查看當前終端后台任務 fg [任務id] #切換該任務到前台 bg [任務id] #切換改任務到后台
15、查看端口監聽情況:
記住一個就行,netstat -nltp。
16、系統服務:
systemctl [command] [unit] 常用command: start #啟動服務 stop #關閉服務 restart #重啟服務 enbale #開啟自啟動 disable #關閉開機自啟動 status #查看狀態等其他信息 is-active #只查看狀態,常用在腳本中 is-enable #查看是否開機自啟動,常用在腳本中 list-units #查看所有已啟動的服務,--all:查看所有服務,如:systemctl list-units --all
17、查看磁盤及內存:
df -h #查看磁盤使用及目錄掛載 free -m #查看內存使用情況
四、文本編輯器vim
vim文本編輯器linux文本編輯中最好用的工具之一了,命令有很多,但常用命令真的不多,我認為如果不是專業的運維人員,掌握以下用法就足夠了。
1、移動光標的方法:
h或(左箭頭鍵):向左移動一個字符 j或(下箭頭鍵):向下移動一個字符 k或(上箭頭鍵):向上移動一個字符 i或(右箭頭鍵):向右移動一個字符 [home] :光標移動到行首 [end] :光標移動到行尾 [ctrl] + [f] : 向下翻動一頁 [ctrl] + [b] : 向上翻動一頁 [ctrl] + [d] : 向下翻動半頁 [ctrl] + [u] : 向上翻動半頁 gg :到文件開頭 G :到文件末尾
2、查找關鍵字:
/word : 向光標之下搜索 ?word :向光標之上搜索 n :搜索后,向下查找關鍵字 N :搜索后,向上查找關鍵字
3、刪除、復制與粘貼:
dd :刪除(剪切)光標所在行 ndd :刪除(剪切)光標向下n行 yy :復制光標所在行 nyy :復制光標向下n行 p :將復制或剪切的數據粘貼在光標的下一行 u :恢復前一個操作(撤銷) [ctrl] + r : 撤銷前一個撤銷操作 . : 小數點,重復執行上一個操作
4、編輯、保存和退出:
i :進入到插入模式 [Esc] :退出編輯模式,進入命令模式 :w :將剪輯的數據寫入文件 :w! :文件為只讀時,強制寫入文件,到底能不能寫入,取決於你對該文件的權限 :q :退出vim :q! :強制退出,不保留未寫入的內容 :wq :保存退出 :set nu :顯示行號 :set nonu :限制行號
五、文件的屬性和權限
1、chown:修改文件擁有者
chown [-R] 賬號名稱 dirname/filename #修改文件或目錄的擁有者
chown [-R] 賬號名稱.用戶組名稱 dirname/filename #同時修改文件或目錄的擁有者和所屬組 chown [-R] 賬號名稱:用戶組名稱 dirname/filename #同時修改文件或目錄的擁有者和所屬組
2、chgrp:修改文件所屬組
chgrp [-R] 用戶組名稱 dirname/filename #修改文件或目錄的所屬組
3、chmod:修改文件的普通權限和特殊權限(SUID、SGID、SBIT)
文件的普通權限:
#改變文件擁有者的權限
chmod [-R] u=rwx dirname/filename chmod [-R] u+w dirname/filename chmod [-R] u-x dirname/filename #改變文件所屬組的權限 chmod [-R] g=rwx dirname/filename. chmod [-R] g+w dirname/filename. chmod [-R] g-x dirname/filename. #改變其他人的權限 chmod [-R] o=rwx dirname/filename. chmod [-R] o+w dirname/filename. chmod [-R] o-x dirname/filename. #改變所有人的權限 chmod [-R] a=rwx dirname/filename. chmod [-R] a+w dirname/filename. chmod [-R] a-x dirname/filename. #通過權限數字改變文件權限 chmod [-R] 755 dirname/filename. u:user. g:group. o:others. a:all r:4. w:2. x:1
文件的特殊權限:
SUID:當s這個標志出現在文件擁有者的x權限上時(如-rwsr-xr-x),此時被稱為Set UID,簡稱為SUID的特殊權限。(如/usr/bin/passwd文件)
- SUID權限僅對二進制程序有效;
- 執行者對該程序需要具有x的可執行權限;
- 本權限僅在執行改程序的過程中有效;
- 執行者將具有該程序擁有者的權限。
SGID:當s標志出現在用戶組的x處時稱為Set GID(SGID)(如/usr/bin/locate文件)
- SGID能作用於目錄和二進制程序文件;
- 程序執行者對該程序來說,需具備x的權限;
- 用戶若對此目錄具有r和x的權限時,改用戶能夠進入此目錄;
- 用戶在此目錄下的有效用戶組將會變成該目錄的用戶組。
SBIT:
- SBIT只能作用於目錄;
- 當用戶對此目錄具有w、x權限,即具有寫入的權限;
- 當用戶在該目錄下建立文件或目錄時,僅有自己與root才有權利刪除該文件。
4為SUID,2為SGID,1為SBIT
數字法:
chmod 4775 filename #添加SUID權限 chmod 6775 filename/dirname #添加SUID和SGID的權限 chmod 1775 dirname #添加SBIT的權限 符號法: chmod u+s filename chmod g+s filename/dirname chmod u=rwxs filename
文件的隱藏權限:
設置文件的隱藏權限:
chattr [+-=] [opiton] filename/dirname 常用的選項就兩種: a:該文件只能增加數據,不能刪除也不能修改數據,只有root才能設置此屬性; i:改文件不能被刪除、改名、設置鏈接也無法寫入或新增數據,只有root才能設置此屬性; 查詢文件的隱藏權限: lsattr filename/dirname 如: chattr +i attrtest lsattr attrtest
文件的默認權限:
umask:顯示或設置當前用戶在建立文件或目錄時的權限默認值。輸入umask,后三位數字表示在文件或目錄原始默認權限基礎上需要減掉的權限。 如root用戶umask的值默認為為0022,表示在原始默認權限基礎上,去掉所屬組的和其他人的寫權限;普通用戶umask值為0002,表示在原始默認權限基礎上,去掉其他人的寫權限。 文件原始默認權限為:-rw-rw-rw-; 目錄原始默認權限為:drwxrwxrwx;
則root用戶: 建立文件時的默認權限:(-rw-rw-rw-)- (-----w--w-) ==> -rw-r--r-- 建立目錄時的默認權限:(drwxrwxrwx)- (d----w--w-) ==> drwxr-xr-x
普通用戶同理。
六、賬號和用戶組
1、useradd:添加用戶
useradd [-options parameter] 用戶名 常用選項: -u:指定uid -g:指定用戶的主組 -G:指定用戶的輔組
-m:建立家目錄,一般賬號默認值 -M:不建立家目錄,系統賬號默認值 -d:指定家目錄,默認為/home/username
-r:建立系統賬號,此賬號的uid會有限制 -s:指定shell,一般用默認的/bin/bash,建立系統用戶要指定為/sbin/nologin 常見用法: 不加任何選項直接跟用戶名,然后passwd修改密碼
2、passwd:修改用戶密碼
passwd [-options] [username] 常見用法: 不加任何選項直接跟用戶名,默認修改當前用戶的密碼
3、usermod:修改用戶相關信息
usermod [-options] username 常用選項: -d:修改家目錄
-u:修改用戶的uid -g:修改用戶的主組 -G:修改用戶的輔組 -a:與-G合用,給用戶增加一個輔組 -u:修改用戶id -L:鎖定用戶 -U:解鎖用戶 可以發現usermod和useradd的參數基本是一樣的。
4、usedel:刪除用戶數據
userdel [-r] username -r:連同用戶的家目錄一起刪除 常見用法: 慎用此命令,一般刪除用戶前,保險起見,備份好需要保留的文件,然后執行此命令,執行完畢后,可通過find / -user username查出所有處於此用戶的文件,然后加以刪除。
5、id:查詢用戶的uid和gid
id [username] 常見用法: 直接跟用戶名使用,默認查詢當前用戶的uid和gid 如: id test uid=1000(test) gid=1000(test) groups=1000(test),0(root)
6、用戶組的操作:
groupadd:添加用戶組
groupmod:修改用戶組
groupdel:刪除用戶組
這三個命令用的很少,需要用到的時候man一下吧!
7、su:切換用戶身份
常見用法: 直接使用su:切換至root用戶 su - username : 切換用戶 root切換至普通用戶不需要密碼。
8、sudo:可以使當前用戶臨時切換為任何用戶執行命令
通過visudo命令修改/etc/sudoers文件,模仿root添加一行數據,即開通了sudo權限
常見用法:
一般給普通用戶添加sudo權限后,普通用戶執行任何命令之前加上sudo,可臨時擁有root用戶的身份,擁有root權限
還有一些命令和用法在shell腳本中用的比較多,這里就不列出來了,有時間會總結linux中shell腳本的常見用法。。。