Linux快速入門(更正中)

更新到php

Linux概述

前言

這篇文章目的是幫你快速入門使用Linux,不可能面面俱到,不少內容都是省略的。咱們要對Linux操做系統創建起一個總體框架,瞭解最基礎的知識點和掌握最經常使用的命令,而後在使用Linux中學習,給本身創建出來的框架添加 億點 細節。文章的內容,是根據我在平常使用Linux中,總結出來的最經常使用的操做,或者是最基礎的知識點。可能其餘熟悉Linux的人會以爲還須要加其餘的內容。(文章還在更新中)html

Linux簡介

通常咱們說的Linux系統,指的是Linux內核,最初的的Linux內核是由林納斯·託瓦絲(Linus Torvalds)編寫出來的,是一個開源的免費的類Unix操做系統,意思就是能夠白嫖的操做系統,目前(2021.7.14)最新的Linux內核版本爲5.13.1。linux

  • Linux 吉祥物

什麼是Linux發行版

  • Linux發行版是由Linux內核、GNU工具、軟件包管理器等等組成的操做系統。簡單來講就是:Linux內核 + 應用軟件組成的操做系統。
  • Linux發行版數量無數,可是目前都是基於Debain、Slackware、RedHat、Fedora、Enoch、Arch以及Android。
  • 下面是簡單的Linux各大系
  • 具體有哪些發行版的能夠去這裏https://github.com/FabioLolix/LinuxTimeline/tags瞭解

Linux一些特色

  • 開源:Linux內核是開源的,你能夠下載源碼學習,或者本身修改
  • 命令行使用方便
  • 應用領域:服務器操做系統
  • Linux一切皆爲文件

安裝Linux操做系統

  • 能夠根據本身的喜愛選擇Linux發行版、也能夠根據特定的需求選擇Linux發行版,下載鏡像文件
  • 選擇再虛擬機上安裝仍是實體機安裝,實體機安裝要製做啓動盤,安裝過程虛擬機和實體機差很少。
  • 安裝過程能夠根據須要選擇本身分盤,也能夠整盤安裝,安裝程序自動分配。
  • 具體網上隨便搜就有

一些關於Linux的網站

Linux學習

  • 菜鳥教程:www.runoob.com/linux/linux-tutorial.html
  • 鳥哥的私房菜:www.linux.vbird.org/linux_basic/
  • Linux內核:www.kernel.org

工具網站


Linux的靈魂:命令行

命令的通常格式

  • command -[選項] [參數]
  • command [參數]
  • 一些命令選項能夠多個,參數也能夠多個
  • 例如:
    • 單列顯示當前目錄全部文件和文件夾 ls -al
      • 選項 -a 是顯示所有
      • 選項 -l 是單列輸出
      • ls 的選項不僅這些能夠經過 -h 選項快速查詢,也能夠 經過 man 查詢
    • 刪除當前目錄下的文件夾 rm -r [目標文件夾]
      • -r 或 -R 遞歸處理,將指定目錄下的全部文件與子目錄一併處理

命令的補全 Tab 鍵

補全是個好東西,有一些命令比較長,懶得敲完或者是忘了全拼,只記得開頭幾個字母,能夠經過 TAB 鍵補全。也能夠補全路徑,路徑最好用補全,既方便又不會出錯。值得注意的是,補全功能,並非全部的黑乎乎的命令行界面都有的功能,具體後面講到 shell 的時候會解釋。git

可補全的:github

  • 能夠補全命令、選項、和參數
  • 補全有多個匹配值時,雙擊TAB能夠查看可補全的命令、選項或者參數
  • 善於利用補全能夠提升工做效率

命令的別名

在 bash(後面解釋) 中能夠用 alias 來給指令建立別的名字,能夠加上參數。shell

  • alias ll='ls -al'
  • 可是這個別名只在當前的bash 中有效,因此能夠把這條語句寫進當前用戶的 bash 配置文件中,使別名永久有效

經常使用的指令

指令 指令的做用
ls 顯示當前文件夾中的文件、文件夾
cp 拷貝文件
mv 移動文件或者文件夾
rm 用於刪除給定的文件和目錄
cd 切換用戶當前工做目錄
su 用於切換當前用戶身份到其餘用戶身份
sudo 以其餘身份來執行命令,預設爲root
echo 輸出指定的字符串或者變量
grep 強大的文本搜索工具,常與管道配合使用
wget Linux系統下載文件工具
man 查看Linux中的指令幫助
mkdir 建立文件夾命令

如何學習、記憶命令

咱們不必記住全部的命令以及指令的選項,只須要記住經常使用的指令。基本上用多了就記住了,因此學習Linux就是多動手,多實踐。忘了指令或者指令選項能夠用man來快速查看指令的選項,或者搜索。編程


認識和學習Shell

Vim編輯器

學Shell以前先介紹一下Linux命令行下的文本編輯軟件。Linux下的編輯器有不少,好比Nano、Emacs、Pico等。徹底能夠根據本身的喜愛學習,喜歡用哪一個就用哪一個,Vim 是如今大多數Linux發行版自帶的一個文本編輯。vim

vi/vim的操做模式(重點)

  • 通常命令模式,默認的模式,能夠進行不少操做,好比,行復制、多行刪除、跳轉、查找、撤銷和重作等等。windows

  • 編輯模式,顧名思義就是直接編輯文本文件,按 a、i、o 鍵進入,按ESC退出到通常命令模式,在命令模式下輸入(英文冒號),再輸入指令bash

    指令:

  • 保存退出::wq

  • 放棄更改退出::q!

  • 未更改退出::q

vim的使用

直接用:vim [文件名]進行編輯。

認識和學習bash

什麼是Shell

首先 shell 翻譯成中文是」殼「;它是相對於Linux內核來講的,由於shell創建在Linux內核的基礎上,面向用戶的命令接口。意思就是咱們能夠經過Shell跟Linux內核打交道,你經過shell告訴內核作什麼,它給你反饋運行信息。因此shell只是一個統稱,不具指某一個東西。

認識bash

bash就是shell的一種,絕大部分Linux發行版默認用的都是bash。
Bash Shell 的功能:

  • 歷史命令(history)
    • 記錄你使用過的命令,記錄的條數能夠本身設置,默認是1000個。
  • 命令和文件的補全功能
  • 命令別名的設置
  • 任務管理、前臺、後臺任務控制
  • 程序化腳本:也就是Shell腳本,能夠作不少事情,能夠直觀理解成,一次執行多條命令,但不只限於此
  • 通配符

shell的變量

簡單說明

學過C 或者其餘編程語言都知道變量這個東西,shell可使用變量,通常在shell 腳本中使用的比較多。能夠在學Shell腳本的時候在學習。

環境變量

  • PATH 變量:這個變量裏包含不少路徑,這些路徑通常是某些軟件的可執行文件的路徑,後面在講解。
  • 還有各類環境變量

bash的環境配置

就像對bash進行設置同樣,根據本身的習慣定製本身的bash,提升工做效率。設置本身的bash就要改bash的配置文件。

配置文件

  • /etc/profile 這是所有用戶的配置文件,不熟悉的狀況下最好不要改這個,改v
  • bash 的配置文件是家目錄下的 .bashrc.profile,改哪一個均可以,可是通常只改 .bashrc

能夠配置什麼

  • 命令別名
  • 環境變量,如PATH
  • 配置文件的修改,會在使用中慢慢熟悉

bash 的一些快捷鍵

善用快捷鍵,提升工做效率,下面的都是最經常使用的快捷鍵

控制

  • Ctrl + l:清屏(與clear命令效果相同)
  • Ctrl + c:終止當前正在執行的命令
  • Ctrl + z:掛起命令,把當前進程轉到後臺運行,使用fg命令恢復
  • Ctrl + s:阻止屏幕輸出(當前正在執行的命令不在打印信息)
  • Ctrl + q:容許屏幕輸出(使用Ctrl+s命令後,能夠用Ctrl+q恢復)
  • Ctrl + d : 退出當前 Shell S、Q、C、Z 是由終端設備處理的,可用 stty 命令設置。

編輯命令

光標移動
  • Ctrl + a :移到命令行首
  • Ctrl + e :移到命令行尾
  • Alt + f :前移(向右移動)一個單詞
  • Alt + b :後退(向左移動)一個單詞
命令修改
  • Ctrl + u :從光標處刪除至命令行首
  • Ctrl + k :從光標處刪除至命令行尾
  • Ctrl + w :從光標處刪除至字首
  • Alt + d :從光標處刪除至字尾
  • Ctrl + d :刪除光標處(或光標後)的字符(若是光標先後都沒有字符,即命令行爲空的時候,則會退出shell)

從新執行命令

  • 上下鍵選擇執行過的命令

數據流重定向

什麼是數據流重定向

最直觀的數據流:bash執行命令過程當中輸出到屏幕上的信息,數據流重定向就是,把命令運行輸出信息,從新定向到指定的地方。

具體操做

  • 標準輸入(stdin):< 或 <<
  • 標準輸出(stdout):> 或 >>
  • 標準錯誤輸出(stderr):2> 或 2>>(程序運行可能回輸出報錯信息,這個會把報錯的信息從新定向)
  • 例如:將 ls -al / 的輸出重定向到某個文件,ls -al / >> ./test

多命令執行(指令的分隔方式;、&&、||)

爲何須要多命令執行?由於有時候你想執行完 指令1 而後 再執行 指令2 可是 指令1 有輸出,並且可能命令執行時間比較長,須要等待,因此就會一次輸入多個指令,分隔方式的不一樣,多條命令執行的狀況也會不一樣。多命令執行在工做中常常用到。

分隔方式
  • ;(分號)cmd1; cmd2 不慮命令相關性執行,也就是無論cmd1執行是否成功,都會執行cmd2

  • &&cmd1 && cmd2 當cmd1 成功執行,纔會執行cmd2

  • ||cmd1 || cmd2 當cmd1成功執行,則不執行cmd2,假如cmd1執行不成功,那就執行cmd2

管道命令

爲何要用管道命令

有一些命令執行的輸出數據密密麻麻,堆滿整個屏幕,很難篩選出有效的或者是本身須要的信息。這時候就要 」管道加塞子「 來篩選出本身想要的信息。

直觀理解管道

  • 命令其實也能夠算是數據重定向的一種,能夠理解爲將數據流重定向到管道中。而管道命令就至關於「篩子」、「過濾器」。最後經過管道出來的信息就是本身想要的信息。
  • 管道命令使用【|】定界符號,就像一根管道,配合管道命令使用。

選取命令:cut、grep

  • cut 能夠將一段信息的某一個部分切出來,以行爲單位,也能夠用awk命令
  • grep 字符查找,也能夠說是字符匹配,能夠將信息中匹配的字符或者字符串篩選出來
    • 用法 cmd1 | grep "要匹配的字符(串)" ,也能夠用單引號 ',單個匹配字符串能夠不用引號
  • 例子 查找當前目錄下全部帶 a 字母的文件或者文件夾 ls -l | grep a

排序命令

  • sort
  • wc
  • uniq

shell 腳本

什麼是shell腳本:

最簡單的理解,就是把一堆命令寫在腳本文件裏,執行腳本文件就等於執行這一堆命令,可是shell腳本不只限於只寫一條條命令,它像其餘編程語言同樣,有變量,有循環、條件等語句。 shell腳本能夠做爲獨立分支去學習,嚴格來講是一種編程語言。shell腳本文件名後綴通常是.sh,若是要執行當前目錄下的腳本文件,要加上 ./ (既:./腳本文件名.sh)才能執行。./是當前目錄的意思,後面講到,傳送門

命令的本質

通常來講,shell命令分爲兩種,一種是內置的命令,一種是外部命令。

  • 內置命令
    shell自帶的命令叫作shell的內置命令,在內部是經過函數來實現的。當啓動shell以後,這些命令所對應的函數代碼就會被加載到內存中,由於這些命令是被直接加載到內存中,因此shell的內置命令在運行的時候是很是快的。好比說 ls 命令就是內置命令。
  • 外部命令
    執行外部命令就是執行相應的程序。通常在Linux中,執行外部命令的時候,不會去全部的目錄一個一個的查找是否有對應的應用程序,而只會在PATH環境變量的路徑下查找是否有相應的應用程序,若是有的話就運行,沒有的話就返回錯誤的信息給用戶。好比說咱們使用 vim編輯器編輯文本文件,vim就是外部命令

原文連接


文件目錄

Linux的用戶與用戶組

  • 這裏只是簡單的介紹Linux的用戶與用戶組,爲了方便講Linux的文件和目錄,由於Linux操做系統對權限的管理特別的嚴格,每一個文件都有本身的擁有者,你沒有一個文件的權限,你就不能對這個文件操做。並且管理很是簡單,並不會像 windows 那樣很是的混亂。

  • 用戶:就是在Linux主機上建立的用戶,這不難理解。

  • 用戶組:其實就是把一羣用戶扎堆放,一個用戶能夠在多個用戶組中

  • 其餘人的概念(抽象):用圖解釋

用戶的家目錄

每一個用戶均可以有一個家目錄,對應的shell環境變量是 $HOME,家目錄在 /home 下,通常以用戶的形勢命名。通常工做都是在本身的家目錄下進行的,可是並非每一個用戶都有家目錄,一是由於新增用戶的時候可能沒有建立家目錄,二是由於有時候新增的用戶不須要家目錄,只是須要用來實現某種工做而新增的用戶。

Linux文件權限的概念

Linux的文件屬性

必定要弄清文件的屬性,這是咱們和Linux操做系統打交道最最最多的地方,由於」Linux下一切皆爲文件「,咱們必定要搞懂文件的屬性。

第一欄

第一 欄表明這個文件的類型權限( permission )

類型:

  • 第一個字符表明這個文件是目錄、文件或連接文件等
  • 當爲 [d] 則是目錄,例如上表文件名爲anconda的那 行(重點)
  • 當爲 [-] 則是文件, 例如上表文件名爲bashrc那一行(重點)
  • 如果 [1] 則表示爲連接文件( link file )
  • 如果 [b] 則表示爲設備文件裏面的可供存儲的周邊設備(可按塊隨機讀寫的設備)
  • 如果 [c] 則表示爲設 備文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取設備)

權限( permission ):
接下來的字符中,以三個爲一組,且均爲{r,w,x}的三個參數的組合好比[rwx]、[rw-]。(重重重點)

  • [r]表明可讀 **( read ) **
  • [w]表明可寫 ( write )
  • [x]表明可執行 ( execute )
  • 要注意的是這三個權限的位置不會改變,若是沒有權限,就會出現減號[-]而已
  • 第一組爲文件擁有者可具有的權限,以[db.py]這個文件爲例,該文件的擁 有者能夠讀寫,但不可執行;
  • 第二組爲加入此用戶組之帳號的權限
  • 第三組爲非本人 且沒有加入本用戶組的其餘用戶的權限

二到七欄

  • 第二欄表示有多少文件連結到此節點
  • 第三欄表示這個文件(或目錄)的『擁有者賬號』
  • 第四欄表示這個文件的所屬羣組
  • 第五欄爲這個文件的容量大小,預設單位爲bytes
  • 第六欄爲這個文件的建檔日期或者是最近的修改日期
  • 第七欄爲這個文件的文件名
    (PS:這部份內容由鳥哥的描述改編)

掃盲

Linux的文件和Windows有很是大的區別,必定要區分清楚。Linux操做系統下,一個文件能不能讀和寫也就是,並不禁這個 文件自己的屬性 決定,而是由文件的讀寫權限決定,也就是說:一個文本文件,能不能讀取、修改,還要看它有沒有讀和寫的權限,而不是它是個文本文件就能讀和寫。同理,一個 可執行文件 能不能執行,還要看它有沒有 執行 權限。文件夾也是同樣的,文件夾能不能(用ls列出文件夾內的文件或文件夾),看 r 權限,能不能進入到這個文件夾(cd) 要看 x 權限,能不能在文件夾內 修改文件、建立文件、建立文件夾等,要看 w 權限。

如何修改文件的屬性和權限

  • chgrp:修改文件所屬的用戶組
  • chown:修改文件擁有者
  • chmod:修改文件的權限,SUID、SGID、SBIT 等的特性

修改所屬用戶組:chgrp

  • 命令: chgrp [-R] gropName dirname/filename
  • 解釋:-R 選項是更改這個目錄以及目錄下的全部文件

修改所屬用戶:chown

  • 命令: chom [-R] UserName(username:group) dirname/filename
  • 解釋:-R 選項是更改這個目錄以及目錄下的全部文件,若是要修改的目標是 文件,能夠不用這個選項

修改權限:chmod

總體修改

  • Linux文件權限字母有對應的數字,也能夠叫數字權限

  • 讀、寫、執行的數字權限對照(重點)

    • r:4
    • w:2
    • x:1
  • 每一種身份的權限都是這三個權限累加起來的,因此咱們能夠用數字權限的累加做爲一種用戶的權限,好比:

    • 某個文件的權限爲 -rw-rwxr--,對應的數字權限就是674
  • 命令:chmod [-R] guo dirName/fileName

    • 解釋:-R 選項是更改這個目錄以及目錄下的全部文件
    • guo :g 用戶組數字權限,u 用戶數字權限,o 其餘人數字權限

單個修改

咱們也能夠針對某一權限組進行修改,好比文件用戶組權限的修改,文件用戶權限的修改。

  • 更改權限符號

    • +(加入)
    • -(除去)
    • = (設置)
  • 權限組

    • u(user):用戶權限組
    • g(group):用戶組權限組
    • o(other):其餘權限組
    • a(all):全部組
  • 用法:

    • 好比說咱們修改用戶的權限,給用戶的權限加上可執行權限:chmod u+x fileName

文件的種類與擴展名

Linux系統文件種類

簡述

其實Linux下文件的種類不像Windows下的那麼多,那麼複雜,常見的文件類型也就幾種。

文件種類

  • 常規文件

    • 存文本文件:最多見的就是咱們敲的代碼,無論是C/C++ 仍是Python
    • 二進制文件:裏面就0和1
    • 數據文件:通常是某種程序執行時讀取的文件
  • 目錄

  • 連接文件

  • 設備與設備文件

    • 區塊設備文件
    • 字符設備文件
  • 數據接口文件(socket)

  • 數據傳送文件(FIFO,pipe)

文件的擴展名

概述

Linux文件名的後綴,並不決定這個文件的文件類型,它只起到輔助做用,告訴你這個是什麼類型的文件。好比說一個shell 腳本文件,文件名通常爲:filename.sh ,可是無論有沒有 .sh 它都是一個腳本文件,把.sh 刪掉均可以,只不過若是沒有這個後綴,你可能不知道它是個腳本文件。一樣的,一個可執行文件能不能被執行,看的不是擴展名,看的是有沒有執行權限,跟文件擴展名一點關係都沒有,有沒有均可以

擴展名的用處

文件的擴展名不能決定文件是否能執行,那Linux還要擴展名幹啥?其實最簡單的一個緣由就是,容易區分是什麼文件,或者說容易區分是哪一種文件,這個文件是個什麼東西。

常見的文件擴展名

  • .py、.c、.cpp 這一類的文件名
  • .sh:Linux下常見的,shell腳本的擴展名
  • .Z、.tart、.tart.gz:壓縮包

文件內容的查看和修改

  • 查看:文本文件均可以用 cat 命令來查看,大部分文件都能用 cat ,只不過可能 顯示出來的是一堆亂碼。
  • 修改:用文本編輯器修改,如:vim
  • touch 命令:用來建立一個文件

Linux目錄配置

Linux根目錄下有不少個文件夾,這些文件夾都有必定的本身用處

Linux常見的目錄

目錄 做用
/ 這個叫根(root)目錄
/boot 主要放系統啓動相關的文件
/dev Linux全部的設備與接口設備,以文件的形式放在這個目錄中
/etc 配置文件的目錄,系統的配置文件,和一些軟件的配置文件
/var 和系統運行有關
/usr 通常用來存放系統軟件資源的,好比說/usr/bin下存放咱們大部分用戶能執行的命令
/media 通常用來掛載媒體文件,好比說掛載U盤
/home 家目錄都在這個home目錄下

Ps:usr==> 是Unix software resource的縮寫,而 不是 user 縮寫

Linux目錄樹

(圖片來自:Linux 目錄詳解)

打印當前目錄指令

  • pwd 能夠打印當前工做目錄

絕對路徑和相對路徑

  • 絕對路徑:就是詳細的路徑,就好比說你家在 xxx省xxx市xxx街道xxx路xxx小區xxx棟xxx號。在Linux就是,從根目錄(/)開始,一直到你的目標目錄,好比說用戶abc的家目錄絕對路徑:/home/abc
  • 相對路徑:路徑的相對位置,以當前目錄爲基準的路徑,好比說我家旁邊的哪哪哪。
  • Linux每一個目錄下都會有兩個特殊的目錄
    • ./:表示的是當前目錄
    • ../:表示上一級目錄

文件、目錄的默認權限和隱藏權限

這部分若是沒興趣,能夠不用瞭解,只須要知道Linux下文件權限有這一部分的內容,具體內容,能夠去查查資料,好比說鳥哥私房菜。

文件默認權限:umask

文件的特殊權限:SUID、SGID、SBIT

Linux的文件系統和磁盤

Linux的文件系統

什麼是文件繫系統

這部分涉及到了計算機組成和操做系統的知識,任何的操做系統,都創建在本身的文件按系統上,Linux和Windows使用的文件系統不一樣。windows使用的文件系統是ntfs,可是並非windows只能識別ntfs文件系統,還能夠支持其餘文件系統,好比說U盤經常使用的:FAT3二、eFat。可是,windows不能支持Linux的文件系統(ext三、ext4),而Linux支持ntfs。好比說你在本身的電腦上安裝了Windows+Linux雙操做系統,可是windows不能訪問Linux的文件,Linux能訪問Windows的文件。

Linux的文件系統

  • 如今經常使用的是:ext4(之前是ext3)
  • 支持U盤的文件系統、和ntfs等

磁盤分區

磁盤分區查看

  • gdisk 設備名
  • fdisk

磁盤格式化

內存交換分區

什麼是內存交換分區(swap)

內存交換分區是用來擴展內存的,當內存不夠時使用。

什麼是掛載點

重點:掛載點必定是目錄,這個目錄是進入文件系統的入口,並非全部文件系統都能使用,只有掛載到目錄樹的某個目錄後,才能使用該文件系統。

如何掛載和解掛文件系統

命令:mount 和 umount

  • mount 設備名 掛載點
    • 設備名通常在/dev下
    • 掛載點:目錄
  • umount 設備名

文件的壓縮

常見的壓縮文件

文件後綴 壓縮文件種類
.Z compress程序壓縮的文件
.zip zip程序壓縮的文件
.gz gzip程序壓縮的文件
.bz2 bzip2程序壓縮的文件
.XZ XZ程序壓縮的文件
. tar tar程序打包的文件,並無壓縮過
.tar.gz tar程序打包的文件,而且通過gzip的壓縮
.tar.bz2 tar程序打包的文件,而且通過bzip2的壓縮

壓縮、打包命令

gzip、bzip二、xz

打包指令: tar

爲何要打包指令?gzip, bzip2, xz也可以針對目錄來進行壓縮,不過,這兩個指令對目錄的壓縮指的是『將目錄內的全部檔案"分別"進行壓縮』,而不是像windows下面的那樣直接對目錄就能夠進行壓縮。因此要想對文件夾壓縮,首先要打包,再最打包好的單個打包文件進行壓縮。

打包經常使用指令

  • 壓縮:tar -j c v -f filename.tar.bz2 要被壓縮的文件或目錄名
  • 查詢:tar -j t v -f filename.tar.bz2
  • 解壓縮:tar -j x v -f filename.tar.bz2 -C 欲解壓縮的目錄

Linux 使用者管理

用戶帳號與用戶組

Linux的管理工做中,最重要部分之一就是管理帳號,由於Linux是一個可多用戶使用的操做系統,每一個登入的使用者至少都會取得兩個ID ,一個是使用者ID (User ID ,簡稱UID)、一個是羣組ID (Group ID ,簡稱GID)。有的Linux發行版,添加新用戶時不回自動建立家目錄,並且默認的shell不是bash,因此在添加新用戶的時候要注意。

用戶帳號的標識:UIG、GID

咱們登入系統輸入的是帳號,但其實Linux並不認識你的帳號名,只認識你的ID,ID和帳號的對應在/etc/passwd

  • UID

    (圖片來源:鳥哥的網站)
  • GID:這個與/etc/group有關,只是他是用來規範羣組名稱與GID的對應而已

帳號管理

新增用戶與刪除用戶:useradd

由於不一樣的Linux發行版新增用戶的默認設置不同,因此最好每次都要指定家目錄和默認的shell。固然你還能夠指定UID和GID(意思就是指定用戶組),這個命令須要root權限,因此在非root登入既普通用戶登入狀況下,想新建有家目錄的用戶就用:

sudo useradd -m userName -s /bin/bash

部分其餘參數說明:

  • -g 羣組:指定用戶所屬的羣組;
  • -G 羣組:指定用戶所屬的附加羣組;
  • -M:不要自動創建用戶的登入目錄;
  • -n:取消創建以用戶名稱爲名的羣組;
  • -u :指定用戶id。

用useradd 建立用戶,系統會自動作部分工做:

  • etc/passwd 裏面創建一行與賬號相關的資料,包括創建UID/GID/家目錄等
  • 在/etc/shadow 裏面將此賬號的密碼相關參數填入,可是還沒有有密碼
  • 在/etc/group 裏面加入一個與賬號名稱如出一轍的羣組名稱
  • 在/home 底下創建一個與賬號同名的目錄做爲使用者家目錄,且權限爲700

更改用戶設置

usermod [-cdegGlsuLU] username
選項與參數:

  • -g :後面接初始羣組,修改/etc/passwd 的第四個欄位,亦便是GID 的欄位
  • -G :後面接次要羣組,修改這個使用者可以支援的羣組,修改的是/etc/group
  • -l :後面接賬號名稱。亦便是修改賬號名稱, /etc/passwd 的第一欄!
  • -s :後面接Shell 的絕對路徑,例如/bin/bash 或/bin/csh 等等。
  • -u :後面接UID ,即/etc/passwd 第三欄的資料;

刪除用戶

userdel [-r] username

選項

  • -r :連同使用者的家目錄也一塊兒刪除

更改用戶的密碼

  • 使用 passwd username 能夠更改用戶的密碼
  • root 帳戶能夠改任何帳戶的密碼,固然包括root帳戶自己的密碼

用戶身份的切換

Linux中常常切換用戶,好比切換到root用戶或者其餘帳戶,又或者某些指令須要更高級的權限才能完成執行,也須要暫時的切換用戶。正常狀況下儘可能使用普通帳戶,不要隨便使用root帳戶進行操做,Linux中不建議常用root操做,最好都是在普通用戶下操做。

su 切換用戶

su 是最簡單的用戶切換命令

  • su [-lm] [-c指令] [username]
    選項與參數:
    - :單純使用- 如『 su - 』表明使用login-shell 的變數檔案讀取方式來登入系統, 若使用者名稱沒有加上去,則表明切換爲root 的身份。
    -l :與- 相似,但後面須要加欲切換的使用者賬號!也是login-shell 的方式。
    -m :-m 與-p 是同樣的,表示『使用目前的環境設定,而不讀取新使用者的設定檔』
    -c :僅進行一次指令,因此-c 後面能夠加上指令
  • 接下來會輸入密碼,輸入密碼時不會顯示任何字符,好比咱們熟悉的 *

sudo

  • sudo可讓你以其餘用戶的身份執行指令(一般是使用root的身份來執行指令),和su不一樣的是sudo的執行則僅須要本身的密碼
  • sudo [-b] [-u新使用者賬號]
    • 選項與參數:
    • -b :將後續的指令放到背景中讓系統自行執行,而不與目前的shell 產生影響
    • -u :後面能夠接欲切換的使用者,若無此項則表明切換身份爲root 。
  • 通常咱們使用的就是 sudo [cmd]:sudo 後面接命令,可使用root的權限執行該命令。
  • 咱們這主要是講sudo 最經常使用的用法。sudo沒有那麼簡單,可否使用sudo必需要看/etc/sudoers的設定值,而可以使用sudo者是透過輸入使用者本身的密碼來執行後續的指令,可自行了解。
  • 你能夠修改相應的配置文件,自定義sudo。

系統管理簡單講解

認識系統服務(service)

簡單的說,就是系統爲了某些功能必需要提供的一些服務,就像Windows那樣,打開任務管理器就會看到不少系統服務。

經過systemctl管理服務

systemctl就是system加ctl,這樣是否是很好記住這個命令,system(系統)+ ctl(control:控制)

查看系統全部的服務

  • 列出系統上面有啓動的unit :直接systemctl

管理服務

  • stemctl [command] [unit]
    • command主要有:
    • start :馬上啓動後面接的unit
    • restart :馬上關閉後啓動後面接的unit,亦即執行stop 再start 的意思
    • reload :不關閉後面接的unit 的狀況下,從新載入設定檔,讓設定生效
    • enable :設定下次開機時,後面接的unit 會被啓動
    • disable :設定下次開機時,後面接的unit 不會被啓動
    • status :目先後面接的這個unit 的狀態,會列出有沒有正在執行、開機預設執行否、登陸等資訊等!
    • is-active :目前有沒有正在運做中
    • is-enabled:開機時有沒有預設要啓用這個unit
  • 好比 查看某個服務的狀態:systemctl status [unit]

任務、進程管理

什麼是進程

在Linux系統當中:觸發任何一個事件時,系統都會將他定義成爲一個程序,而且給予這個程序一個ID ,稱爲PID,同時依據啓發這個程序的使用者與相關屬性關係,給予這個PID一組有效的權限設定。看不懂不要緊,之後會學,就記住在系統跑的程序,都會有一個PID。

Linux的多人多任務環境

  • 多人環境:同時多人在線使用同一個Linux操做系統,每一個人都有本身的權限,和本身配置文件,root帳號的權限是最高的
  • 多任務操做環境:意思就是多人能夠同時開同一款軟件。

多重登入環境的七個基本終端界面

在Linux 當中,預設提供了六個文字界面登入視窗,以及一個圖形界面,你可使用[Alt]+[F1].....[F7] 來切換不一樣的終端機界面,並且每一個終端機界面的登入者還能夠不一樣人

任務管理

什麼是任務管理

進行工做管理的行爲中,其實每一個工做都是目前bash的子程序,亦即彼此之間是有相關性的。咱們沒法以job control的方式由tty1的環境去管理tty2的bash ,這裏不能理解不要緊,記住每一個工做都是目前bash的子程序就好了。

注意

  • 這些工做所觸發的程序必須來自於你shell 的子程序(只管理本身的bash);
  • 前景:你能夠控制與下達指令的這個環境稱爲前景的工做(foreground);
  • 背景:能夠自行運做的工做,你沒法使用[ctrl]+c 終止他,可以使用bg/fg 呼叫該工做;
  • 背景中『執行』的程序不能等待terminal/shell 的輸入(input)

管理

  • 直接將指令丟到後臺中執行的& :在命令後面加一個 & 就能夠
  • 將目前的任務丟到後臺中暫停:[ctrl]-z
  • 觀察目先後臺任務的狀態: jobs
    • 使用 jobs -l,能夠看到後臺的任務號(jobnumber)
  • 將後臺任務拿到前臺來處理:fg
  • 讓任務在後臺下的狀態變成運做中: bg

kill命令

  • 命令:kill [選項] %jubnumber
  • 或者:kill [選項] PID
    • 選項與參數:
      • -l :這個是L 的小寫,列出目前kill 可以使用的訊號(signal) 有哪些?
      • signal :表明給予後面接的那個工做什麼樣的指示囉!用man 7 signal 可知:
      • -1 :從新讀取一次參數的設定檔(相似reload);
      • -2 :表明與由鍵盤輸入[ctrl]-c 一樣的動做;
      • -9 :馬上強制刪除一個工做;
      • -15:以正常的程序方式終止一項工做。與-9 是不同的。
  • -9 ** 這個選項一般是用在『強制刪除一個不正常的工做』時所使用的, -15則是以正常步驟結束一項工做(15也是默認值**),因此不要隨便亂 kill -9

計劃任務

能夠把任務添加到計劃任務中,由觸發條件觸發計劃任務。例如,本身寫了一個py的爬蟲腳本,天天早上8點自動運行。

軟件管理

簡介

這裏我重點講 apt(yum)管理軟件,簡單介紹官網下載安裝包或者源代碼編譯安裝。

Linux 界的兩大主流: RPM 與DPKG

表明 軟件管理機制 使用命令 線上升級命令
Debian dpkg dpkg-deb apt-get
Red Hat rpm rpm, rpmbuild yum

這裏我主要講的是dpkg

apt-get 操做

通常使用root權限才能操做,apt-get的源配置,在 /etc/apt/source.list 中,通常咱們改成國內的源,好比阿里源,清華源等等。

  • 命令:apt-get [選項] 軟件包

    選項:
    apt install 安裝新包
    apt remove 卸載已安裝的包(保留配置文件)
    apt purge 卸載已安裝的包(刪除配置文件)
    apt update 更新軟件包列表
    apt upgrade 更新全部已安裝的包
    apt autoremove 卸載已不須要的包依賴
    apt dist-upgrade 自動處理依賴包升級
    apt autoclean 將已經刪除了的軟件包的.deb安裝文件從硬盤中刪除掉
    apt clean 刪除軟件包的安裝包,不影響軟件的使用

  • 命令:apt-get [選項] 軟件包

    選項:
    apt-get install 安裝新包
    apt-get remove 卸載已安裝的包(保留配置文件)
    apt-get purge 卸載已安裝的包(刪除配置文件)
    apt-get update 更新軟件包列表
    apt-get upgrade 更新全部已安裝的包
    apt-get autoremove 卸載已不須要的包依賴
    apt-get dist-upgrade 自動處理依賴包升級
    apt-get autoclean 將已經刪除了的軟件包的.deb安裝文件從硬盤中刪除掉
    apt-get clean 刪除軟件包的安裝包,不影響軟件的使用

如今用apt會好一點,apt包含了apt-get,並且命令還短

  • 安裝已有軟件包時,假如目前使用的源有更新版本則更新到最新版本。
  • 升級操做,先 apt-get updateapt-get upgrade

Linux的圖形界面

簡介

目前主流的桌面環境是KDE和GNOME,Linux不像Windows和MacOS那樣主要使用桌面環境,Linux的桌面環境也是一個軟件,並且會佔用比較多的系統資源。服務器的Linux操做系統通常不會裝桌面環境。

[環境變量]:

相關文章
相關標籤/搜索