上一章:第02章-vmware安裝centos7系統
我們知道作業系統管理硬體,作業系統向上會提供統一的接口,而shell就是使用者和作業系統通話的中間人,shell會将使用者輸入的指令解釋給作業系統接口進而來管理和調用各種硬體。作業系統的核心是核心(kernel),而shell就是包圍在核心外面的一層“殼”如下圖(圖-2-1),同時這個“殼”也可以調用其它應用。
圖-2-1
常說的shell通常指shell腳本,shell腳本就是由一行行指令組成,shell程式設計隻要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
常見的shell有:Bourne Shell(/usr/bin/sh或/bin/sh),Bourne Again Shell(/bin/bash),C Shell(/usr/bin/csh),K Shell(/usr/bin/ksh)。
- 檢視目前使用的shell
[root@cdphost ~]# echo $SHELL
/bin/bash
接下來看Linux常用指令:
man
作用:檢視指令的使用方法。
[root@cdphost ~]# man ls
reboot
作用:重新開機作業系統。
[root@cdphost ~]# reboot
shutdown
作用:關閉作業系統。
[root@cdphost ~]# shutdown
常見目錄操作指令:
ls
作用:列出目錄和檔案資訊,預設列出目前目錄下的資訊。
文法:ls [選項] [檔案或者目錄]。
ls選項說明:
選項 | 說明 |
-l | 清單形式顯示 |
-a | 顯示所有檔案包括隐藏檔案 |
-A | 顯示所有檔案包括隐藏檔案但是不包括.和.. |
-h | 顯示合适的檔案大小 |
-t | 按檔案建立時間的由近到遠顯示 |
-r | 倒叙列出檔案 |
[root@cdphost ~]# ls -l
total 4194316
-rw-------. 1 root root 1808 Dec 15 2022 anaconda-ks.cfg
-rw------- 1 root root 1908 Jun 19 16:56 dead.letter
drwxr-xr-x. 2 root root 6 Dec 15 2022 Desktop
drwxr-xr-x. 2 root root 6 Dec 15 2022 Documents
... ...
pwd
作用:檢視目前路徑。
[root@cdphost ~]# pwd
/root
cd
作用:切換目錄。
文法:cd <目錄名稱>。
目錄名稱說明:
目錄名稱 | 說明 |
. | 目前目錄 |
.. | 上級目錄 |
~ | Home目錄 |
- | 上次通路目錄 |
絕對路徑 | 例如:/home/cdp |
[root@cdphost ~]# cd /usr/bin
[root@cdphost bin]# pwd
/usr/bin
mkdir
作用:建立目錄。
文法:mkdir [選項] <目錄名稱>。
mkdir選項說明:
選項 | 說明 |
-p | 確定上級目錄存在,不存在的就建一個 |
[root@cdphost ~]# mkdir -p /root/temp1/temp2
[root@cdphost ~]# cd /root/temp1/temp2/
[root@cdphost temp2]# pwd
/root/temp1/temp2
rm
作用:删除檔案或者目錄。
文法:rm [選項] <檔案名稱/目錄名稱>。
rm選項說明:
選項 | 說明 |
-r | 遞歸删除 |
-f | 強制删除 |
[root@cdphost temp2]# pwd
/root/temp1/temp2
[root@cdphost temp2]# cd ~
[root@cdphost ~]# pwd
/root
[root@cdphost ~]# rm -rf temp1
[root@cdphost ~]#
rename
作用:檔案重命名。
文法:rename 源字元串 目标字元串 檔案。
[root@cdphost temp1]# ls
aaa aaabbb.txt dddaaa.txt
[root@cdphost temp1]# rename aaa bbb aaabbb.txt
[root@cdphost temp1]# ls
aaa bbbbbb.txt dddaaa.txt
[root@cdphost temp1]#
mv
作用:移動檔案或者檔案重命名。
文法:mv <源檔案名> <目标檔案名>。
例1:/root/temp1/aaa目錄移動到/root/temp2目錄下。
[root@cdphost temp1]# mv /root/temp1/aaa /root/temp2
例2:/root/temp1/aaa目錄下所有檔案移動到/root/temp2目錄下。
[root@cdphost temp1]# mv /root/temp1/aaa/* /root/temp2/bbb
例3:/root/temp2目錄下bbb檔案名重命名為ccc檔案名。
[root@cdphost temp2]# mv /root/temp2/bbb /root/temp2/ccc
cp
作用:複制檔案或者目錄到其它目錄下。
文法:cp <源檔案名或者目錄> <目标>。
cp選項說明:
選項 | 說明 |
-r | 複制目前檔案及其子目錄和檔案 |
例1:/root/temp1/aaa目錄複制到/root/temp2/ccc目錄下。
[root@cdphost ccc]# cp -r /root/temp1/aaa /root/temp2/ccc
例2:/root/temp1/aaa目錄下所有檔案複制到/root/temp2/ccc目錄下。
[root@cdphost ccc]# cp -r /root/temp1/aaa/* /root/temp2/ccc
常見檔案操作指令:
touch
作用:建立檔案。
[root@cdphost temp1]# ll
total 0
[root@cdphost temp1]# touch a.txt
[root@cdphost temp1]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 25 23:00 a.txt
cat
作用:檢視檔案内容,适合小檔案。
[root@cdphost temp1]# cat /etc/passwd
more
作用:檢視檔案内容,适合大檔案。
[root@cdphost temp1]# more /etc/passwd
head
作用:檢視檔案前幾行内容,預設10行。
文法:head [選項] 檔案名稱。
head選項說明:
選項 | 說明 |
-n | 顯示的行數 |
例1:檢視/etc/group的前5行。
[root@cdphost temp1]# head -n 5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tail
作用:檢視檔案後幾行内容,預設10行。
文法:tail [選項] 檔案名稱。
tail選項說明:
選項 | 說明 |
-n | 顯示的行數 |
-f | 實時讀取 |
例1:檢視/etc/group的後5行。
[root@cdphost temp1]# tail -n 5 /etc/group
tcpdump:x:72:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
cdp:x:1000:cdp
例2:實時檢視/root/cdp.txt的内容。
[root@cdphost ~]# tail -f cdp.txt
7
8
8
wc
作用:統計檔案行數,字數,位元組數。
文法:wc [選項] 檔案名稱。
wc選項說明:
選項 | 說明 |
-l | 顯示行數 |
-w | 顯示字數 |
-c | 顯示位元組數 |
例1:檢視/etc/passwd檔案行數。
[root@cdphost ~]# wc -l /etc/passwd
43 /etc/passwd
例2:檢視/etc/passwd檔案字數。
[root@cdphost ~]# wc -w /etc/passwd
87 /etc/passwd
例3:檢視/etc/passwd檔案位元組數。
[root@cdphost ~]# wc -c /etc/passwd
2256 /etc/passwd
du
作用:顯示檔案或者目錄的大小。
文法:dd 選項。
du選項說明:
選項 | 說明 |
-h | 合理的大小顯示檔案或者目錄大小 |
-s | 隻顯示總計 |
-b | 以byte為機關顯示檔案或者目錄大小 |
-m | 以M為機關顯示檔案或者目錄大小 |
-k | 以K為機關顯示檔案或者目錄大小 |
例1:合理機關顯示目前目錄空間大小。
[root@cdphost temp1]# du -sh
3.5G .
例2:合理機關顯示目前目錄下所有子檔案或者目錄空間大小。
[root@cdphost temp1]# du -sh *
100K 100K_temp.txt
100M 100M_temp.txt
1.0G 1G_temp.txt
4.0K 2048_temp.txt
2.4G a
例3:合理機關顯示指定檔案空間大小。
[root@cdphost temp1]# du -sh /root/temp1/a
2.4G /root/temp1/a
例4:顯示指定檔案空間大小到位元組,不顯示名稱。
[root@cdphost temp1]# du -sh /root/temp1/a | cut -f1
2.4G
[root@cdphost temp1]# du -sh /root/temp1/a | awk '{print $1}'
2.4G
find
作用:指定目錄下查找檔案。
文法:find path -option [-print ] [ -exec -ok command ] {} \;。
find選項說明:
選項 | 說明 |
-name | 檔案名稱查找 |
-type | 檔案類型查找,f:表示一般檔案 |
-size | 檔案大小查找 |
例1:查找系統所有名字以.c結尾的檔案。
[root@cdphost temp1]# find / -name "*.c"
/usr/lib/firmware/isci/create_fw.c
/usr/lib64/perl5/vendor_perl/auto/share/dist/DBD-SQLite/sqlite3.c
/usr/share/doc/libpng-1.5.13/example.c
/usr/share/doc/mpfr-3.1.1/mpfr/examples/divworst.c
/usr/share/doc/mpfr-3.1.1/mpfr/examples/rndo-add.c
/usr/share/doc/mpfr-3.1.1/mpfr/examples/sample.c
/usr/share/doc/mpfr-3.1.1/mpfr/examples/version.c
/usr/share/doc/libbluray-0.2.3/player_wrappers/xine/input_bluray.c
例2:查找指定目錄下大于100M的檔案,并且詳細列出。
[root@cdphost temp1]# find /root/temp1 -size +100M -exec ls -lh {} \;
-rw-r--r--. 1 root root 1.0G Dec 23 12:34 /root/temp1/1G_temp.txt
-rw-r--r--. 1 root root 2.0G Dec 23 12:51 /root/temp1/a/temp.txt
-rw-r--r--. 1 root root 400M Dec 23 12:53 /root/temp1/a/b/100M_temp.txt
grep
作用:文本搜尋。
文法:grep [參數選項] [比對模式] file。
grep參數選項說明:
選項 | 說明 |
-v | 排除比對結果 |
-n | 列印行号 |
-c | 隻統計比對的行數 |
-r | 遞歸查找 |
例1:查找指定目錄下檔案内容包含hello的行列印出來且列印行号。
[root@cdphost temp1]# grep "hello" /root/temp1 -rn
/root/temp1/b.txt:3:asdfsaf hello
/root/temp1/c/c.txt:10:hello hello
/root/temp1/a.txt:6:abc hello
/root/temp1/a.txt:7:hello cdb
例2:查找指定目錄下檔案内容包含hello的檔案且列印總行數。
[root@cdphost temp1]# grep "hello" /root/temp1 -rc | grep ":0" -v
/root/temp1/b.txt:1
/root/temp1/c/c.txt:1
/root/temp1/a.txt:2
例3:查找指定目錄下檔案内容包含hello的檔案。
[root@cdphost temp1]# grep "hello" /root/temp1 -rc | grep ":0" -v | cut -d ":" -f1
/root/temp1/b.txt
/root/temp1/c/c.txt
/root/temp1/a.txt
例4:查找指定檔案的空行且列印行号。
[root@cdphost temp1]# grep "^#34; /root/temp1/a.txt -n
3:
5:
說明:linux檔案下所有檔案結尾都有一個$符。你可以執行cat -A /root/temp1/a.txt檢視。
例5:找到隻有java的程序。
[root@cdphost temp1]# ps -ef | grep java | grep -v grep
常見系統指令:
date
作用:顯示或者設定系統日期。
文法:date [參數選項] [+顯示格式]。
date參數選項說明:
選項 | 說明 |
-s datestr | 系統時間設定為datestr |
date顯示格式說明:
選項 | 說明 |
%Y | 年份 (0000..9999) |
%m | 月份 (01..12) |
%d | 日 (01..31) |
%H | 小時(00..23) |
%M | 分鐘(00..59) |
%S | 秒(00..59) |
%A | 星期幾 (Sunday..Saturday) |
%j | 年中的第幾天 |
例1:輸出如下格式時間:[yyyy-mm-dd hh:mm:ss]。
[root@cdphost temp1]# date '+%Y-%m-%d %H:%M:%S'
2022-12-23 15:48:40
例2:顯示今天星期幾。
[root@cdphost temp1]# date '+%A'
Friday
例3:将系統時間設定為20211231 9:00:00。
[root@cdphost temp1]# date -s '2021-12-31 9:00:00'
ifconfig
作用:檢視IP位址。
[root@cdphost temp1]# ifconfig
df
作用:顯示檔案系統磁盤使用情況。
文法:df [參數選項]。
df參數選項說明:
選項 | 說明 |
-T | 顯示檔案系統類型 |
-h | 合理的顯示值大小 |
例1:檢視檔案系統磁盤使用情況。
輸出說明:
Filesystem:檔案系統
Size:檔案系統的可用空間的總大小
Used:已用空間量
Avail:可用空間量
Use%:已用空間量,表示為總容量的百分比
Mounted on:挂載點
free
作用:顯示檔案系統磁盤使用情況。
文法:free [參數選項]。
free參數選項說明:
選項 | 說明 |
-h | 合理的顯示值大小 |
-m | 以M為機關顯示記憶體資訊 |
例1:檢視系統記憶體使用情況。
輸出說明:
total:伺服器記憶體總大小
used:已經使用了多少記憶體
free:未被任何應用使用的真實空閑記憶體
shared:被共享的實體記憶體
buff/cache:緩沖、緩存區記憶體數
available:真正剩餘的可被程式應用的記憶體數
top
作用:動态顯示系統程序資訊。
[root@cdphost temp1]# top
輸出資訊說明:
第一行:top - 22:42:52 up 42 min, 2 users, load average: 0.13, 0.09, 0.12
目前時間是22:42:52,啟動了42分鐘, 2個使用者線上,1分鐘,5分鐘,15分鐘的平均負載情況是:0.13, 0.09, 0.12。
load average(平均負載):是系統CPU繁忙程度的度量,反應的是一段時間内系統的平均負載(1分鐘,5分鐘,15分鐘)
第二行: Tasks: 492 total, 1 running, 491 sleeping, 0 stopped, 0 zombie
程序總數492,運作中的程序數為1(正在為使用者提供服務),睡眠中的程序數491(等待提供服務),停止的程序數0(stopped下,可以kill),僵死的程序數0(不為使用者提供服務了)
第三行:%cpu(s): 7.2 us, 1.4 sy, 0.0 ni, 91.3 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
7.2% us — 使用者空間占用CPU的百分比。
1.4% sy — 核心空間占用CPU的百分比。
0.0% ni — 改變過優先級的程序占用CPU的百分比
91.3 % id — 空閑CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.2% si — 軟中斷(Software Interrupts)占用CPU的百分比
0.0% st— 虛拟機占用CPU的百分比
在這裡CPU的使用比率和windows概念不同,作業系統和驅動程式運作在核心空間,應用程式運作在使用者空間
第四行:KiB Mem: 2035648 total, 888272 used, 1147376 free, 884 buffers
2035648k total — 實體記憶體總量(2035M)
888272k used — 使用中的記憶體總量(888M)
1147376k free — 空閑記憶體總量(1147M)
884k buffers — 緩存的記憶體量 (0.8M)
第五行:KiB Swap: 2097148 total, 0 used, 2097148 free. 255104 cached Mem
swap交換分區
2097148k total — 交換區總量(2097M)
0k used — 使用的交換區總量(0M)
2097148 k free — 空閑交換區總量(2097M)
255104k cached — 緩沖的交換區總量(255M)
當第五行的used在不斷的變化的時候,說明系統在不斷的進行着記憶體和交換分區的資料交換,此時記憶體可能不夠用了。
第七行:如下表格所示
标題 | 說明 |
PID | 程序ID |
USER | 程序所有者 |
PR | 程序的排程優先級。這個字段的一些值是'rt'。這意味這這些程序運作在實時态。 |
NI | 程序的nice值(優先級)。越小的值意味着越高的優先級。負值表示高優先級,正值表示低優先級 |
VIRT | 程序使用的虛拟記憶體。程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES |
RES | 駐留記憶體大小。駐留記憶體是任務使用的非交換實體記憶體大小。程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA |
SHR | SHR是程序使用的共享記憶體。共享記憶體大小,機關kb |
S | 程序的狀态,它有以下不同的值: D - 不可中斷的睡眠态。 R – 運作态 S – 睡眠态 T – 被跟蹤或已停止 Z – 僵屍态 |
%CPU | 自從上一次更新時到現在任務所使用的CPU時間百分比。 |
%MEM | 程序使用的可用實體記憶體百分比。 |
TIME+ | 任務啟動後到現在所使用的全部CPU時間,精确到百分之一秒。 |
COMMAND | 運作程序所使用的指令。程序名稱(指令名/指令行) |
who
作用:顯示正在登陸的系統使用者。
例:顯示正在登陸的系統使用者。
輸出資訊說明:
NAME:登入使用者名稱。
LINE:使用者登入終端。pts/0表示虛拟終端。:0表示x顯示器(x-window)。
TIME:使用者登入時間。
COMMENT:使用者登入的主機名或者IP。
whoami
作用:顯示正在登陸的系統使用者。
例:顯示目前登入的使用者。
[root@cdphost ~]# whoami
root
ps
作用:顯示系統程序資訊。
文法:ps [參數選項]。
ps參數選項說明:
選項 | 說明 |
-e | 顯示所有程序(包含沒有控制終端的程序) |
-f | 顯示完整的格式輸出 |
例1:顯示所有程序且取前5行。
例2:顯示所有java程序。
[root@cdphost ~]# ps -ef | grep java | grep -v grep
kill
作用:殺死程序。
例1:殺死單個程序。
[root@cdphost ~]# kill -9 程序号
例2:殺死多個程序。
[root@cdphost ~]# kill -9 程序号1 程序号2 程序号3 ……
which
作用:查找指令系統位置。
例1:檢視pwd指令檔案。
[root@cdphost ~]# which pwd
/usr/bin/pwd
wget
作用:下載下傳檔案。
例1:下載下傳centos7的163的yum源。
[root@cdphost temp1]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
su
作用:切換系統使用者。
文法:su [-] 使用者名。
補充說明:
su 使用者名稱 --表示切換為新使用者身份,保留原使用者身份環境變量。
su - 使用者名稱 --表示切換為新使用者身份,更新為新使用者身份環境變量。
例1:執行su 使用者名稱指令,檢視PATH環境變量變化情況。
例2:執行su - 使用者名稱指令,檢視PATH環境變量變化情況。
sudo
作用:以管理者的身份執行指令。
文法:sudo 系統指令。
sudo權限修改方式:
方式1:執行指令visudo。
方式2:編輯/etc/sudoers檔案(注意:需要執行chmod u+w /etc/sudoers)。
配置檔案(/etc/sudoers)說明
visudo格式 | 說明 |
cdp ALL=(ALL) ALL | 允許使用者cdp執行sudo指令(需要輸入密碼) |
%cdp ALL=(ALL) ALL | 允許使用者組cdp裡面的使用者執行sudo指令(需要輸入密碼) |
cdp ALL=(ALL) NOPASSWD:ALL(出于友善,推薦使用此設定) | 允許使用者cdp執行sudo指令,并且在執行的時候不輸入密碼 |
%cdp ALL=(ALL) NOPASSWD:ALL | 允許使用者組cdp裡面的使用者執行sudo指令,并且在執行的時候不輸入密碼 |
第一個ALL的位置表示:使用sudo的主機,例如:192.168.226.250/24。
第二個ALL的位置表示:以誰的身份執行指令。
第三個ALL的位置表示:可以執行的指令。
例1:cdp使用者以sudo指令的方式關閉防火牆。
第1步:執行visudo指令,編輯/etc/sudoers。
[root@cdphost ~]# visudo --修改/etc/sudoers
第2步:執行關閉防火牆指令
[cdp@cdphost ~]$ sudo systemctl stop firewalld
history
作用:顯示曾經使用過的指令。
例1:顯示最近執行過的10行指令。
[root@cdphost ~]# history | tail -n 10
951 echo $PATH
952 systemctl status firelwalld
953 systemctl status firewalld
954 visudo
955 cat /etc/sudoers
956 vi /etc/sudoers
957 ll /etc/sudoers
958 visudo
959 history
960 history | tail -n 10
例2:執行曆史執行過的指令。
[root@cdphost ~]# !951
echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
scp
作用:遠端linux系統之間複制檔案。
文法:跨伺服器檔案複制。
1.從本地複制到遠端。
scp [參數選項] local_file remote_username@remote_ip:remote_file
2.從遠端複制到本地。
scp [參數選項] remote_username@remote_ip:remote_file local_file
scp選項說明:
選項 | 說明 |
-r | 遞歸複制整個目錄 |
例1:檔案或者目錄從本地複制到遠端。
[root@cdphost temp1]# scp 100M_temp.txt [email protected]:/root/temp3
[root@cdphost temp1]# scp -r /root/temp2 [email protected]:/root/temp3
例2:檔案或者目錄從遠端複制到本地。
[root@cdphost temp4]# scp [email protected]:/root/temp3/100M_temp.txt ./
[root@cdphost temp4]# scp -r [email protected]:/root/temp3/temp2 ./
壓縮和打包指令
gzip
作用:壓縮檔案。
文法:gzip [參數選項] [檔案…]。
gzip參數選項說明:
選項 | 說明 |
-d | 解開壓縮檔案 |
-l | 列出壓縮檔案資訊 |
-v | 顯示指令執行過程 |
例1:壓縮目前目錄下所有檔案。
例2:檢視壓縮檔案資訊。
例3:解壓縮檔案。
tar
作用:打封包件或者打包壓縮檔案或者解打封包件或者解打包壓縮檔案。
文法:tar [參數選項] [備份檔案包名] […..]。
tar參數選項說明:
選項 | 說明 |
-c | 建立新的備份檔案 |
-v | 顯示執行過程 |
-f | 指定備份檔案名稱 |
-x | 解壓備份檔案 |
-z | 通過gzip壓縮檔案,一般命名字尾.gz |
-t | 列出備份檔案内容 |
-C | 指定解壓目錄 |
注意:-c和-x選項不可以同時出現。
linux3種壓縮方式:
參數 | 壓縮方式 | 命名方向 | 說明 |
-z | gzip壓縮 | 檔案名.tar.gz | 壓縮速度:gz > bz2 > xz 壓縮率:xz > bz2 > gz |
-j | bzip2壓縮 | 檔案名.tar.bz2 | |
-J | xz壓縮 | 檔案名.tar.xz |
例1:打包目前目錄下所有檔案。
例2:解打封包件。
例3:解打封包件到指定檔案夾。
例4:打包壓縮檔案,解打包壓縮檔案。
例5:分卷打包壓縮。
例6:解分卷打包壓縮。
zip
作用:打包壓縮檔案。
文法:zip [參數選項] [壓縮檔案名稱.zip] [檔案1……]。
zip參數選項說明:
選項 | 說明 |
-q | 不顯示指令執行過程 |
-r | 遞歸處理,目錄以及子目錄一并處理 |
例1:打包目前目錄下所有檔案。
unzip
作用:解壓縮檔案。
文法:uzip [參數選項] [壓縮檔案名稱.zip]。
uzip參數選項說明:
選項 | 說明 |
-l | 顯示壓縮封包件内容 |
-d | 指定解壓縮檔案目錄 |
例1:解壓檔案到指定目錄。