CentOS文件和目錄
etc------系統中的配置文件
bin------系統預設執行文件的放置目錄
sbin------系統預設執行文件的放置目錄
usr------系統預設執行文件的放置目錄
var------/var/log程序運行日志的存放目錄
虛擬機的其他設置---克隆
克隆方式的特點:
占用空間大
原系統不存在
克隆體還能用
系統備份---快照
快照方式的特點
占用空間小
原系統不存在
快照就不能用了
不論是克隆還是快照虛擬機的狀態必須是關機
2.2 Linux 用戶和用戶組管理
2.2.1 Linux賬號管理
useradd 選項 用戶名
參數說明:
-
選項:
-
-c comment 指定一段注釋性描述。
-
-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
-
-g 用戶組 指定用戶所屬的用戶組。
-
-G 用戶組,用戶組 指定用戶所屬的附加組。
-
-s Shell文件 指定用戶的登錄Shell。
-
-u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。
-
-
用戶名:
指定新賬號的用戶名(后續我們可以使用這個用戶名進行系統登錄)。
添加用戶czbk(傳智播客的首拼)執行
useradd czbk
我們使用useradd命令創建了一個用戶czbk
useradd 可用來建立用戶帳號。帳號建好之后,再用 passwd 設定帳號的密碼。
執行如下

由上圖我們發現,我們在使用useradd新增用戶的時候,出現了權限不足,也就是說我們使用用戶itcast沒有創建用戶的權限。
我們通過管理員賬號root進行創建,首先我們從控制台中切換到root
su root
在 密碼的地方輸入我們的root密碼【root】即可進入到root用戶下。
我們在root下繼續創建czbk用戶

以下是useradd常用選項

用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令后才可以使用
使用者權限:管理員用戶
指定和修改用戶口令的Shell命令是passwd。超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。命令的格式為:
passwd 選項 用戶名
可使用的選項:
-
-l 鎖定口令,即禁用賬號。
-
-u 口令解鎖。
-
-d 使賬號無口令。
-
-f 強迫用戶下次登錄時修改口令。
設置當前用戶的口令
passwd czbk
此處我們設置密碼和itcast賬號密碼一致,為【Itheima888】

密碼的長度必須大於8位
必須是字母還有數字的結合
usermod 命令通過修改系統帳戶文件來修改用戶賬戶信息
修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。
使用者權限:管理員用戶
修改已有用戶的信息使用usermod命令,其格式如下:
usermod 選項 用戶名
ctrl + d 退出已有連接
下面命令將用戶czbk用戶名修改成czbk2019
usermod -l czbk2019 czbk

以下是usermod常用選項

假如我們其中一個用戶的賬號不再使用,可以從系統中刪除。刪除用戶賬號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。
使用者權限:管理員用戶
刪除一個已有的用戶賬號使用userdel命令,其格式如下:
userdel 選項 用戶名
-f:強制刪除用戶,即使用戶當前已登錄;
-r:刪除用戶的同時,刪除與用戶相關的所有文件
此命令刪除用戶czbk2019
userdel czbk2019

成功刪除用戶czbk2019
以下是userdel常用選項
2.2.2 Linux用戶組
引子:
為了方便用戶管理, 提出了 組 的概念, 如下圖所示

新增一個賬戶,它默認屬於自己(賬戶)的組
比如新建賬戶【張三】,那么它默認對應的組就是張三
一個用戶可以有一個或者多個組
假如說(如上圖),我們在企業級開發過程中,我們有多個組,其中一個開發組對應三個賬戶,張三、李四、王五、如果就像上面提到的,一個用戶默認對應一個組,那么三個賬戶張三、李四、王五就有了三個不同的組,如果大家都操做一個文件,在進行權限分配的時候,就要對不同的三個組進行授權,顯然這樣是不合理的,因為太過繁瑣。
所以,才有了組(新建組)的概念,我們把張三、李四、王五統一放到【開發組】,在對文件授權的時候,我們只對【開發組】進行授權由此,這樣的話【張三、李四、王五】都有相等的權利操作了。
1) 增加用戶組
新增一個用戶組(組名可見名知意,符合規范即可),然后將用戶添加到組中
使用者權限:管理員用戶
groupadd 選項 用戶組
使用的選項有:
-
-g GID 指定新用戶組的組標識號(GID)。
-
-o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同
新增用戶組czbk-it
groupadd czbk-it
上面的命令向系統中增加了一個新組czbk-it,新組的組標識號是在當前已有的最大組標識號的基礎上加1
以下是groupadd常用選項
2) 修改用戶組
使用者權限:管理員用戶
groupmod 選項 用戶組
常用的選項有:
-
-g GID 為用戶組指定新的組標識號。
-
-o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
-
-n新用戶組 將用戶組的名字改為新名字
groupmod -n czbk-it-2019 czbk-it
上面的命令將組czbk-it的組名修改為czbk-it-2019。
以下是groupmod常用選項
3) 查詢用戶所屬組
在查詢用戶所屬的用戶組前,我們先增加一個用戶ituser-groups
useradd ituser-groups

要查詢一個用戶屬於哪個用戶組,使用groups命令,其格式如下
groups 用戶名
查詢用戶ituser-groups屬於某個用戶組,執行groups命令
groups ituser-groups

由此可見,ituser-groups用戶屬於用戶組ituser-groups(用戶組默認與用戶名一樣)
使用者權限:管理員用戶
要刪除一個已有的用戶組,使用groupdel命令,其格式如下
groupdel 用戶組
刪除czbk-it-2019用戶組
groupdel czbk-it-2019

刪除成功
以下是groupdel常用選項
1、創建一個新的組,並添加組ID(需要切換到root用戶)
groupadd -g 8888 itbj2020group
執行效果如下
2、創建3個用戶(需要切換到root用戶)
useradd itbeijinguser1
useradd itbeijinguser2
useradd itbeijinguser3
3、將上面三個用戶添加到組itbj2020group
我們通過gpasswd命令將三個用戶添加到組
什么是gpasswd:
gpasswd 是 Linux 下工作組文件 /etc/group 和 /etc/gshadow 管理工具,用於將一個用戶添加到組或者從組中刪除。
語法
gpasswd [可選項] 組名
-a:添加用戶到組
-d:從組刪除用戶
-A:指定管理員
-M:指定組成員和-A的用途差不多
-r:刪除密碼
-R:限制用戶登入組,只有組中成員才可以用newgrp加入該組
將上面的三個用戶使用gpasswd添加到組(需要切換到root用戶)
gpasswd -a itbeijinguser1 itbj2020group
gpasswd -a itbeijinguser2 itbj2020group
gpasswd -a itbeijinguser3 itbj2020group
執行如下

查看用戶組下所有用戶(所有用戶)
注意
此處的grep命令我們將在文件管理章節詳細講解,這里先使用它查看下效果
grep 'itbj2020group' /etc/group
執行效果如下(或者直接打開/etc/group文件都可以)

由上圖可知:三個用戶全部都加入到了itbj2020group組。
當前日期如果通過date進行設置,在系統重啟后不會保存date的設置,常用的只是通過date命令查看日期
date 可以用來顯示或設定系統的日期與時間
語法如下:
date [參數選項]
參數
-d<字符串>:顯示字符串所指的日期與時間。字符串前后必須加上雙引號;
-s<字符串>:根據字符串來設置日期與時間。字符串前后必須加上雙引號;
-u:顯示GMT;
--help:在線幫助;
--version:顯示版本信息
1、設置時間
用 -s選項可以設置系統時間,如下:
date -s "2019-12-11 16:15:00"

2、顯示時間
date
(1)UTC
協調世界時,又稱世界統一時間、世界標准時間、國際協調時間。由於英文(CUT)和法文(TUC)的縮寫不同,作為妥協,簡稱UTC。。
(2)GMT
即
外文名:Universal Time
其他外文名G.M.T.(Greenwich Mean Time)
(3)CST
北京時間 (中國國家標准時間) 北京時間是中國采用國際時區東八時區的區時作為標准時間。 北京時間並不是北京(東經116.4°)的地方時間,而是東經120°的地方時間,故東經120度地方時比北京的地方時早約14分半鍾。因為北京處於國際時區划分中的東八區,同格林尼治時間(世界時)整整相差8小時(即北京時間=世界時+8小時),故命名為“北京時間”。東八區包括的范圍從東經112.5°到東經127.5°,以東經120°為中心線,東西各延伸7.5°,總寬度為15°的區域。 而中國幅員遼闊,東西相跨5個時區(即東五區、東六區、東七區、東八區、東九區5個時區)授時台必須建在地理中心地帶,從而也就產生了長短波授。“北京時間”與“北京當地時間”是兩個概念, “北京時間”的發播不在北京,而在陝西蒲城(處於東七區)
(4)東八區
東八區(
總結:
上面提到了很多知識:即UTC/GMT/CST/東八區
總結一下就是,北京時間(中國國家標准時間CST)采用東八區區時,即:
協調世界時(UTC)+8 / 格林尼治時間(GMT)+8
也就是說+8后的時間才是北京時間
2.3.2 顯示用戶
logname命令用於顯示用戶名稱。
執行logname指令,它會顯示目前用戶的名稱
語法為如下:
logname [--help][--version]
參數:
-
--help 在線幫助。
-
--vesion 顯示版本信息。
顯示登錄賬號的信息
logname

2.3.3 su切換賬戶
引子:
比如我們在新增用戶、修改用戶或者操作用戶組的時候常常需要切換到管理員賬戶,這個時候,我們就可以使用su進行快速切換
su命令用於變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼。
使用權限:所有使用者。
語法如下:
su
變更帳號為 root 並在執行 ls 指令后退出返回原使用者
su -c ls root
-c, --command <命令> 使用 -c 向 shell 傳遞一條命令
切換用戶執行命令,執行完畢后再變回原來的使用者
切換到root
su root

這樣的話,我們就進入到了root用戶下。
id命令用於顯示用戶的ID,以及所屬群組的ID。
id會顯示用戶以及所屬群組的實際與有效ID。若兩個ID相同,則僅顯示實際ID。若僅指定用戶名稱,則顯示目前用戶的ID。
使用者權限:所有用戶
語法
id [-gGnru][--help][--version][用戶名稱]
參數說明:
-
-g或--group 顯示用戶所屬群組的ID。
-
-G或--groups 顯示用戶所屬附加群組的ID。
-
-n或--name 顯示用戶,所屬群組或附加群組的名稱。
-
-r或--real 顯示實際ID。
-
-u或--user 顯示用戶ID。
-
-help 顯示幫助。
-
-version 顯示版本信息。
顯示當前用戶信息
id
執行效果如下

id命令參數雖然很多
但是常用的也就是id命令,不帶參數的
比如我們使用普通用戶操作用戶或者操作用戶組、以及修改網卡配置文件的時候,需要切換到root用戶才操作,此時我們可以使用sudo命令提高普通用戶的操作權限,以達到操作目的
通過sudo可以提高普通用戶的操作權限
使用者權限:普通用戶
語法如下:
sudo -V sudo -h sudo -l sudo -v sudo -k sudo -s sudo -H sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s sudo command
參數說明:
-
-V 顯示版本編號
-
-h 會顯示版本編號及指令的使用方式說明
-
-l 顯示出自己(執行 sudo 的使用者)的權限
-
-v 因為 sudo 在第一次執行時或是在 N 分鍾內沒有執行(N 預設為五)會問密碼,這個參數是重新做一次確認,如果超過 N 分鍾,也會問密碼
-
-k 將會強迫使用者在下一次執行 sudo 時問密碼(不論有沒有超過 N 分鍾)
-
-b 將要執行的指令放在背景執行
-
-p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的帳號名稱, %h 會顯示主機名稱
-
-u username/#uid 不加此參數,代表要以 root 的身份執行指令,而加了此參數,可以以 username 的身份執行指令(#uid 為該 username 的使用者號碼)
-
-s 執行環境變數中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-
-H 將環境變數中的 HOME 指定為要變更身份的使用者HOME目錄(如不加 -u 參數就是系統管理者 root )
-
command 要以系統管理者身份(或以 -u 更改為其他人)執行的指令
sudo命令使用
sudo ls

指定root用戶執行指令
sudo -u root ls -l

修改網卡配置文件
比如,在下面的例子中,我們使用普通用戶修改網卡的配置文件,在進行保存的時候,提示我們【無法打開並寫入文件】,那么此時,我們可以通過sudo命令來提升自己的寫入權限
執行:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
執行效果如下(保存)

然后點擊回車

那么我們在修改上面的 命令,使用sudo進行修改
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
執行效果如下(鍵入itcast密碼)

執行保存

我們發現此時就不在報錯了
2.3.6 top命令
在企業級開發中,開發人員(運維人員也會經常使用)常常為了查看服務器上運行的程序占用的CPU情況以及占用內存情況,目的就是檢測我們的程序是否在正常范圍內運行
top命令用於實時顯示 process (進程)的動態。
使用權限:所有使用者。
顯示進程信息
top
執行效果如下

各進程(任務)的狀態監控屬性解釋說明:
PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
顯示完整命令,與top命令不同的就是command屬性像是進行了命令補全
top -c
執行效果如下

顯示指定的進程信息,以下顯示進程號為6972的進程信息,CPU、內存占用率等
top -p 6972
執行效果如下

但是常用的就是top(不帶參數),有的時候,在進程比較多的時候,我們常常記住進程的pid,然后通過top -p pid進行查看
2.3.7 ps命令
ps命令類似於我們在Windows中通過任務管理器查看進程信息
Linux ps命令用於顯示當前進程 (process) 的狀態信息
使用者權限:所有用戶
語法如下:
ps
顯示進程信息
ps -A
顯示指定用戶信息
ps -u itcast
顯示所有進程信息
ps -ef
2.3.8 kill命令
Linux kill命令用於刪除執行中的程序或工作(可強制中斷)
使用者權限:所有用戶
語法如下:
kill [-s <信息名稱或編號>][程序] 或
kill [-l <信息編號>]
參數說明:
-
-l <信息編號> 若不加<信息編號>選項,則-l參數會列出全部的信息名稱。
-
-s <信息名稱或編號> 指定要送出的信息。
-
[程序] [程序]可以是程序的PID或是PGID,也可以是工作編號。
殺死一個進程
kill 15642
強制殺死進程
kill -KILL 15642
徹底殺死進程
kill -9 15642
殺死指定用戶所有進程
1.方法一 過濾出itcast用戶進程
kill -9 $(ps -ef | grep itcast)
2.方法二,直接殺死
kill -u itcast
注意
上面列舉了很多kill進程的命令
但是我們我們常用的就是kill -9命令,我們常常找到進程的pid
然后通過kill -9進行殺死進程
2.3.9 關機命令
shutdown命令可以用來進行關閉系統,並且在關機以前傳送訊息給所有使用者正在執行的程序,shutdown 也可以用來重開機
使用者權限:管理員用戶
語法如下:
shutdown [-t seconds] [-rkhncfF] time [message]
參數說明:
-
-t seconds : 設定在幾秒鍾之后進行關機程序。
-
-k : 並不會真的關機,只是將警告訊息傳送給所有使用者。
-
-r : 關機后重新開機。
-
-h : 關機后停機。
-
-n : 不采用正常程序來關機,用強迫的方式殺掉所有執行中的程序后自行關機。
-
-c : 取消目前已經進行中的關機動作。
-
-f : 關機時,不做 fcsk 動作(檢查 Linux 檔系統)。
-
-F : 關機時,強迫進行 fsck 動作。
-
time : 設定關機的時間。
-
message : 傳送給所有使用者的警告訊息。
立即關機
shutdown -h now 立馬關機
或者
shutdown 不同的版本有所差異
shutdown +1 “System will shutdown after 1 minutes” 指定1分鍾后關機,1分鍾關機並顯示警告信息
shutdown -c 取消當前關機操作
shutdown –r +1 “1分鍾后關機重啟”

2.3.10 重啟命令
reboot命令用於用來重新啟動計算機
使用者權限:管理員、普通(需要驗證)用戶
語法如下:
reboot [-n] [-w] [-d] [-f] [-i]
參數:
-
-n : 在重開機前不做將記憶體資料寫回硬盤的動作
-
-w : 並不會真的重開機,只是把記錄寫到 /var/log/wtmp 檔案里
-
-d : 不把記錄寫到 /var/log/wtmp 檔案里(-n 這個參數包含了 -d)
-
-f : 強迫重開機,不呼叫 shutdown 這個指令
-
-i : 在重開機之前先把所有網絡相關的裝置先停止
開始重新啟動
reboot
重啟效果如下

2.3.11 who命令
在企業級開發過程中,我們使用who命令的時候常常需要快速重啟服務器,在重啟之前需要檢測下有沒有終端在連接(處理程序),如果有,可能就不會重啟(會私下詢問何時弄完,弄完后在重啟),如果沒有其他人連接,將執行快速重啟
who命令用於顯示系統中有哪些使用者正在上面,顯示的資料包含了使用者 ID、使用的終端機、從哪邊連上來的、上線時間、呆滯時間、CPU 使用量、動作等等
使用者權限:所有使用者都可使用。
語法如下:
who - [husfV] [user]
參數說明:
-
-H 或 --heading:顯示各欄位的標題信息列;
-
-i 或 -u 或 --idle:顯示閑置時間,若該用戶在前一分鍾之內有進行任何動作,將標示成"."號,如果該用戶已超過24小時沒有任何動作,則標示出"old"字符串;
-
-m:此參數的效果和指定"am i"字符串相同;
-
-q 或--count:只顯示登入系統的帳號名稱和總人數;
-
-s:此參數將忽略不予處理,僅負責解決who指令其他版本的兼容性問題;
-
-w 或-T或--mesg或--message或--writable:顯示用戶的信息狀態欄;
-
--help:在線幫助;
-
--version:顯示版本信息
顯示當前登錄系統的用戶
who

顯示明細(標題)信息
who -H

由上圖可知,截止到現在只有itcast在線。
引子:
timedatectl是用於控制系統時間和日期。可以用來查詢和更改系統時鍾於設定,同時可以設定和修改時區信息。
在實際開發過程中,系統時間的顯示會和實際出現不同步;我們一般為了校正服務器時間、時區的時候會使用timedatectl命令
使用者權限:所有使用者都可使用,設置時間需要管理員,下面會標注。
幾個常見的概念,進行總結如下:

顯示系統的當前時間和日期,使用命令行中的timedatectl命令
timedatectl status
執行效果如下

在上面的示例中,分別顯示時區、CST時間和UTC時間,其中,RTC time就是硬件時鍾的時間,硬件時間默認為UTC。
查看當前時區
timedatectl | grep Time
或者
timedatectl
執行效果如下

上圖顯示中國時區
查看所有可用的時區
timedatectl list-timezones
執行效果如下(下面數據沒有截全)

設置本地時區
timedatectl set-timezone "Asia/Shanghai"
執行效果如下

timedatectl set-ntp false
在執行
timedatectl set-time "2019-03-11 20:45:00"
執行效果如下

注意: 如果ntp時間同步為true時無法修改時間設定,下面馬上介紹
打開ntp
timedatectl set-ntp true
在執行
timedatectl set-time "2019-03-11 20:45:00"
執行效果如下(ntp時間同步為true時無法修改時間設定)
報錯信息 如下

啟用時間同步
NTP即Network Time Protocol(網絡時間協議),是一個互聯網協議,用於同步計算機之間的系統時鍾。timedatectl實用程序可以自動同步你的Linux系統時鍾到使用NTP的遠程服務器。
要開始自動時間同步到遠程NTP服務器,在終端鍵入以下命令。
timedatectl set-ntp true
比如,在上面我們使用timedatectl set-time "2019-03-11 20:45:00",如下圖

此時我們執行timedatectl set-ntp true,發現時間正常同步過來了如下圖

要禁用NTP時間同步,在終端鍵入以下命令
timedatectl set-ntp false
執行上面的 命令即可關閉ntp
總結
在實際使用過程中
我們經常使用timedatectl進行時區、CST、UTC的設置
2.3.13 clear命令
clear命令用於清除屏幕
使用者權限:所有使用者都可使用。
語法
clear
執行clear前

執行clear后

通過執行clear命令,就可以把緩沖區的命令全部清理干凈了
2.3.14 exit命令
執行exit可使shell以指定的狀態值退出。若不設置狀態值參數,則shell以預設值退出。狀態值0代表執行成功,其他值代表執行失敗。exit也可用在script,離開正在執行的script,回到shell。
退出碼(exit status,或exit code)的約定:
0表示成功(Zero - Success)
非0表示失敗(Non-Zero - Failure)
2表示用法不當(Incorrect Usage)
127表示命令沒有找到(Command Not Found)
126表示不是可執行的(Not an executable)
>=128 信號產生
語法如下
exit [狀態值]
退出終端
# exit
exit會被經常在shell中使用
我們在明天的課程【綜合案例】中會使用到exit
2.4 總結
用戶賬號管理和用戶組是我們在實際使用過程中常用的命令,學習完創建賬號、創建組后,需要通過gpasswd命令將用戶添加到組,這也是我們學習的最終目的
系統管理的常用命令都是在開發過程中經常使用到的







