1. 程式人生 > 其它 >Liunx 操作命令學習記錄

Liunx 操作命令學習記錄

常用的基本命令

目錄管理

絕對路徑、相對路徑

# 切換目錄命令!
cd 
# 當前目錄
./ 
# 返回上一級
cd .. 

ls (列出目錄)

 # 檢視全部檔案,包括隱藏檔案
 -a, --all                  do not ignore entries starting with .
 # 列出所有的檔案,包含檔案的屬性和許可權,沒有隱藏檔案
 -l                         use a long listing format
 
 # 引數可以組合使用 例: ls -al

cd 命令 切換目錄

cd 目錄名(絕對路徑都是以/開頭,相對路徑,對於當前目錄)

pwd 顯示當前使用者所在的目錄

[root@VM_0_9_centos home]# pwd
/home

mkdir 建立資料夾

[root@VM_0_9_centos home]# mkdir ceshi
[root@VM_0_9_centos home]# ls
ceshi  dockerfile  docker-test-volume  mysql

# 遞迴建立/建立多級目錄 -p
[root@VM_0_9_centos home]# mkdir -p ceshi1/ceshi2
[root@VM_0_9_centos home]# ls
ceshi  ceshi1  dockerfile  docker-test-volume  mysql
[root@VM_0_9_centos home]# cd ceshi1
[root@VM_0_9_centos ceshi1]# ls
ceshi2

rmdir 刪除目錄

# 只能刪除空的目錄
[root@VM_0_9_centos home]# rmdir ceshi1
rmdir: failed to remove ‘ceshi1’: Directory not empty
# 如果下面存在檔案,需要刪除檔案,遞迴刪除多個目錄用 -p引數
[root@VM_0_9_centos home]# rmdir -p ceshi1/ceshi2
[root@VM_0_9_centos home]# ls
ceshi  dockerfile  docker-test-volume  mysql

cp (複製檔案或者目錄)

# cp 原來的目錄 新的目錄
[root@VM_0_9_centos home]# ls
ceshi  ceshi1  dockerfile  docker-test-volume  mysql
[root@VM_0_9_centos home]# cd ceshi
[root@VM_0_9_centos ceshi]# ls
test1.java  test.java
[root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
[root@VM_0_9_centos ceshi]# cd ..
[root@VM_0_9_centos home]# cd ceshi1
[root@VM_0_9_centos ceshi1]# ls
test.java

# 檔案重複 拷貝會詢問是否覆蓋,與windows是一樣的
[root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
cp: overwrite ‘../ceshi1/test.java’? y

rm (移除檔案或者目錄!)

# -f 忽略不存在的檔案,不會出現警告,強制刪除
# -r 遞迴刪除目錄
# -i 互動,刪除詢問是否刪除


[root@VM_0_9_centos ceshi1]# rm -rf test.java
[root@VM_0_9_centos ceshi1]# ls
[root@VM_0_9_centos ceshi1]# 

rm -rf / 系統中所有的檔案都會被刪除,且不會提示,這個命令很危險!!!!!

rm -rf / 系統中所有的檔案都會被刪除,且不會提示,這個命令很危險!!!!!

rm -rf / 系統中所有的檔案都會被刪除,且不會提示,這個命令很危險!!!!!

rm -rf / 系統中所有的檔案都會被刪除,且不會提示,這個命令很危險!!!!!

rm -rf / 系統中所有的檔案都會被刪除,且不會提示,這個命令很危險!!!!!

mv 移動檔案或者

# -f 強制
# -u 只替換已經更新過的檔案

# 移動檔案
[root@VM_0_9_centos ceshi]# ls
test1.java  test.java
[root@VM_0_9_centos ceshi]# mv test.java ../ceshi1
[root@VM_0_9_centos ceshi]# ls
test1.java
[root@VM_0_9_centos ceshi]# cd ../ceshi1
[root@VM_0_9_centos ceshi1]# ls
test.java

#重新命名資料夾
[root@VM_0_9_centos home]# mv ceshi1 ceshi2
[root@VM_0_9_centos home]# ls
ceshi  ceshi2

基本屬性

看懂檔案屬性

Linux 系統是一種典型的多使用者系統,不同的使用者處於不同的地位,擁有不同的許可權.為了保護系統的安全性,Linux系統對不同使用者訪問同一問價(包括目錄檔案)的許可權做了不同的規定.

在Linux中我們可以使用ll 或者ls -l命令來顯示一個檔案的屬性以及檔案所屬的使用者和組,如:

[root@VM_0_9_centos /]# ll
total 84
-rw-r--r--   1 root root    93 Jul 17  2020 backup.db
lrwxrwxrwx.  1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.  5 root root  4096 Jul 17  2020 boot
drwxr-xr-x   2 root root  4096 Nov  5  2019 data
drwxr-xr-x  19 root root  2980 Jul  8  2020 dev
drwxr-xr-x. 93 root root 12288 Jun  2 11:49 etc
drwxr-xr-x.  7 root root  4096 Jun 11 09:26 home
lrwxrwxrwx.  1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.  1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwx------.  2 root root 16384 Mar  7  2019 lost+found
drwxr-xr-x.  2 root root  4096 Apr 11  2018 media
drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x   3 root root  4096 Jun  9 18:08 mydata
drwxr-xr-x   2 root root  4096 Aug 20  2020 nmon
drwxr-xr-x.  4 root root  4096 Jun  2 11:49 opt
dr-xr-xr-x  87 root root     0 Jul  8  2020 proc
dr-xr-x---.  9 root root  4096 Jun  8 11:52 root
drwxr-xr-x  30 root root  1000 Jun  7 11:16 run
lrwxrwxrwx.  1 root root     8 Mar  7  2019 sbin -> usr/sbin
drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x  13 root root     0 Jun  7 10:45 sys
drwxrwxrwt.  9 root root  4096 Jun 11 09:25 tmp
drwxr-xr-x. 13 root root  4096 Mar  7  2019 usr
drwxr-xr-x. 19 root root  4096 Apr 22  2020 var

例項中,boot檔案的第一個屬性用"d"表示."d"在Linux中代表該檔案是一個目錄檔案

在Linux中第一個字元代表這個檔案是目錄、檔案或連結檔案等等:

  • 當為[d]則是目錄 目錄檔案
  • 當為[-]則是檔案 普通檔案
  • 若是[l]則表示為連結文件(link file) 符號連結檔案
  • 若是[b]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置) 塊裝置檔案
  • 若是[c]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置) 字元裝置檔案

接下來的字元中,以三個為一組,且均為【rwx】的三個引數的組合.

其中,[r]代表可讀(read)、[w]代表可寫(write)、[x]代表可執行(execute)

要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號[-]而已

每個檔案的屬性由左邊第一部分的10個字元來確定

從左至右用0-9這些數字來表示.

第0位確定檔案型別,

第1-3位確定屬主(該檔案的所有者)擁有該檔案的許可權.

第4-6位確定屬組(所有者的同組使用者)擁有該檔案的許可權,

第7-9位確定其他使用者擁有該檔案的許可權

其中:

第1、4、7位表示讀許可權,如果用“r”字元表示,則有讀許可權,如果用“-”字元表示,則沒有讀許可權;

第2、5、8位表示寫許可權,如果用“w"字元表示,則有寫許可權,如果用”-“字元,則表示沒有寫許可權;

第3、6、9位表示,如果用"x"字元表示,則有執行許可權,如果用"-"字元表示,則沒有執行許可權;

對於檔案來說,它都有一個特定的所有者,也就是對該檔案具有所有權的使用者

同時,在linux中,使用者是按組分類的,一個使用者屬於一個或多個組

檔案所有者以外的使用者又可以為檔案所有者的同組使用者和其他使用者.

因此,Linux系統按照檔案所有者、檔案所有者同組使用者和其他使用者來規定了不同的檔案訪問許可權

在以上例項中,boot檔案是一個目錄檔案,屬主和陣列都為root

修改檔案屬性

1 . chgrp : 更改檔案屬組

chgrp [-R] 屬組名 檔名

-R: 遞迴更改檔案屬組,就是在更改某個目錄的屬組時,如果加上-R的引數,那麼該目錄下的所有檔案的屬組都會更改.

2. chgrp : 更改檔案屬主,也可以同時更改檔案屬組

chown [-R] 屬主名 檔名
chown [-R] 屬主名: 屬組名 檔名

3. chmod: 更改檔案9個屬性(掌握)

chmod [-R] xyz 檔案或目錄

Linux檔案屬性有兩種設定方法,一種是數字,一種是符號

Linux檔案的基本許可權就有九個,分別是owner/group/others三種身份各有自己的read/write/execute許可權

先複習一下剛剛上面提到的資料:檔案的許可權字元為[-rwxrwxrwx],這九個許可權是三個三個一組的!其中,我們可以使用數字來代表各個許可權,各許可權的分數對照表如下:

r:4   w:2  x:1

每種身份(owner/group/others)各自的許可權(r/w/x)分數是需要累加的,例如當權限為:[-rwxrwx---]分數則是

  • owner = rwx = 4+2+1 =7
  • group=rwx = 4+2+1 =7
  • others= --- =0+0+0 =0
chmod 770 filename

檔案內容檢視

Linux系統中是使用以下命令來檢視檔案的內容:

  • cat 由第一行開始顯檔案內容

    [root@VM_0_9_centos network-scripts]# cat ifcfg-eth0 
    # Created by cloud-init on instance boot automatically, do not edit.
    #
    BOOTPROTO=dhcp
    DEVICE=eth0
    HWADDR=52:54:00:de:11:64
    ONBOOT=yes
    PERSISTENT_DHCLIENT=yes
    TYPE=Ethernet
    USERCTL=no
    
  • tac 從最後一行開始顯示,可以看出tac是cat的倒著寫

    [root@VM_0_9_centos network-scripts]# tac ifcfg-eth0
    USERCTL=no
    TYPE=Ethernet
    PERSISTENT_DHCLIENT=yes
    ONBOOT=yes
    HWADDR=52:54:00:de:11:64
    DEVICE=eth0
    BOOTPROTO=dhcp
    
  • nl 顯示的時候,順道輸出行號

    [root@VM_0_9_centos network-scripts]# nl ifcfg-eth0
         1  # Created by cloud-init on instance boot automatically, do not edit.
         2  #
         3  BOOTPROTO=dhcp
         4  DEVICE=eth0
         5  HWADDR=52:54:00:de:11:64
         6  ONBOOT=yes
         7  PERSISTENT_DHCLIENT=yes
         8  TYPE=Ethernet
         9  USERCTL=no
    
  • more 一頁一頁 的顯示檔案內容 (空格下一頁 enter下一行)

    [root@VM_0_9_centos etc]# more csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
        
                    setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
                    setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
            #add sbin directories to the path
            foreach p ( /usr/local/sbin /usr/sbin )
                    switch (":${PATH}:")
                    case "*:${p}:*":
                            breaksw
                    default:
    --More--(39%)
    
  • less 與 more類似,但是比more更好的是,他可以往前翻頁(空格翻頁,退出q命令,查詢字串/要查詢向下查詢,向上查詢使用?要查詢的字串 n繼續搜尋下一個,N 向上尋找)

    [root@VM_0_9_centos etc]# less csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
                    setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
                    setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    
  • head 只看頭幾行

    [root@VM_0_9_centos etc]# head csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
                    setenv PATH  "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
                    setenv PATH  "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    
  • tail 只看尾巴幾行 (-n 行數)

    [root@VM_0_9_centos etc]# tail csh.login
                    if ( -r "$i" ) then
                                    if ($?prompt) then
                                          source "$i"
                                    else
                                          source "$i" >& /dev/null
                                    endif
                    endif
            end
            unset i nonomatch
    endif
    

你可以使用man[命名]來檢視各個命令的使用文件,如: man cp

ifconfig 檢視網路配置> 拓展: Linux 連結概念

Linux的連結分為兩種:硬連結 軟連線

硬連結: A---B,假設B是A的硬連結,那麼他們兩個指向了同一個檔案!,允許一個檔案擁有多個路徑,使用者可以通過這種機制建立硬連結到一些重要檔案上,防止誤刪!

軟連結: 類似window的快捷方式,刪除的原始檔,快捷方式也無法訪問

# 硬連結
[root@VM_0_9_centos ceshi]# ln test test1  
# 軟連結(符號連結)
[root@VM_0_9_centos ceshi]# ln -s test test2
[root@VM_0_9_centos ceshi]# ls -ll
total 0
-rw-r--r-- 2 root root 0 Jun 15 10:18 test
-rw-r--r-- 2 root root 0 Jun 15 10:18 test1
-rw-r--r-- 1 root root 0 Jun  4 10:47 test1.java
lrwxrwxrwx 1 root root 4 Jun 15 10:19 test2 -> test
[root@VM_0_9_centos ceshi]# echo "hello world" >> test
[root@VM_0_9_centos ceshi]# cat test
hello world
[root@VM_0_9_centos ceshi]# cat test1
hello world
[root@VM_0_9_centos ceshi]# cat test2
hello world
# 刪除原始檔
[root@VM_0_9_centos ceshi]# rm -rf test
[root@VM_0_9_centos ceshi]# ls
test1  test1.java  test2
[root@VM_0_9_centos ceshi]# cat test1
hello world
# 軟連結已經失效
[root@VM_0_9_centos ceshi]# cat test2
cat: test2: No such file or directory

建立 ln命令

touch 建立檔案命令

echo 輸入字串

vim 編輯器

三種使用模式

基本上vi/vim共分為三種模式,分別是命令模式(Command mode),輸入模式(insert mode)底線命令模式(Last line mode). 這三種模式的作用分別是:

命令模式:

使用者剛剛啟動vi/vim,便進入了命令模式.

此狀態下敲擊鍵盤動作會被vim識別為命令,而非輸入字串,比如我們此時按下i,並不會輸入一個字元,i被當做了一個命令.

以下是常用的幾個命令:

  • i 切換到輸入模式,以輸入字元
  • x刪除當前游標所在處的字元
  • : 切換到底線命令模式,以在最低一行輸入命令

若想要編輯文字,啟動vim.進入命令模式,按下i,切換到輸入模式

命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令

輸入模式

在命令模式按下i進入輸入模式

在輸入模式中,可以使用一下按鍵:

  • 字元按鍵以及shift組合,輸入字元
  • ENTER,回車鍵,換行
  • BACK SPACE 退格鍵,刪除游標前一個字元
  • DEL 刪除鍵,刪除游標後一個字元
  • 方向鍵 在文字中移動游標
  • HOME/END 移動游標到行首/行尾
  • page Up/page Down 上/下翻頁
  • insert 切換游標為輸入/替換模式,游標將變成豎線/下劃線
  • ESC 退出輸入模式,切換到命令模式

底線命令模式

在命令模式下按下: (英文冒號)就進入了底線命令模式

底線命令模式可以輸入單個或多個字元的命令,可用的命令非常多

在底線命令模式中,基本的命令有(已經省略了:)

  • q 退出程式
  • w 儲存檔案

按esc可隨時退出底線命令模式

第一部分:一般模式可用的游標移動、複製貼上、搜尋替換等

移動游標的方法
h 或 向左箭頭鍵(←) 游標向左移動一個字元
j 或 向下箭頭鍵(↓) 游標向下移動一個字元
k 或 向上箭頭鍵(↑) 游標向上移動一個字元
l 或 向右箭頭鍵(→) 游標向右移動一個字元
[Ctrl] + [f] 螢幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用)
[Ctrl] + [b] 螢幕『向上』移動一頁,相當於 [Page Up] 按鍵 (常用)
[Ctrl] + [d] 螢幕『向下』移動半頁
[Ctrl] + [u] 螢幕『向上』移動半頁
+ 游標移動到非空格符的下一行
- 游標移動到非空格符的上一行
n< space> 那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,游標會向右移動這一行的 n 個字元。
0 或功能鍵[Home] 這是數字『 0 』:移動到這一行的最前面字元處 (常用)
$ 或功能鍵[End] 移動到這一行的最後面字元處(常用)
H 游標移動到這個螢幕的最上方那一行的第一個字元
M 游標移動到這個螢幕的中央那一行的第一個字元
L 游標移動到這個螢幕的最下方那一行的第一個字元
G 移動到這個檔案的最後一行(常用)
nG n 為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg 移動到這個檔案的第一行,相當於 1G 啊!(常用)
n< Enter> n 為數字。游標向下移動 n 行(常用)
搜尋替換
/word 向光標之下尋找一個名稱為 word 的字串。例如要在檔案內搜尋 vbird 這個字串,就輸入 /vbird 即可!(常用)
?word 向光標之上尋找一個字串名稱為 word 的字串。
n 這個 n 是英文按鍵。代表重複前一個搜尋的動作。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字串,則按下 n 後,會向下繼續搜尋下一個名稱為 vbird 的字串。如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱為 vbird 的字串!
N 這個 N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動作。例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。
刪除、複製與貼上
x, X 在一行字當中,x 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是退格鍵) (常用)
nx n 為數字,連續向後刪除 n 個字元。舉例來說,我要連續刪除 10 個字元, 『10x』。
dd 刪除遊標所在的那一整行(常用)
ndd n 為數字。刪除游標所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用)
d1G 刪除游標所在到第一行的所有資料
dG 刪除游標所在到最後一行的所有資料
d$ 刪除遊標所在處,到該行的最後一個字元
d0 那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字元
yy 複製遊標所在的那一行(常用)
nyy n 為數字。複製游標所在的向下 n 行,例如 20yy 則是複製 20 行(常用)
y1G 複製遊標所在行到第一行的所有資料
yG 複製遊標所在行到最後一行的所有資料
y0 複製游標所在的那個字元到該行行首的所有資料
y$ 複製游標所在的那個字元到該行行尾的所有資料
p, P p 為將已複製的資料在游標下一行貼上,P 則為貼在遊標上一行!舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢?那麼原本的第 20 行會被推到變成 30 行。(常用)
J 將游標所在行與下一行的資料結合成同一行
c 重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]
u 復原前一個動作。(常用)
[Ctrl]+r 重做上一個動作。(常用)

第二部分:一般模式切換到編輯模式的可用的按鈕說明

進入輸入或取代的編輯模式
i, I 進入輸入模式(Insert mode):i 為『從目前游標所在處輸入』, I 為『在目前所在行的第一個非空格符處開始輸入』。(常用)
a, A 進入輸入模式(Insert mode):a 為『從目前游標所在的下一個字元處開始輸入』, A 為『從游標所在行的最後一個字元處開始輸入』。(常用)
o, O 進入輸入模式(Insert mode):這是英文字母 o 的大小寫。o 為『在目前游標所在的下一行處輸入新的一行』;O 為在目前游標所在處的上一行輸入新的一行!(常用)
r, R 進入取代模式(Replace mode):r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止;(常用)
[Esc] 退出編輯模式,回到一般模式中(常用)

第三部分:一般模式切換到指令行模式的可用的按鈕說明

指令行的儲存、離開等指令
:w! 若檔案屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案許可權有關啊!
:q 離開 vi (常用)
:q! 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
注意一下啊,那個驚歎號 (!) 在 vi 當中,常常具有『強制』的意思~
:wq 儲存後離開,若為 :wq! 則為強制儲存後離開 (常用)
ZZ 這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!
:w [filename] 將編輯的資料儲存成另一個檔案(類似另存新檔)
:r [filename] 在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』 這個檔案內容加到遊標所在行後面
:n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到指令行模式下執行 command 的顯示結果!例如 『:! ls /home』即可在 vi 當中看 /home 底下以 ls 輸出的檔案資訊!
:set nu 顯示行號,設定之後,會在每一行的字首顯示該行的行號
:set nonu 與 set nu 相反,為取消行號!

賬號管理

簡介

Linux系統是一個多使用者多工的分時作業系統,任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。

使用者的賬號一方面可以幫助系統管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助使用者組織檔案,併為使用者提供安全性保護。

每個使用者賬號都擁有一個唯一的使用者名稱和各自的口令。

使用者在登入時鍵入正確的使用者名稱和口令後,就能夠進入系統和自己的主目錄。

實現使用者賬號的管理,要完成的工作主要有如下幾個方面:

  • 使用者賬號的新增、刪除與修改。
  • 使用者口令的管理。
  • 使用者組的管理。

使用者賬號的管理

使用者賬號的管理工作主要涉及到使用者賬號的新增、修改和刪除。

新增使用者賬號就是在系統中建立一個新賬號,然後為新賬號分配使用者號、使用者組、主目錄和登入Shell等資源。

新增賬號 useradd

useradd -選項 使用者名稱

引數說明:

  • 選項 :

    • -c comment 指定一段註釋性描述。
    • -d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m選項,可以建立主目錄。
    • -g 使用者組 指定使用者所屬的使用者組。
    • -G 使用者組,使用者組 指定使用者所屬的附加組。
    • -m 使用者目錄如不存在則自動建立。
    • -s Shell檔案 指定使用者的登入Shell。
    • -u 使用者號 指定使用者的使用者號,如果同時有-o選項,則可以重複使用其他使用者的標識號。
  • 使用者名稱 :

    • 指定新賬號的登入名。

測試:

[root@VM_0_9_centos ~]# useradd -m zhonglao
[root@VM_0_9_centos ~]# cd /home/
[root@VM_0_9_centos home]# ls
dockerfile  docker-test-volume  mysql  zhonglao

本質:Linux中一切皆檔案,這裡的新增使用者說白了就是往某一個檔案中寫入使用者的資訊了! 可以檢視配置 /etc/passwd

刪除使用者 userdel

userdel -r zhonglao
# 刪除使用者,並將他的目錄也一併刪除
[root@VM_0_9_centos home]# userdel -r zhonglao
[root@VM_0_9_centos home]# ls
dockerfile  docker-test-volume  mysql

修改使用者 usermod

修改的其他選項,與新增一致

usermod -d /home/233 zhonglao


[root@VM_0_9_centos home]# useradd -m zhonglao
[root@VM_0_9_centos home]# usermod -d /home/233 zhonglao
[root@VM_0_9_centos home]# ls
dockerfile  docker-test-volume  mysql  zhonglao
[root@VM_0_9_centos home]# cat /etc/passwd
 //......
zhonglao:x:1001:1001::/home/233:/bin/bash

切換使用者

root使用者

1.切換使用者的命令為:su username [username是你的使用者名稱]

2.從普通使用者切換到root使用者,還可以使用命令: sudo su

3.在中斷輸入exit和logout或使用快捷方式ctrl+d,可以退回到原來使用者,其實ctrl+d也是執行的exit命令

4.在切換使用者時,如果想在切換使用者之後使用新使用者的工作環境,可以在su和username之間加-,例如:[su-root]

$表示普通使用者

表示超級使用者,也就是root使用者

注意 如果出現

# 這樣的情況
[root@VM_0_9_centos home]# su zhonglao
bash-4.2$ 

# 可以先檢視 使用者的目錄情況
[root@VM_0_9_centos home]# cat /etc/passwd
//..........
zhonglao:x:1001:1001::/home/233:/bin/bash

# 改回之前的目錄或者建立
[root@VM_0_9_centos home]# usermod -d /home/zhonglao zhonglao
//...
zhonglao:x:1001:1001::/home/zhonglao:/bin/bash
# 再次切換
[root@VM_0_9_centos home]# su zhonglao
[zhonglao@VM_0_9_centos home]$ 
# 檢視主機名
[root@VM_0_9_centos home]# hostname
# 修改主機名
[root@VM_0_9_centos home]# hostname rootzl
# 重新登入 主機名就會變了  重啟電腦之後就會消失
[root@rootzl ~]# 

使用者的密碼設定

給使用者設定密碼,使用者就可以登入了,liunx密碼是不會顯示的

超級使用者可以改任何使用者指定密碼

# passwd username
[root@rootzl ~]# passwd zhonglao
Changing password for user zhonglao.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

如果是普通使用者

passwd
(current) UNIX password:
new password:
re password

鎖定賬戶

passwd -l zhonglao # 鎖定之後這個使用者就不能登入了
passwd -d zhonglao # 沒有密碼也不能登入

使用者組管理

屬主 屬組

每個使用者都有一個使用者組,系統可以對一個使用者組中的所用使用者進行集中管理(開發 測試 運維 root),不同的Liunx系統對使用者組的規定有所不同,如Linux下的使用者屬於與他同名的使用者組,這個使用者組在建立使用者時間時建立

使用者組的管理設計使用者組的新增、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group檔案的更新

建立使用者組

[root@rootzl ~]# groupadd zld
[root@rootzl ~]# cat /etc/group
//...
docker:x:990:
zhonglao:x:1001:
zld:x:1002:

建立完使用者組可以得到一個組的id,這個id是可以指定的(-g 520),如果不指定就是自增的

刪除使用者組

[root@rootzl ~]# groupdel zld

修改使用者組的許可權資訊和名字

[root@rootzl ~]# groupmod -g 520 -n newzld zld

使用者切換使用者組

# 登入當前使用者 zhonglao
$ newgrp root

拓展:檔案的檢視

/etc/passwd

使用者名稱:口令(登入密碼,我們不可見):使用者標識號:組標識號:註釋性描述:主目錄:登入shell

這個檔案中的每一行都代表一個使用者,我們可以從這裡看出這個使用者目錄在哪裡,屬於那個組

登入口令:把真正的加密後的使用者口令存放到/etc/shadow檔案中,保證我們密碼的安全性!

磁碟管理

df (列出檔案系統整體的磁碟使用量) du(檢查磁碟控制元件使用量)


# df
[root@rootzl ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs          930108        0    930108   0% /dev
tmpfs             941028        0    941028   0% /dev/shm
tmpfs             941028      660    940368   1% /run
tmpfs             941028        0    941028   0% /sys/fs/cgroup
/dev/vda1       51473868 12787188  36489436  26% /
tmpfs             188208        0    188208   0% /run/user/0
# -h 把位元組轉換成 M
[root@rootzl ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        909M     0  909M   0% /dev
tmpfs           919M     0  919M   0% /dev/shm
tmpfs           919M  660K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        50G   13G   35G  26% /
tmpfs           184M     0  184M   0% /run/user/0


# du
[root@rootzl ~]# du
8       ./.cache/abrt
12      ./.cache
8       ./.pip
8       ./.docker
8       ./.ssh
4       ./.pki/nssdb
8       ./.pki
4       ./.config/abrt
8       ./.config
......
# 包括隱藏檔案
[root@rootzl ~]# du -a

# 檢查根目錄下每個目錄所佔用的容量
[root@rootzl ~]# du -sm /*

Mac或者想使用Linux掛載我們的一些本地磁碟或者檔案

掛載: mount 將 外部裝置 掛載到mnt下進行 訪問

[root@rootzl /]# ls
backup.db  boot  dev  home  lib64       media  mydata  opt   root  sbin  sys  usr
bin        data  etc  lib   lost+found  mnt    nmon    proc  run   srv   tmp  var
[root@rootzl /]# mount /dev/zhonglao /mnt/zhonglao

解除安裝: umount -f [掛載位置] 強制解除安裝

程序管理

什麼是程序

1.在Linux中,每個程式都是有自己的一個程序,每個程序都有一個id號

2.每個程序,都有一個父程序

3.程序可以有兩種存在方式:前臺!後臺執行!

4.一般的話服務都是後臺執行的,基本的程式都是前後臺執行的

命令

ps 檢視當前系統中正在執行的各種程序的資訊!

ps -xx:

  • -a 顯示當前終端執行的所有的程序資訊
  • -u 以使用者的資訊顯示程序
  • -x 顯示後臺執行程序的引數
# ps -aux| 檢視所有的程序
ps -aux|grep mysql

# | 在Linux這個叫管道符 A|B
# grep 查詢檔案中符合條件的字串

[root@rootzl ~]# ps -aux|grep mysql
root     10961  0.0  0.0 112812   968 pts/0    S+   15:02   0:00 grep --color=auto mysql
root     19804  0.0  0.0  11820   704 ?        S    Mar20   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
root     20083  0.2 20.6 1368472 388128 ?      Sl   Mar20 323:11 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=root --log-error=/var/log/mariadb/mariadb.log --pid-file=/usr/local/mysql/data/mysql.pid --socket=/tmp/mysql.sock --port=5186

ps -ef:可以檢視到父程序的資訊

ps -ef|grep mysql # 看父程序 我們一般可以通過目錄結構檢視

# 程序樹
pstree -pu 
	-p 顯示父id
	-u 顯示使用者組

結束程序:殺掉程序,等價於window結束任務

# 強制結束程序
kill-9 程序的id