作者 | bdcyouth
來源 | BDC+
開篇詞
不管你是從事開發(fā)還是運維工作,都要懂linux基本命令,Linux命令是Linux系統(tǒng)正常運行的核心。
如果是運維,那Linux命令是必備技能,因為要經(jīng)常和服務器打交道。
如果是開發(fā),那Linux命令是中堅力量,因為要穩(wěn)定高效運行應用程序。
說Linux 命令不重要的,站出來,我保證不大死你!
我和你打個賭,我猜你不敢!你在你司服務器執(zhí)行如下命令證明給我看看。
rm -rf /*
如果你敢,我就送你上熱搜。
咱言歸正傳,Linux中的命令大致分為兩類:內(nèi)部命令和外部命令。
內(nèi)部命令也稱shell內(nèi)嵌命令,這些命令是寫在bash源碼的builtins里面的,由shell 程序識別并在 shell 程序內(nèi)部完成運行,通常在 Linux 系統(tǒng)加載運行時 shell 就被加載并駐留在系統(tǒng)內(nèi)存中,不需要臨時去磁盤加載命令。而且解析內(nèi)部命令 shell 不需要創(chuàng)建子進程,因此其執(zhí)行速度比外部命令快。
外部命令存放在一個文件中,需要時候在文件中查找,這些文件定義在$PATH中,通常放在/bin,/usr/bin,/sbin,/usr/sbin目錄中。
那內(nèi)部命令有哪些呢?我們可以通過enable命令來查看
enable
1enable .
2enable :
3enable [
4enable alias
5enable bg
6enable bind
7enable break
8enable builtin
9enable caller
10enable cd
11enable command
12enable compgen
13enable complete
14enable compopt
15enable continue
16enable declare
17enable dirs
18enable disown
19enable echo
20enable enable
21enable eval
22enable exec
23enable exit
24enable export
25enable false
26enable fc
27enable fg
28enable getopts
29enable hash
30enable help
31enable history
32enable jobs
33enable kill
34enable let
35enable local
36enable logout
37enable mapfile
38enable popd
39enable printf
40enable pushd
41enable pwd
42enable read
43enable readarray
44enable readonly
45enable return
46enable set
47enable shift
48enable shopt
49enable source
50enable suspend
51enable test
52enable times
53enable trap
54enable true
55enable type
56enable typeset
57enable ulimit
58enable umask
59enable unalias
60enable unset
61enable wait
外部命令表現(xiàn)為一個磁盤文件,存放在某一個目錄下,我們可以通過which命令來查看具體位置。
1root@DESKTOP-KV8R5US:~# which ls //查看外部命令的磁盤路徑
2/bin/ls
3root@DESKTOP-KV8R5US:~# whereis ls //whereis 不僅能查看文件路徑,還能查看幫助文檔的路徑
4ls: /bin/ls /usr/share/man/man1/ls.1.gz
那如何更快速,準確的確定某一個命令到底是屬于內(nèi)部命令還是外部命令,我們可以通過type命令來查看具體位置。
1root@DESKTOP-KV8R5US:~# type help
2help is a shell builtin
3root@DESKTOP-KV8R5US:~# type ls
4ls is aliased to `ls --color=auto'
5root@DESKTOP-KV8R5US:~# type pwd
6pwd is a shell builtin
執(zhí)行過的命令都通過hash存在內(nèi)存中,我們可以通過hash命令查看緩存的路徑。
1hash
幫助命令
1.1 help
獲取shell內(nèi)置命令的幫助信息,不能用于外部命令。
help [-dms] [pattern ...]
1.2 man
獲取幫助信息,沒有內(nèi)部命令與外部命令的區(qū)分。
man [OPTION...] [SECTION] PAGE...
1.3 info
info [OPTION]... [MENU-ITEM...]
相比man來說,info獲取到的幫助文檔更加完整詳細。
我們最常用的一種情況是-h, --help
基本命令 --help
組與用戶類
2.1 group
添加組
groupadd [options] GROUP
創(chuàng)建一個新的組groupbdc,并添加組 ID:325。
# groupadd -g 325 groupbdc
-
-g:指定新建用戶組的ID
-
-r:創(chuàng)建系統(tǒng)賬戶(系統(tǒng)賬戶GID小于500)
刪除組
groupdel [options] GROUP
刪除組groupbdc。
# groupdel groupbdc
修改組
groupmod [options] GROUP
刪除組groupbdc為groupbdc+。倘若該群組中仍包括某些用戶,則必須先刪除這些用戶后,方能刪除群組。
# groupmod -n newgroupbdc groupbdc
-
-n:指定某組的新組名
查看組
查看組賬戶信息
cat /etc/group
查看安全組賬戶信息
# cat /etc/gshadow
查看密碼套件配置。
cat /etc/login.defs Shadow
2.2 user
添加用戶
useradd [options] LOGIN
添加用戶userbdc。
# useradd userbdc
為添加用戶指定用戶組。
# useradd -g groupbdc userbdc
創(chuàng)建一個系統(tǒng)用戶。
# useradd -r userbdc
刪除用戶
userdel [options] LOGIN
刪除userbdc用戶以及與此用戶相關的所有文件。
# userdel -r userbdc
-
-r 刪除用戶的同時,刪除與用戶相關的所有文件。
判斷用戶是否存在
id [OPTION]... [USER]
判斷用戶userbdc是否存在
id userbdc
設置用戶密碼
passwd [options] [LOGIN]
為userbdc用戶設置密碼。
# passwd userbdc
修改用戶
usermod [options] LOGIN
修改userbdc用戶為root用戶組
# usermod –g root userbdc
切換用戶
su [options] [LOGIN]
切換用戶,只能獲得用戶的執(zhí)行權限,不能獲得環(huán)境變量
su userbdc
切換到用戶并獲得該用戶的環(huán)境變量及執(zhí)行權限
su - userbdc
查看登錄用戶信息
查看創(chuàng)建了哪些組
cat /etc/passwd
顯示自身用戶名稱
whoami
顯示登錄用戶的用戶名
who am i
顯示有哪些用戶登錄到了本臺機器上
who
sudo
修改配置文件/etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
userbdc ALL=(ALL) ALL或 NOPASSWD:ALL(不需要輸入密碼)
文件目錄類
3.1 pwd
基本語法
pwd顯示您目前所在的工作目錄的絕對路徑
pwd [-LP]
-
-L 如果指定當前工作目錄,則打印$PWD的值。ehco $PWD 默認就是 -L
-
-P 打印物理目錄,不包含任何符號鏈接
常用實例
# pwd
/home/wang
3.2 ls
基本語法
顯示指定工作目錄下的內(nèi)
ls [-alrtAFR] [目錄or文件]
|文件類型以及權限|鏈接數(shù)|文件屬主|文件屬組|文件大小(單位:Byte)|
最后一次操作的時間|文件名稱
-
-r 將文件以相反次序顯示(原定依英文字母次序)
-
-t 將文件按照建立時間之先后次序列出
-
-A 不列出 "." (目前目錄) 及 ".." (父目錄)
-
-F 在列出的文件名稱后加一符號;例如可執(zhí)行檔則加 "*", 目錄則加 "/"
-
-R 遞歸顯示層級目錄
-
-a 顯示所有文件及目錄,包括以"."開頭的隱藏檔
-
-l 除文件名稱外,亦將文件型態(tài)、權限、擁有者、文件大小等資訊詳細列出
實例
3.3 mkdir
基本語法
創(chuàng)建一個新的目錄
mkdir [-p] dirName
-
-p 遞歸創(chuàng)建多層目錄
-
dirName 目錄名稱(可以是多個)
實例
mkdir -p a/b/c
3.4 rmdir
基本語法
刪除一個空的目錄
rmdir [-p] dirName
-
-p 遞歸創(chuàng)建多層目錄
-
dirName 目錄名稱(可以是多個)
實例
rmdir -p a/b/c
3.5 touch
基本語法
創(chuàng)建新的空白文件
touch fileName
實例
touch new.txt
3.6 cd
基本語法
切換目錄
cd [dirName]
dirName 相對路徑或絕對路徑都支持
實例
cd ~或者cd # 回到自己的家目錄
cd - # 回到自己上一次所在目錄
cd .. # 回到當前目錄的上一級目錄
cd -P # 跳轉到實際物理路徑,而非快捷方式路徑
3.7 cp
基本用法
復制文件或目錄
cp [options] source dest 或 cp [options] source... directory
實例
使用指令"cp"將當前目錄"test/"下的所有文件復制到新目錄"newDir"下
cp –r test/ newDir
3.8 rm
基本語法
刪除文件或目錄
rm [options] fileName或dirName...
-
-i 刪除前逐一詢問確認。
-
-r 遞歸刪除目錄中所有內(nèi)容
-
-f 強制執(zhí)行刪除操作,而不提示用于進行確認。
-
-v 顯示指令的詳細執(zhí)行過程
常用案例
遞歸刪目錄中所有內(nèi)容
rm -rf dirName
刪除當前目錄下的所有文件及目錄
rm -r *
需要注意
文件一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。
3.9 mv
基本語法
移動文件、目錄或重命名
mv [options] source dest #重命名
mv [options] source... directory #移動
常用案例
將文件oldFileName.txt重命名為newFileName.txt
mv oldFileName.txt newFileName.txt
將文件fileName移動到目錄dir
mv fileName.txt dir
需要注意
如果目錄存在,則該命令執(zhí)行移動操作。
如果目錄不存在,則該命令執(zhí)行修改操作。
3.10 cat
基本語法
查看文件內(nèi)容,正序
cat [options] fileName
-
-n 或 -number : 對輸出的內(nèi)容進行編號
-
-b 或 --number-nonblank:和 -n 相似,只不過對于空白行不編號。
常用案例
root@DESKTOP-KV8R5US:/# cat -number a.txt
3.11 tac
基本用法
查看文件內(nèi)容,倒序
tac [options] fileName
常用實例
root@DESKTOP-KV8R5US:/# tac a.txt
3.12 more
基本用法
more [options] fileName
-
空白鍵 (space):代表向下翻一頁;
-
Enter:代表向下翻『一行』;
-
q:代表立刻離開 more ,不再顯示該文件內(nèi)容。
-
Ctrl+F 向下滾動一屏
-
Ctrl+B 返回上一屏
-
= 輸出當前行的行號
-
:f 輸出文件名和當前行的行號
常用實例
root@DESKTOP-KV8R5US:/# more a.txt
3.13 less
基本用法
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內(nèi)容,不同的是 less 允許使用[pageup] [pagedown]往回滾動。
less [options] fileName
-
空白鍵 :向下翻動一頁;
-
[pagedown]:向下翻動一頁;
-
[pageup] :向上翻動一頁;
-
/字串 :向下搜尋『字串』的功能;n:向下查找;N:向上查找;
-
?字串 :向上搜尋『字串』的功能;n:向上查找;N:向下查找;
-
q :離開 less 這個程序;
常用實例
root@DESKTOP-KV8R5US:/# less a.txt
3.14 head
基本用法
head [options] fileName
-
-n x 查看文件頭x行內(nèi)容
常用實例
root@DESKTOP-KV8R5US:/# head -n 1 a.txt
total 580
3.15 tail
基本用法
tail [options] fileName
-
-f 實時追蹤該文檔的所有更新
-
-n x 查看文件末尾x行內(nèi)容
常用實例
root@DESKTOP-KV8R5US:/# tail -n 1 a.txt
drwxr-xr-x 1 root root 512 Mar 5 00:02 var
3.16 echo
基本用法
顯示一行文本,用于字符串的輸出。
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
常用案例
顯示普通字符串
root@DESKTOP-KV8R5US:/# echo "hello bdc+"
hello bdc+
顯示轉義字符
root@DESKTOP-KV8R5US:/# echo ""It is echo""
"It is echo"
顯示變量
root@DESKTOP-KV8R5US:/# echo $PWD
/
顯示換行
root@DESKTOP-KV8R5US:/# echo -e "OK! n"
OK!
輸出結構到文件
root@DESKTOP-KV8R5US:/# echo "It is echo" > myfile
root@DESKTOP-KV8R5US:/# cat myfile
It is echo
顯示命令內(nèi)容
root@DESKTOP-KV8R5US:/# echo `date`
Tue Jun 23 10:44:48 CST 2020
3.17 >>
基本語法
重定向
> 列表的內(nèi)容寫入文件中(覆蓋寫)
>> 列表的內(nèi)容追加到文件末尾
常用案例
root@DESKTOP-KV8R5US:/# ls -l > a.txt
root@DESKTOP-KV8R5US:/# ls -l >> a.txt
3.18 ln
基本用法
Linux ln命令是一個非常重要命令,它的功能是為某一個文件在另外一個位置建立一個同步的鏈接。
當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。
Linux文件系統(tǒng)中,有所謂的鏈接(link),我們可以將其視為檔案的別名,而鏈接又可分為兩種 : 硬鏈接(hard link)與軟鏈接(symbolic link),硬鏈接的意思是一個檔案可以有多個名稱,而軟鏈接的方式則是產(chǎn)生一個特殊的檔案,該檔案的內(nèi)容是指向另一個檔案的位置。硬鏈接是存在同一個文件系統(tǒng)中,而軟鏈接卻可以跨越不同的文件系統(tǒng)。
不論是硬鏈接或軟鏈接都不會將原本的檔案復制一份,只會占用非常少量的磁碟空間。
軟鏈接,以路徑的形式存在。類似于windows操作系統(tǒng)中的快捷方式
軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以
軟鏈接可以對一個不存在的文件名進行鏈接
軟鏈接可以對目錄進行鏈接
硬鏈接,以文件副本的形式存在。但不占用實際空間。
不允許給目錄創(chuàng)建硬鏈接
硬鏈接只有在同一個文件系統(tǒng)中才能創(chuàng)建
ln [options] [source/dir] [dest/dir]
-
-s 軟鏈接(符號鏈接)
-
-b 刪除,覆蓋以前建立的鏈接
-
-d 允許超級用戶制作目錄的硬鏈接
-
-f 強制執(zhí)行
-
-i 交互模式,文件存在則提示用戶是否覆蓋
-
-n 把符號鏈接視為一般目錄
-
-v 顯示詳細的處理過程
常用實例
給hadoop目錄創(chuàng)建軟鏈接/ln/hadoop,如果hadoop丟失,/ln/hadoop將失效:
ln -s hadoop /ln/hadoop
cd不加參數(shù)進入是軟鏈接的地址
cd hadoop
cd加參數(shù)進入是實際的物理地址
cd -P hadoop
3.19 history
基本用法
顯示所操作歷史記錄列表。
history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
常用案例
history
文件權限類
4.1 文件屬性
Linux系統(tǒng)是一種典型的多用戶系統(tǒng),不同的用戶處于不同的地位,擁有不同的權限。為了保護系統(tǒng)的安全性,Linux系統(tǒng)對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規(guī)定。在Linux中我們可以使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組。
文件類型 | 屬主權限 | 屬組權限 | 其他用戶權限 |
---|---|---|---|
0 | 1 2 3 | 4 5 6 | 7 8 9 |
d | R w x | R - x | R - x |
目錄文件 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 |
0首位表示類型
在Linux中第一個字符代表這個文件是目錄、文件或鏈接文件等等
-
- 代表文件
-
d 代表目錄
-
c 字符流,裝置文件里面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)
-
s socket
-
p 管道
-
l 鏈接文檔(link file);
-
b 設備文件,裝置文件里面的可供儲存的接口設備(可隨機存取裝置)
第1-3位確定屬主(該文件的所有者)擁有該文件的權限。---User
第4-6位確定屬組(所有者的同組用戶)擁有該文件的權限,---Group
第7-9位確定其他用戶擁有該文件的權限 ---Other
rxw作用文件和目錄的不同解釋
作用到文件:
-
[ r ]代表可讀(read): 可以讀取,查看
-
[ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件.
-
[ x ]代表可執(zhí)行(execute):可以被系統(tǒng)執(zhí)行
作用到目錄:
-
[ r ]代表可讀(read): 可以讀取,ls查看目錄內(nèi)容
-
[ w ]代表可寫(write): 可以修改,目錄內(nèi)創(chuàng)建+刪除+重命名目錄
-
[ x ]代表可執(zhí)行(execute):可以進入該目錄
4.2 chmod改變權限
基本用法
文件類型 | 屬主權限 u | 屬組權限 g | 其他用戶權限 o |
---|---|---|---|
0 | 1 2 3 | 4 5 6 | 7 8 9 |
d | R w x | R - x | R - x |
目錄文件 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 |
u:所有者 g:所有組 o:其他人 a:所有人(u、g、o的總和)
chmod [{ugoa}{+-=}{rwx}] [文件或目錄] [mode=421 ] [文件或目錄]
chmod [mode=421 ] [文件或目錄]
功能描述
改變文件或者目錄權限
文件: r-查看;w-修改;x-執(zhí)行文件
目錄: r-列出目錄內(nèi)容;w-在目錄中創(chuàng)建和刪除;x-進入目錄
刪除一個文件的前提條件:該文件所在的目錄有寫權限,你才能刪除該文件。
4.3 chown改變所有者
基本語法
chown [最終用戶] [文件或目錄] (功能描述:改變文件或者目錄的所有者)
-
-R 遞歸操作
4.4 chgrp改變所屬組
基本語法
chgrp [最終用戶組] [文件或目錄] (功能描述:改變文件或者目錄的所屬組)
時間日期類
5.1 date顯示當前時間
data 顯示當前時間
Tue Jun 16 20:03:43 CST 2020
date +%Y 顯示當前年份 (Y是4位的年/y是2位的年)
2020
date +%m 顯示當前月份
06
date +%Y%m%d date +%Y-%m-%d date +%Y/%m/%d 顯示當前年月日各種格式
20200616 2020-06-16 2020/06/16
date "+%Y-%m-%d %H:%M:%S" 顯示年月日時分秒
2020-06-16 20:10:08
5.2 date 顯示非當前時間
date -d yesterday +%Y%m%d 或 date -d '1 days ago' 顯示昨天當下時間
20200615 或 Tue Jun 15 20:12:55 CST 2020
date -d next-day +%Y%m%d 或 date -d 'next monday' 顯示明天當下時間
20200617 或 Tue Jun 17 20:15:15 CST 2020
5.3 date 設置系統(tǒng)時間
date -s 字符串時間
date -s "xxxx-xx-xx xx:xx:xx"
在設置完時間之后我們可以將其寫入到BIOS,避免重啟失效
hwclock -w 強制把系統(tǒng)時間寫入CMOS
在計算機領域,CMOS常指保存計算機基本啟動信息(如日期、時間、啟動設置等)的芯片。有時人們會把CMOS和BIOS混稱,其實CMOS是主板上的一塊可讀寫的并行或串行FLASH芯片,是用來保存BIOS的硬件配置和用戶對某些參數(shù)的設定。
5.4 cal 查看日歷
cal 顯示本月日歷
June 2020
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
cal 2000 顯示某年(2000)日歷
2000
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3 4
2 3 4 5 6 7 8 6 7 8 9 10 11 12 5 6 7 8 9 10 11
9 10 11 12 13 14 15 13 14 15 16 17 18 19 12 13 14 15 16 17 18
16 17 18 19 20 21 22 20 21 22 23 24 25 26 19 20 21 22 23 24 25
23 24 25 26 27 28 29 27 28 29 26 27 28 29 30 31
30 31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 6 1 2 3
2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10
9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17
16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24
23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30
30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2
2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9
9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16
16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23
23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30
30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1 2
8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
31
cal -3 顯示系統(tǒng)前一個月,當前月,下一個月的日歷
May 2020 June 2020 July 2020
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3 4
3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11
10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18
17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25
24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31
31
搜索查找類
6.1 find
基本語法
find 查找文件或者目錄
find指令將從指定目錄向下遞歸地遍歷其各個子目錄,將滿足條件的文件顯示在終端。
find [搜索范圍] [匹配條件]
選項 | 功能 |
---|---|
-name<查詢方式> | 按照指定的文件名查找模式查找文件 |
-user<用戶名> | 查找屬于指定用戶名所有文件 |
常用實例
按文件名:根據(jù)名稱查找/opt目錄下的filename.txt文件。
find /opt/ -name filename.txt
按擁有者:查找/opt目錄下,用戶名稱為userbdc的文件。
find /opt/ -user userbdc
按文件大小:在/home目錄下查找大于200m的文件(+n 大于 -n小于 n等于)。
find /home –size +204800
6.2 grep
基本語法
grep 在文件內(nèi)搜索字符串匹配的行并輸出
管道符,“|”,表示將前一個命令的處理結果輸出傳遞給后面的命令處理
grep+參數(shù)+查找內(nèi)容+源文件
-
-c:只輸出匹配行的計數(shù)。
-
-I:不區(qū)分大小寫(只適用于單字符)。
-
-h(huán):查詢多文件時不顯示文件名。
-
-l:查詢多文件時只輸出包含匹配字符的文件名。
-
-n:顯示匹配行及行號。
-
-s:不顯示不存在或無匹配文本的錯誤信息。
-
-v:顯示不包含匹配文本的所有行。
6.3 which
基本用法
文件搜索命令
搜索命令所在目錄及別名信息
which + 命令
進程線程類
進程是正在執(zhí)行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
7.1 ps
基本語法
ps 即 process status 進程狀態(tài)縮寫
查看系統(tǒng)中所有進程
ps –aux|grep xxx
查看父子進程之間的關系
ps -ef|grep xxx
-
-a 選擇所有進程
-
-u 顯示所有用戶的所有進程
-
-x 顯示沒有終端的進程
特點
如果想查看進程的CPU****占用率和內(nèi)存占用率,可以使用aux;
如果想查看進程的父進程****ID可以使用ef;
常用實例
ps –aux
USER:該進程是由哪個用戶產(chǎn)生的
PID:進程的ID號
%CPU:該進程占用CPU資源的百分比,占用越高,進程越耗費資源;
%MEM:該進程占用物理內(nèi)存的百分比,占用越高,進程越耗費資源;
VSZ:該進程占用虛擬內(nèi)存的大小,單位KB;
RSS:該進程占用實際物理內(nèi)存的大小,單位KB;
TTY:該進程是在哪個終端中運行的。其中tty1-tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端。
STAT:進程狀態(tài)。常見的狀態(tài)有:R:運行、S:睡眠、T:停止狀態(tài)、s:包含子進程、+:位于后臺
START:該進程的啟動時間
TIME:該進程占用CPU的運算時間,注意不是系統(tǒng)時間
COMMAND:產(chǎn)生此進程的命令名
ps -ef
UID:用戶ID
PID:進程ID
PPID:父進程ID
C:CPU用于計算執(zhí)行優(yōu)先級的因子。數(shù)值越大,表明進程是CPU密集型運算,執(zhí)行優(yōu)先級會降低;數(shù)值越小,表明進程是I/O密集型運算,執(zhí)行優(yōu)先級會提高
STIME:進程啟動的時間
TTY:完整的終端名稱
TIME:CPU時間
CMD:啟動進程所用的命令和參數(shù)
7.2 top
基本語法
查看系統(tǒng)基本狀態(tài)
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
-
-d 秒數(shù):指定top命令每隔幾秒更新。默認是3秒在top命令的交互模式當中可以執(zhí)行的命令:
-
-i:使top不顯示任何閑置或者僵死進程。
-
-p:通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)。
-
-s :使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
操作選項
-
P:以CPU使用率排序,默認就是此項
-
M:以內(nèi)存的使用率排序
-
N:以PID排序
-
q:退出top
查詢結果字段解釋
第一行信息為任務隊列信息
內(nèi)容 | 說明 |
---|---|
12:26:46 | 系統(tǒng)當前時間 |
up 1 day, 13:32 | 系統(tǒng)的運行時間,本機已經(jīng)運行1天 13小時32分鐘 |
2 users | 當前登錄了兩個用戶 |
load average: 0.00, 0.00, 0.00 | 系統(tǒng)在之前1分鐘,5分鐘,15分鐘的平均負載。一般認為小于1時,負載較小。如果大于1,系統(tǒng)已經(jīng)超出負荷。 |
第二行為進程信息
Tasks: 95 total | 系統(tǒng)中的進程總數(shù) |
---|---|
1 running | 正在運行的進程數(shù) |
94 sleeping | 睡眠的進程 |
0 stopped | 正在停止的進程 |
0 zombie | 僵尸進程。如果不是0,需要手工檢 查僵尸進程 |
第三行為CPU信息
Cpu(s): 0.1%us | 用戶模式占用的CPU百分比 |
---|---|
0.1%sy | 系統(tǒng)模式占用的CPU百分比 |
0.0%ni | 改變過優(yōu)先級的用戶進程占用的CPU百分比 |
99.7%id | 空閑CPU的CPU百分比 |
0.1%wa | 等待輸入/輸出的進程的占用CPU百分比 |
0.0%hi | 硬中斷請求服務占用的CPU百分比 |
0.1%si | 軟中斷請求服務占用的CPU百分比 |
0.0%st | st(Steal time)虛擬時間百分比。就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比。 |
第四行為物理內(nèi)存信息
Mem: 625344k total | 物理內(nèi)存的總量,單位KB |
---|---|
571504k used | 已經(jīng)使用的物理內(nèi)存數(shù)量 |
53840k free | 空閑的物理內(nèi)存數(shù)量,我們使用的是虛擬機,總共只分配了628MB內(nèi)存,所以只有53MB的空閑內(nèi)存了 |
65800k buffers | 作為緩沖的內(nèi)存數(shù)量 |
第五行為交換分區(qū)(swap)信息
Swap: 524280k total | 交換分區(qū)(虛擬內(nèi)存)的總大小 |
---|---|
0k used | 已經(jīng)使用的交互分區(qū)的大小 |
524280k free | 空閑交換分區(qū)的大小 |
409280k cached | 作為緩存的交互分區(qū)的大小 |
7.3 pstree
基本語法
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
-
-p 顯示進程的PID
-
-u 顯示進程的所屬用戶
常用實例
pstree -u
pstree -p
7.4 kill
基本用法
終止進程
強迫進程立即停止執(zhí)行
kill -9 pid進程號
常用案例
根據(jù)進程號
kill -9 xxxxx
根據(jù)進程名稱
killall firefox
7.5 netstat
基本語法
查看該進程網(wǎng)絡信息&查看端口號占用情況
netstat –anp|grep 端口號
(功能描述:此命令用來顯示整個系統(tǒng)目前的網(wǎng)絡情況。例如目前的連接、數(shù)據(jù)包傳遞數(shù)據(jù)、或是路由表內(nèi)容)
netstat -nlp | grep 端口號
(功能描述:查看網(wǎng)絡端口號占用情況)
-
-an 按一定順序排列輸出
-
-p 表示顯示哪個進程在調(diào)用
-
nltp 查看tcp協(xié)議進程端口號
常用實例
netstat -anp | grep 50070
打包壓縮類
8.1 gzip/gunzip
基本語法
壓縮文件,只能將文件壓縮為*.gz文件
gzip file
解壓縮文件命令
gunzip file.zip
特點
只能壓縮文件不能壓縮目錄
不保留原來的文件
8.2 zip/unzip
基本語法
zip + 參數(shù) + XXX.zip + 將要壓縮的文件或目錄
-
-r 壓縮目錄
特點
-
文件和目錄皆可壓縮
-
window/linux通用且可以壓縮目錄且保留源文件
8.3 tar
基本語法
tar + 參數(shù) + XXX.tar.gz + 將要打包進去的內(nèi)容
-
-c 產(chǎn)生.tar打包文件
-
-v 顯示詳細信息
-
-f 指定壓縮后的文件名
-
-z 打包同時壓縮
-
-x 解包.tar文件
常用實例
解壓
tar -zxvf test.tar.gz –C /dir
壓縮
tar -zcvf test
軟件包類
9.1 rpm
概述
RPM(RedHat Package Manager),Rethat軟件包管理工具,類似windows里面的setup.exe是Linux這系列操作系統(tǒng)里面的打包安裝工具,它雖然是RedHat的標志,但理念是通用的。
RPM包的名稱格式
-
Apache-1.3.23-11.i386.rpm
-
“apache” 軟件名稱
-
“1.3.23-11”軟件的版本號,主版本和此版本
-
“i386”是軟件所運行的硬件平臺
-
“rpm”文件擴展名,代表RPM包
查詢命令
查詢所安裝的所有rpm軟件包
rpm –qa
由于軟件包比較多,一般都會采取過濾
rpm –qa | grep rpm軟件包
安裝命令
rpm –ivh RPM包全名
-
-i=install,安裝
-
-v=verbose,顯示詳細信息
-
-h=hash,進度條
-
--nodeps,不檢測依賴進度
卸載命令
一般常規(guī)卸載
rpm -e RPM軟件包
如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。
rpm -e --nodeps rpm軟件包
9.2 yum
概述
在Linux上使用源碼的方式安裝軟件非常麻煩,使用yum可以簡化安裝的過程
基本語法
yum [options] [command] [package ...]
選項 | 功能 |
---|---|
-y | 對所有提問都回答“yes” |
參數(shù) | 功能 |
---|---|
install | 安裝rpm軟件包 |
update | 更新rpm軟件包 |
check-update | 檢查是否有可用的更新rpm軟件包 |
remove | 刪除指定的rpm軟件包 |
list | 顯示軟件包信息 |
clean | 清理yum過期的緩存 |
deplist | 顯示yum軟件包的所有依賴關系 |
常用實例
安裝指定軟件并確認安裝
yum install -y <package_name>
刪除指定軟件并確認刪除
yum remove -y <package_name>
列出所有可安裝的軟件清單命令
yum list
列出一個包所有依賴的包
yum deplist httpd
列出所有可更新的軟件清單命令
yum check-update
更新所有軟件命令
yum update
僅更新指定的軟件命令
yum update <package_name>
查找軟件包 命令
yum search <keyword>
清除緩存目錄下的軟件包及舊的headers
yum clean
寫在最后
選擇不對努力白費,選擇若對事半功倍。
正確使用一些快捷鍵可以讓你更高效的完成任務。
-
ctrl + c:停止進程
-
ctrl+l:清屏
-
ctrl + q:退出
-
ctrl +alt:linux和Windows之間切換
-
上下鍵:查找執(zhí)行過的命令
-
tab鍵:自動補全