Linux基础学习(Ubuntu)
Linux非常基礎的知識學習和總結
內容參考:
1.man page;
2.鳥哥的Linux私房菜-基礎學習篇。
?
本文章PDF版(我懶得在這上面排版了。都是為了學習,請支持原創):
鏈接: 百度云盤
提取碼: 7um8
?
一、Linux基本概念
1. 用戶與用戶組
在Linux里面,每個文件都有相當多的屬性,其中最重要的可能就是文件的擁有者。任何一個文件都具有User,Group和Others三種身份的個別權限。
默認情況下,所有系統上的賬號與一般身份使用者,還有root的相關信息,都是記錄在/etc/passwd這個文件內的,至于個人密碼則是記錄在/etc/shadow這個文件下。此外,Linux所有的組名都記錄在/etc/group里,這三個文件是Linux系統內賬號、密碼和群組信息的集中地
1) 文件擁有者
2) 群組
每個賬號可以有多個群組的支持。
3) 其他人
群組之外的人。
?
2. 權限
利用命令ls -l查看某個文件,文件前面一欄中第一欄-rwxrw-r--代表文件的類型與權限,第一個字符代表這個文件是目錄、文件或鏈接文件等。
接下來的字符中,三個為一組,且均為‘rwx’這三個參數的組合,其中 r 代表可讀(read), w 代表可寫(write), x代表可執行(execute).這三個權限的位置不會改變,如果沒有權限,就會出現減號‘-’。
這三組中第一組為“文件擁有者的權限”;第二組為“同群組的權限”;第三組為”非其他本群組的權限“。root則位于這三者之上。
權限對文件的重要性:
文件是實際含有數據的地方,包括一般文本文件、數據庫內容文件、二進制可執行文件(binary program)等等。因此權限對于文件來說,意義是這樣的:
r(read) : 可讀取這一文件的實際內容,如讀取文本文件的文字內容等
w(write) : 可以編輯、新增或是修改該文件的內容(但不含刪除該文件)
x(execute) : 該文件具有可以被系統執行的權限
在Windows下一個文件是否具有執行能力是有“擴展名”來判斷的,例如.exe,.bat,.com等等,但是在Linux下,文件是否能被執行,是由是否具有“x“這個權限來決定的,而和文件名沒有絕對的關系。
對于文件的rwx來說,主要都是針對”文件內容“而言,與文件名沒有關系,因為文件記錄的是實際的數據。
權限對目錄的重要性:
目錄主要的內容在記錄文件名列表,文件名與目錄有強烈的關系,對于目錄來說”rwx“的意義是:
r(read contentrs in directory) :
表示具有讀取目錄結構列表的權限,當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的文件名數據。可以使用ls命令將該目錄的內容列表顯示出來。
w(modify contents of directory) :
表示你具有改動該目錄的權限,即:
1) 建立新的文件與目錄
2) 刪除已經存在的文件與目錄(不論文件的權限為何)
3) 將已經存在的文件或目錄更名
4) 移動該目錄內的文件與目錄的位置
x(access directory) :
代表用戶能否進入目錄成為工作目錄。所謂工作目錄(work directory)就是你目前所在的目錄。變換目錄的指令是cd。
?
3. 文件系統
Linux最傳統的磁盤文件系統(filesystem)使用的是EXT2,而文件系統是創建在硬盤上面的。傳統的磁盤與文件系統的應用中,一個分隔槽就是只能被格式化成為一個文件系統,所以之前說一個filesystem就是一個partition。但是由于新技術的利用,例如LVM和磁盤列陣(software raid),這些技術可以將一個分隔槽格式化為多個文件系統(例如LVM),也就能都將多個分隔槽合成一個文件系統(LVM,RAID)。目前在格式化時已經不再說針對partition格式化了,通常我們稱呼一個可被掛載的數據為一個文件系統而不是一個分隔槽。
文件系統的運行與操作系統的文件數據有關。較新的操作系統的文件數據除了文件實際內容之外,通常會含有非常多的屬性,例如Linux操作系統的文件權限(rwx)與文件屬性(擁有者、群組、時間參數等)。文件系統通常會將這兩部分的數據分別存放在不同的區塊,權限與屬性放置到inode中,至于實際數據則放置到data block區塊中。另外還會有一個超級區塊(superblock)會記錄整個文件系統的整體信息,包括inode與block的總量、使用量和剩余量等。
每個inode與block都有編號,這三個數據的意義簡略說明:
superblock : 記錄此filesystem的整體信息,包括inode/block的總量、使用量、剩余量、以及文件系統的格式和相關信息等
inode : 記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數據所在的block號碼
block : 實際記錄文件的內容,若文件太大,會占用多個block
由于每個inode和block都有編號,而每個文件都會占用一個inode,inode內則有文件數據放置的block號碼,操作系統能夠依據號碼來排列磁盤的閱讀順序,一次性將這些block的內容讀出來。這種數據的存取方法稱為索引式文件系統(indexed allocation)。另外,像閃存盤使用的文件系統一般為FAT格式,沒有inode存在,每個block號碼都記錄在前一個block當中。
目錄:
當在Linux下的ext2文件系統創建一個目錄時,ext2會分配一個inode與至少一塊block給該目錄。其中,inode記錄該目錄的相關權限與屬性,并記錄分配到的那塊block號碼;而block則是記錄在這個目錄下的文件名與該文件名占用的inode號碼數據。
文件:
當在Linux下的ext2創建一個一般文件時,ext2會分配一個inode與相對于該文件大小的block數量給該文件。
目錄樹讀取:
目錄樹是由根目錄開始讀起,因此系統透過掛載的信息可以找到掛載點的inode號碼(通常一個filesystem的最頂層inode號碼會由2號開始),此時就能夠得到根目錄的inode內容,并依據該inode讀取根目錄的block內的文件名數據,再一層一層的往下讀到正確的檔名。
?
4. 掛載
文件系統要能夠鏈接到目錄才能被我們使用,將文件系統與目錄樹結合的動作我們成為“掛載”。掛載點一定是目錄,該目錄為進入該文件系統的入口。因此并不是任何文件系統都能夠使用,必須要“掛載”到目錄樹的某個目錄后才能夠使用該文件系統。
?
5. 啟動
當按下電源按鍵后,計算機硬件會主動讀取BIOS來加載硬件資訊以及進行硬件系統的自我測試,之后系統會主動的去讀取第一個可啟動的裝置(由BIOS配置的),此時就可以讀入啟動管理程序了。
啟動管理程序可以指定哪個核心文件來啟動,并實際加載核心到內存當中解壓縮與運行,此時核心就能夠開始在內存內活動,并偵測所有硬件資訊與加載適當的驅動程序來使整部主機開始運行,等到核心偵測硬件與加載驅動程序完畢后,一個操作系統就開始在PC上跑了。
主機程序運行后,此時Linux才會呼叫外部程序開始準備軟件運行的環境,并且實際的加載所有系統運行所需要的軟件程序。最后系統開始等待你的登陸與操作。簡單來說,系統啟動的經過可以匯成底下的流程的:
1) 加載BIOS的硬件資訊與進行自我測試,并依據配置取得第一個可啟動裝置;
2) 讀取并運行第一個啟動裝置內的MBR的boot Loader(亦即是grub,spfdisk等程序);
3) 依據boot loader的配置加載Kernel,Kernel會開始偵測硬件與加載驅動程序;
4) 在硬件驅動成功后,Kernel會主動呼叫init程序,而init會取得run-level資訊;
5) init 運行/etc/rc.d/rc.sysinit文件來準備軟件運行的作業環境(如網絡、時區等);
6) init 運行run-level的各個服務之啟動(script方式);
7) init 運行/etc/rc.d/rc/local文件;
8 )init運行終端機模擬程序mingetty來啟動login程序,最后等待使用者登陸。
Boot loader 的功能:
Loader的最主要的功能是要認識操作系統的文件格式并據以加載核心到主內存中去運行。由于不同操作系統的文件格式不一致,因此每種操作系統都有自己的boot loader。
每個文件系統(filesystem 或 partition)都會保留一塊啟動磁盤(boot sector)提供操作系統安裝boot loader,而通常操作系統默認都會安裝一份loader到它根目錄所在的文件系統的boot sector上。
每個操作系統默認是會安裝一套boot loader到它自己的文件系統中,而Linux系統在安裝時,你可以選擇將boot loader安裝到MBR中,也可以選擇不安裝。如果選擇安裝到MBR的話,那理論上你在MBR和boot sector都會保留一份boot loader程序的。至于Windows安裝時,它默認會主動的將MBR與boot sector都裝上一份boot loader,所以,你會發現安裝多重系統時,你的MBR常常會被不同的操作系統的boot loader所覆蓋了。
各個操作系統都可以安裝一份boot loader到它們的boot sector中,這樣操作系統可以透過自己的boot loader來加載核心。系統的MBR只有一個,要怎么運行boot sector里面的loader呢?這時就要用到boot loader 的功能。boot loader的主要功能如下:
1) 提供菜單:使用者可以選擇啟動不同的啟動項目,這也是多重啟動的重要功能;
2) 加載核心文件:直接指向可啟動的程序區段來開始操作系統;
3) 轉交其他loader:將啟動管理功能轉交給其他loader負責。
由于具有菜單功能,因此我們可以選擇不同的核心來啟動。由于具有控制權轉交功能,我們可以加載其他boot sector內的loader。不過Windows的loader默認不具有控制權轉交功能,因此不能使用Windows的loader來加載Linux的loader。這也是為什么先裝Windows再裝Linux的緣故。
而最終boot loader的功能就是加載kernel文件。
?
?
二、Linux常見命令
(一)指令與變量 alias, history, echo, env, locale
開始下達指令
command [-options] parameter1 parameter2... 指令 選項 參數(1) 參數(2)
注意:
1) 一行指令中第一個輸入的部分絕對是“指令”或“可執行文件;
2) 指令太長的時候,可以用反斜線()來轉義[ENTER]符,使指令連續到下一行;
3)在Linux系統中,英文大小寫字母是不一樣的。
1. alias 定義或顯示別名
alias lm='ls -al':執行lm命令即執行ls -al。 若要要命令別名拿掉,即:unalias lm。
2. history 查詢曾經下達的指令
history n:列出最近的n條命令。
3. echo 取用變量
echo $variable(${variable})
4. env 列出目前shell環境下所有環境變量與內容
5. locale 顯示有關當前語言環境的信息
?
(二)Linux系統的在線求助 help, man, info
1. help
指令 --help
2. man
man 要了解的內容
3. info
用法同man。info是將文件數據拆成一個一個的段落,每個段落都有自己的頁面,每個獨立的頁面也被稱為一個節點(node)。
?
(三)日期與時間 date, cal
date 顯示系統日期和時間;cal 顯示日歷。
?
(四)用戶 su, sudo, passwd
1. su 身份切換指令
su [-lm][-c 指令] [username] ? - : 單純使用 - 如“su - ”代表使用log-shell的變量文件讀取方式來登陸系統;若使用者名稱沒有加上去,則代表切換為root身份 -l : 與 - 類似,但后面需要加欲切換的使用者賬號!也是log-shell的方式 -m : -m與-p是一樣的,表示“使用目前的環境設置,而不讀取新使用者的配置文件” -c : 僅進行一次指令,所以-c后面可以加上指令2. sudo 使用其他身份執行指令(通常是root)
sudo [-b] [-u 新使用者賬號] 要執行的命令 -b : 將后續的指令放到背景中讓系統自行執行,而不與目前的shell產生影響 -u : 后面可以接欲切換的使用者,若無此項則代表切換身份為root補充:
可以用visudo來修改/etc/sudoers使單一使用者可進行root所有指令.
3. passwd 更改用戶賬戶的密碼
普通用戶通常只能更改自己賬戶的密碼,而超級用戶可以更改任何用戶的密碼。passwd也更改賬戶或相關的密碼有效期。
?
(五)文件屬性與權限 chown, chgrp,chmod
1. chown 修改文件擁有者
chown [-R] 賬號名稱 文件或目錄 chown [-R] 賬號名稱:用戶組名稱 文件或目錄 (可以順便直接修改用戶組的名稱) -R : 進行遞歸修改,亦即連同子目錄下的所有文件、目錄都修改2. chgrp 修改文件所屬用戶組
chgrp [-R] 用戶組名稱 文件或目錄 -R : 進行遞歸修改,亦即連同子目錄下的所有文件、目錄都修改3. chmod 修改文件的權限
數字類型修改文件權限:
各權限的數字對照表: r:4 ;w:2 ;x:1 ? rxw=4+2+1=7 chmod [-R] xyz 文件或目錄 xyz : 為rwx屬性數值的相加 -R : 進行遞歸修改,亦即連同子目錄下的所有文件、目錄都修改符號類型修改文件權限:
chmod [ugoa][+-=][rwx] 文件或目錄 ugoa分別代表user,group,others和all(全部身份); +:加入; -:移除; =:設置?
(六)Linux文件與目錄管理
pwd, cd, ls ; mkdir, rmdir ; cp, rm, mv ;
cat, more, less, head, tail; which,locate, find;
touch; wget, curl; tar
1. pwd 顯示目前所在目錄,cd 切換目錄,ls 文件與目錄的查看
pwd
pwd [-P] -P : 顯示出真正的路徑,而非使用鏈接(link)路徑cd
cd ~heidi : 代表回到使用者的家目錄,即/home/heidi cd ? ? ? : 沒有加任何路徑,也是代表回到自己家目錄 cd .. ? ? : 表示去到目前的上層目錄 cd - ? ? : 表示回到剛剛那個目錄,就是上一個目錄 cd /var/spool/mail : 這個是絕對路徑的寫法,指定要去的完整路徑名稱 cd ../postfix ? ? ? : 這個是相對路徑的寫法,由/var/spool/mail到/var/spool/postfix就這樣寫ls
ls [-aAhilrRS...] 文件名或目錄名稱 -a : 不隱藏任何以.開始的項目 -A : 列出除.和..之外的任何項目 -h : 將文件容量以人類較易讀的方式(例如GB、KB等)列出來 -i : 列出inode號碼 -l : 使用較長格式列出信息,包含文件的屬性與權限等數據 ? ? ? ? ? ? ? ? ? -r : 將排序結果反向輸出 -R : 連同子目錄內容一起列出來,等于該目錄下所有內容都會顯示出來 -S : 以文件容量大小排序 補充:ll='ls -al',ll是命令別名,這個很常用2. mkdir 創建目錄,rmdir 刪除“空”的目錄
mkdir
mkdir [-mp] 目錄名稱 -m : 設置文件的權限。直接設置,不使用默認權限(umask) -p : 幫助你直接將所需要的目錄(包含上層目錄)遞歸創建rmdir
rmdir [-p] 目錄名稱 -p : 連同上層“空”的目錄也一起刪除 注意:目錄需要一層一層地刪除,并且被刪除的目錄里面必定不能存在其他的目錄或文件!3. cp 復制,rm 刪除,mv 移動或重命名 三者均可對文件和目錄進行操作
cp
cp [-adfilprsu] 源文件 目標文件 -a : 相當于-dr --preserve=all的意思 -d : 若文件為鏈接文件的屬性,則復制鏈接文件而非文件本身 -f : 即force,若目標文件已經存在且無法開啟,則刪除后再嘗試一次 -i : 若目標文件已存在,在覆蓋時先詢問操作的進行 -l : 進行硬鏈接的鏈接文件建立,而非復制文件本身 -p : 連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用) -r : 遞歸復制,常用于目錄的復制操作 -s : 復制為符號鏈接文件,即“快捷方式”文件 -u : 目標文件比源文件舊才更新目標文件,或者目標文件不存在的情況下才復制 --preserve=all : 除了-p的權限相關參數外,還加入SELinux的屬性,links,xattr等也復制 注意:如果源文件有兩個以上,則最后一個目標文件一定要是“目錄”才行rm
rm [-fIr] 文件或目錄 -f : 即force,忽略不存在的文件,不會出現警告信息 -I : 交互模式,在刪除前會詢問使用者是否操作 -r : 遞歸刪除,最常用于目錄的刪除,這是非常危險的選項!!刪除之后沒有基本方式可以復原!!小心使用!!mv
mv [-fiu] source destination mv [options] source1 source2 source3 ... directory -f : force強制的意思,如果目標文件已經存在,不會詢問直接覆蓋 -i : 若目標文件(destination)已經存在時,就會詢問是否覆蓋 -u : 若目標文件已經存在,且source比較新,才會更新(update) 注意:如果有多個源文件或目錄,則最后一個目標文件一定是“目錄”4. cat 查看文件內容,more, less 翻頁查看,head, tail 數據截取
cat
cat [-AbEnTv] -A : 相當于-vET的整合選項,可列出一些特殊字符而不是空白而已 -b : 列出行號,僅針對非空白行做行號顯示,空白行不標行號 -E : 將結尾的換行符$顯示出來 -n : 打印出行號,連同空白行也會有行號,與-b選項不同 -T : 將[Tab]鍵以^I顯示出來 -v : 列出一些看不出來的字符more, less
more 文件 ? 空格鍵(space) : 代表向下翻一頁 Enter : 代表向下翻一行 /字符串 : 代表在這個顯示的內容當中,向下查找字符串這個關鍵詞 :f : 立刻顯示文件名即目前顯示的行數 q : 代表立刻離開more,不再顯示該文件內容 b或Ctrl+b : 代表往回翻頁,只對文件有用,對管道無用less 文件 空格鍵(space) : 代表向下翻一頁 [pageup]/[pagedown] : 向上/向下翻動一頁 /字符串 : 代表在這個顯示的內容當中,向下查找字符串這個關鍵詞 ?字符串 : 代表在這個顯示的內容當中,向上查找字符串這個關鍵詞 n : 重復前一個查找(和/或?有關) N : 反向重復前一個查找(和/或?有關) g : 前進到這個數據的第一行 G : 前進到這個數據的最后一行 q :離開less這個程序head, tail
head(取出前面幾行) head [-n number] 文件 ? -n : 后面接數字,代表顯示幾行的意思 注意:1) 默認情況下只顯示10行;2) 如果后面接負數,例如-20,代表列出前面所有行數,但不包括后面20行tail(取出后面幾行) head [-n number] 文件 ? -n : 后面接數字,代表顯示幾行的意思 -f : 表示持續刷新顯示后面所接的文件中的內容。實時查看文件,Ctrl+c退出5. which(查找“執行文件”),locate , find 腳本文件的查找
which
which [-a] command -a : 將所有由PATH目錄中可以找到的命令均列出,而不只第一個被找到的命令 注意:這個命令是根據PATH這個環境變量所規范的路徑,去查找執行文件的文件名,which后面接的是完整文件名locate
locate [-iclSr] keyword -i : 忽略大小寫的差異 -c : 不輸出文件名,僅計算找到的文件數量 -l : 僅輸出幾行的意思,后面接數字 -S : 輸出locate所使用的數據庫文件的相關信息 -r : 后面可接正則表達式的顯示方式 說明:locate直接在后面輸入文件部分名稱即可,在完整文件名(包含路徑名稱)中只要包含查找的名稱都會顯示出來find
find [PATH] [option] [action] 選項與參數: 1) 與時間有關的選項:共有-atime,-ctime與-mtime,以-mtime說明 -mtime n : n為數字,意義為在n天之前的“一天之內”被更動過內容的文件 -mtime +n : 列出在n天之前(不含n天本身)被更改過內容的文件文件名 -mtime -n : 列出在n天之內(含n天本身)被更改過內容的文件文件名 -newer file : file為一個存在的文件,列出bifile還要新的文件文件名 ? 2) 與使用者或群組名稱有關 -uid n : n為數字,是使用者的賬號ID,亦即UID,這個UID是記錄在/etc/passwd里面與賬號名稱對應的數字 -gid n : n為數字,是群組名稱的ID,亦即GID,這個GID是記錄在/etc/group -user name : name是使用者賬號名稱 -group name : name是是群組名稱 -nouser : 尋找文件的擁有者不存在于/etc/passwd里面的人 -nogroup : 尋找文件的擁有群組不存在于/etc/group里面的人 ? 3) 與文件權限及名稱有關 -name filename : 搜尋文件名稱為filename的文件 -size [+-]SIZE : 搜尋比SIZE還要大(+)或小(-)的文件 -type TYPE : 搜尋文件類型為TYPE的,類型主要有:一般正規文件(f),裝置文件(b,c),目錄(d),連結檔(l),socket(s) -perm mode : 搜尋文件權限剛好等于mode的文件,屬性值類似chmod -perm -mode : 搜尋文件權限要必須包含mode的文件 -perm +mode : 搜尋文件權限包含任一mode的文件 ? 4) 額外 -exec command : command為其他指令,-exec后面可接額外的指令來處理搜尋到的結果,指令不支持命令別名 例如: -exec ls -l {} \; 其中{}表示find找到的內容,"\;"表示額外命令的結束6. touch 修改文件時間或創建新文件
touch [-acdmt] 文件 -perm +mode : -a : 只更改訪問時間 -c : 只更改文件的時間,不創建任何文件 -d : 使用指定字符串表示時間而非當前時間,也可以使用 --date=字符串 -m : 只更改修改時間 -t : 后面接時間而不用當前時間,格式為[YYYYMMDDhhmm] 舉例:-d “2 days ago”可以將文件atime和mtime調到兩天之前,ctime不變7. wget, curl 文件下載
URL : Uniform Resource Locator的縮寫,即統一資源定位符,是互聯網上標準資源的地址,即網址。互聯網上每一個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。
Cookie:有時也用其復數形式Cookies,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(經常經過加密)。Cookie實際上是一小段文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端會把Cookie保存起來,當瀏覽器再次請求該網站時,把請求的網址連同該Cookie一同交給服務器。服務器檢查Cookie以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。
wget
wget:Linux/Unix命令行文件下載器,它是下載網站上文件的免費的非交互下載工具,它支持HTTP、HTTPS和FTP協議,也支持通過HTTP代理檢索。wget是非交互的,這就是說它可以在用戶沒有登陸到系統時在后臺工作。 wget [] [URL] 常用選項與參數: wget ? URL : 下載單個文件 wget -c URL : 續傳分段下載文件.下載一個大文件,中途中斷了,讓下載從端點續傳 wget -b URL : 后臺下載文件。下載進程被捕獲到當前目錄的'wget-log'文件中 wget -P 目錄 URL : 下載文件到該目錄下 wget -i [存有要下載的所有URL的文本文件] : 先創建一個文本文件,將所有的URL添加到該文件中,-i后接該文件名 wget --limit-tate=amount URL : 限制下載速率。amount為下載速率,默認bytes/s,可以加單位 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? k(kilobytes)或m(megabytes) wget --tries=number : 增加重試次數,默認情況下wget命令會重試20次直到下載成功 wget -o filename URL: 重定向wget命令的文件到另一個文件 ? 補充示例:下載整個網站用于本地查看 wget --mirror -p -convert-links website-url --mirror : 開啟適用于鏡像的選項 -p : 下載所有能正確顯示指定HTML網頁的全部必要文件 -convert-links : 下載完成后,轉檔文件中的鏈接以用于本地查curl
curl:curl is a tool to transfer data from or to a server. curr [] [URL] curl URL : 獲取頁面內容。不加任何選項使用,默認會發送GET請求來獲取鏈接內容到標準輸出 curl -I URL : 只顯示HTTP頭而不顯示文件內容 curl -i URL : 同時顯示http頭和文件內容 curl -D URL :保存http的response里的header信息 curl -o 文件名 URL : 結果會保存到命令行中提供的文件名 也可以使用>符號將輸出重定向到本地文件中curl URL > 文件名 curl -O URL : URL中的文件名會被用作保存輸出的文件名,必須確保鏈接末尾包含文件名-o 和 -O 選項還可以用來同時指定多個鏈接 :-o 文件名1 URL1 -o 文件名2 URL2 ...-O URL1 -O URL2 ... curl -L URL : 跟隨鏈接重定向 curl -A "string" URL : 自定義用戶代理,例如下面的命令偽裝成安卓火狐瀏覽器對網頁進行請求:curl -A "Mozilla/5.0(Android;Mobile;rv:35.0) Gecko/35.0 Firefox/35.0" URL curl -w %{http_code} linux.cn/ :測試網頁返回值 curl -c 文件名 URL : 保存http的response里的Cookie信息 curl -c 文件名 URL : 使用Cookie8. tar 打包命令
tar [-j|-z] [cv] [-f 創建的檔名] filename 打包與壓縮 tar [-j|-z] [tv] [-f 創建的檔名] ? ? ? ? ? 察看檔名 tar [-j|-z] [xv] [-f 創建的檔名] [-C 目錄] 解壓縮 -c : 創建打包文件,可搭配-v來察看過程中被打包的檔名(filename) -t : 察看打包文件的內容含有哪些檔名,重點在于察看“檔名' -x : 解打包或解壓縮的功能,可以搭配-C(大寫)在特定目錄解開 注意:-c,-t,-x不能同時出現在一串命令列中 -j : 透過 bzip2 的支持進行壓縮/解壓縮,此時檔名最好為 *.tar.bz2 -z : 透過 gzip 的支持進行壓縮/解壓縮,此時檔名最好為 *.tar.gz -v : 在壓縮/解壓縮的過程中將正在處理的檔名顯示出來 -f filename : -f 后面要立刻接要被處理的檔名,建議-f 單獨寫一個選項 -C 目錄 : 這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項 其他: -P : 保留備份備份數據的原本權限與屬性,常用于備份(-c)重要的配置檔 -p : 保留絕對路徑,亦即允許備份數據中含有根目錄存在之意 --excl ude=FILE : 在壓縮的過程中,不要將FILE打包 ? 其實最簡單的使用tar只要記憶下面的方式即可: 壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱 查 詢:tar -jtv -f filename.tar.bz2 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓的目錄 其中filename.tar.bz2 是我們自己取的檔名,tar 并不會主動的產生創建檔名,所以擴展名就很重要,另外 ”-f filename“ 是緊連在一起的,最好將-f放在后面或單獨列出來?
(七)數據處理計算編輯工具 bc, nano, awk, vi&vim
1. bc 計算器
1) 做一些簡單的加減乘除,+,-,*,/,^(指數),%(余數);
2) bc僅默認輸出整數,如果要輸出小數點下位數,必須要運行scale=number,這個number就是小數點位數;
3) 離開bc需要輸入qiut。
2. nano 文書編輯器
nano 編輯器被設計用來模仿華盛頓大學 Pico 文本編輯器,且具有類似的功能性與易用性。
它包括四個主要部分:
頂行顯示程序版本、當前被編輯的文件名以及該文件是否已被修改。 接著是主要編輯區,顯示正在編輯的文件的狀態行位于倒數第三行,用來顯示重要的信息。底部的兩行顯示了編輯器中最常用的快捷鍵。
3. awk 數據處理
awk是一個數據處理工具,相較于sed常常作用于一整行的處理,awk則比較傾向于一行當中分成數個“欄位”。因此,awk相當的適合處理小型的數據數據處理。
awk '條件類型1{動作1} 條件類型2{動作2} ... ' filename1) awk 后面接兩個單引號并加上大括號{}來配置想要對數據進行的處理動作。awk 后面可以接后續接的文件,也可以讀取來自前個命令的 standard output。awk 主要處理“每一欄位的數據”,默認的欄位分隔符為“空白鍵”或tab鍵;
2) awk 常搭配printf使用。所有的awk 動作,即在{}里的動作,如果需要多個命令輔助時,可以利用分號“;”間隔,或者直接以Enter按鍵來隔開每個命令;
3) 命令中可以進行邏輯運算也支持if條件。
4. vi&vim 編輯器
vi是老式的字處理器,vim可以看作是vi的進階版,vim可以用顏色或底線等方式來顯示一些特殊的信息,可以根據檔案擴展名或者開頭信息判斷該檔案的內容而自動呼叫該程序的語法判斷式等等,還加入了其他很多功能,可以說是一個程序開發工具。
vi 共分為三種模式,分別是一般模式、編輯模式與指令命令模式
vi中的常用按鍵 :
第一部分:一般模式可用的按鍵
1) 移動光標的方法
n+[space] : n代表數字,按下數字之后再按空格鍵,光標會右移這一行的n個字符
0或[Home] : 0是數字0,移動到這一行的最前面字符處
$ 或 [end] : 移動到這一行的最后面字符處
G : 移動到這個檔案的最后一行
nG : n為數字。移動到這個檔案的第n行
gg : 移動到這個檔案的第一行,相當于1G
n+Enter鍵 : n為數字,光標向下移動n行
2) 搜尋與取代
/word : 向光標之下尋找一個名稱為word的字符串
?word : 向光標之上尋找一個名稱為word的字符串
:n1,n2s/word1/word2/g(c) : n1和n2為數字。在第n1行與第n2行之間尋找word1這個字符串,并將該字符串取代
為word2。最后的c是可選選項,加上會在取代前顯示提示字符給用戶確認是否需要
取代。從第一行到最后一行可以這樣表示:1,$s
3) 刪除、復制與粘貼
x, X : 在一行字當中,x 為向后刪除一個字符 ([del]),X 為向前刪除一個字符([backspace])
dd : 刪除光標所在的一整列
ndd : n為數字,刪除光標所在的向下n列
yy : 復制光標所在的那一行
nyy : n為數字。復制光標所在的向下n列
p,P : p 為將已復制的數據在光標下一行貼上,P 則為貼在光標上一行
u : 復原前一個動作
Ctrl+r: 重做上一個動作
. : 就是一個小數點,作用是重復前一個動作
第二部分:一般模式切換到編輯模式的按鍵
進入插入或取代的編輯模式
i, I : 進入插入模式。i為從目前光標所在處插入,I為在目前所在行的第一個非空格出開始插入
a, A : 進入插入模式。a為從目前光標所在的下一個字符處開始插入,A為從光標所在行的最后一個字符處開始插入
o, O: 進入插入模式。是英文字母o的大小寫。o為在目前光標所在的下一行處插入新的一行,O為在目前光標所在
ip 處的上一行插入新的一行
r,R : 進入取代模式。r只會取代光標所在的那一個字符一次,R會一直取代光標所在的文字,直到按下Esc
[Esc] ?退出編輯模式,回到一般模式中?
第三部分:一般模式切換到指令模式的按鍵
指令列的儲存、離開等指令
:w : 將編輯的數據寫入硬盤檔案中
:q : 離開vi
:q! : 若曾經修改過檔案又不想儲存,使用!為強制離開不儲存檔案
:wq : 儲存后離開,若為:wq!則為強制儲存后離開
:!command : 暫時離開vi到指令列模式下執行command的顯示結果
vim環境的變更
:set nu : 顯示行號
set noun : 取消顯示行號
?
(八)管道命令(pipe)
cut, grep; sort, uniq, wc; tr, col, join, paste, expand;
split; xargs
管線命令使用的界定符號:|,管線命令僅能處理經由前面一個命令傳來的正確信息,也就是standard output的信。每個管線后面接的第一個數據一定是一個命令,而且這個命令一定能夠接受standard input的數據才行。
這些管道命令并不會改變所處理的原文件信息!!!
關于減號 - 的用途:
管線命令在bash的連續的處理程序中是相當重要的。在管線命令當中,常常會使用到前一個命令的stdout作為這次的stdin,某些命令需要用到文件名(例如tar)來進行處理時,該stdin與stdout可以用減號“-”來替代。例如:
tar -cvf - /home | tar -xvf -
上面的例子的意思是:將/home 里面的文件打包,但打包的數據不是記錄到文件,而是傳送到stdout,經過管線后,將 tar -cvf - /home 傳送給后面的 tar -xvf -。后面的這個“-”是取用前一個命令的stdout,因此,我們就不需要使用file了
1. cut, grep 選取命令
將一段數據經過分析后,選取出我們想要的。或是經由分析關鍵詞,取得我們想要的那一行。要注意的是,選取信息通常是針對“一行一行”來分析的,并不是整篇信息分析的。
cut
cut 可以將某一段信息“切”出來,處理的信息是以“行”為單位。將一行信息當中取出某部分我們想要的。
cut -d '分隔字符' -f fields cut -c 字符區間 -d : 后面接分隔字符,與-f一起使用 -f : 依據-d的分隔字符將一段信息分割為數段,用-f取出第幾段的意思,后面可接多段,','號隔開 -c : 以字符的單位取出固定字符區間grep
grep 可以解析一行文字,取得關鍵字,若該行有存在關鍵詞,就會整行列出來。
grep [-acinv] [--color=auto] '搜尋字符串' filename -a : 將binary文件以text文件的方式搜尋數據 -c : 計算找到'搜尋字符串'的次數 -i : 忽略大小寫的不同,所以大小寫視為相同 -n : 順便輸出行號 -v : 反向選擇,亦即顯示出沒有'搜尋字符串'內容的那一行 --color=auto : 可以將找到關鍵詞的部分加上顏色的顯示2. sort, uniq, wc 排序命令
sort
sort 可以依據不同的數字型態進行排序,例如數字和文字的排序就不一樣。
排序的字符與語系的編碼的有關,需要排序時建議使用LANG=C來讓語系統一,數據排序比較好一些
stdin : standard input
sort [-fbMnrutk] [file or stdin] -f : 忽略大小寫的差異,例如A和a視為編碼相同 -b : 忽略最前面的空格符部分 -M : 以月份的名字來排序,例如 JAN,DEC等等的排序方法 -n : 使用“純數字”進行排序,默認是以文字型態來排序 -r : 反向排序 -u : 就是uniq,相同的數據中,僅出現一行代表 -t : 分隔符,默認是用[Tab]鍵來分隔 -K : 以那個區間(field)來進行排序的意思uniq
排序完成后,想要將重復的數據僅列出一個顯示。由于這個命令是在將重復的東西減少,要”配合排序過的文件“來處理!!!
uniq [-ic] -i : 忽略大小寫字符的不同 -c : 進行計數wc
wc 可以計算輸出的信息的整體數據,是很有用的計算文件內容的一個工具組。
wc [-lwm] -l : 僅列出行 -w : 僅列出多少字(英文單字) -m : 多少字符 不加參數輸出三個數字分別代表:行、字數、字符數3. tr, col, join, paste 字符轉換命令
tr
tr 可以用來刪除一段信息中的文字,或者是進行文字信息的替換!
tr [-ds] SETI... -d : 刪除信息當中的SET這個字符串 -s : 取代掉重復的字符 常用舉例: 1) tr '[a-z]' '[A-Z]'將輸出信息中的小寫變成大寫 2) tr -d '\r'去除DOS文件留下來的^M這個斷行的符號,^M可以用\r來代替之col
col [-xb] -x : 將tab鍵轉換成對等的空格鍵 -b : 過濾掉所有的控制字符,包括RLF(Reverse Line Feed)和HRLF(Halt RLF)RLF,HRLF : 逆向換行符,半逆向換行符。逆向換行符會使光標回到上一行的開頭,半逆向換行符會使得光標回到上一行,但是不會到達開頭。join
join 處理兩個文件之間的數據,而且,主要是在處理兩個文件當中,有“相同數據”的那一行,才將他加在一起。
在使用join 之前,你所需要的文件應該要事先經過排序(sort)處理,否則有些比對的項目會被略過!!
join [-ti12] file1 file2 -t : join 默認已空格符分隔數據,并且比對“第一個字段”的數據,如果兩個文件相同,則將兩筆數據聯成一行,且 第一個字段放在第一個 -i : 忽略大小寫的差異 -1 : 這個是數字1,代表第一個文件要用那個字段來分析 -2 : 代表第二個文件要用那個字段來分析 實例: join -t ':' -1 4 file1 -2 3 file2 file1的第4個字段和file2的第3個字段來進行比對paste
相對于join 必須要比對兩個文件的數據相關性,paste 就直接將兩行貼在一起,且中間以[tab]鍵隔開。
paste [-d] file1 file2 -d : 后面可以接分隔字符。默認是以[tab]來分隔的 - : 如果file部分寫成"-",表示來自 standard input 的數據的意思expand
自動將[tab]按鍵轉成空格鍵。擴展:unexpand,將空白轉成[tab]
expand [-t] file -t : 后面可以接數字,一般來說,一個tab按鍵可以用8個空格鍵取代。我們也可以自定義一個tab按鍵代表幾個字符4. split 分割命令
將一個大文件依據文件大小或行數來分割。
split [-bl] file PREFIX -b : 后面可以接欲分割成的文件大小,可加單位,例如b,k,m等 -l : 以行數來進行分隔 PREFIX : 代表前導符的意思,可作為分隔文件的前導文字將分隔后的文件合成一個文件 PREFIX* >> file
5. xargs 參數代換
就字面意義上來看,x是加減乘除的乘號,args是arguments(參數)的意思,所以說,這個命令就是在產生某個命令的參數的意思。xargs可以讀入stdin的數據,并且以空格符或斷行字符作為分辨,將stdin的數據分隔成arguments。因為是以空格符作為分隔,所以,如果有一些檔名或者是其他意義的名詞內含有空格符的時候,xargs可能就會誤判了。
很多命令其實并不支持管線命令,可以通過xargs來提供該命令引用standard input之用!!!
例如:find /sbin |ls -l 結果只有列出root所在目錄下的文件,可以使用 find /sbin | xargs ls -l
xargs [-Oepn] command -O : 如果輸入的stdin含有特殊字符,例如`,\,空格鍵等等字符,這個-O參數可以將他還原成一般字符。這個參數可 以用于特殊狀態 -e : EOF(end of file)的意思,后面可以接一個字符串,當xargs分析到這個這個字符串時,就會停止繼續工作 -e'STRING' -p : 在運行每個命令的arguments時,都會詢問使用者的意思 -n : 后面接次數,每次command命令運行時,要使用幾個參數的意思。 當xargs后面沒有接任何命令時,默認是以echo來進行輸出?
(九)進程管理 ps, top; kill, killall
1. ps, top (動態) 觀察程序運行狀態
ps
ps:將某個時間點的程序運行情況擷取下來 (輸出有個別字符顯示不出來,可將語系暫時換為ASCII) 常用命令: ps -l:僅觀察自己的bash相關程序 (ps -lA 用相同的項目選項觀察所有程序) ps aux:觀察所有程序 ps axjf:列出類似程序樹的程序顯示選項與參數: -A : 所有的 process 均顯示出來,與 -e 具有同樣的效用 -a : 不與 terminal 有關的所有 process -u : 有效使用者 (effective user) 相關的 process x : 通常與 a 這個參數一起使用,可列出較完整資訊。 輸出格式規劃:l : 較長、較詳細的將該 PID 的的資訊列出j : 工作的格式 (jobs format) -f : 做一個更為完整的輸出常用命令界面詳細說明: 1) ps -l:僅觀察自己的bash相關程序 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD F : 代表這個程序旗標 (process flags),說明這個程序的總結權限,常見號碼有:若為 4 表示此程序的權限為 root 若為 1 則表示此子程序僅進行復制(fork)而沒有實際運行(exec) S : 代表這個程序的狀態 (STAT),主要的狀態有:R : Running,該程序正在運行中S : Sleep,該程序目前正在睡眠狀態(idle),但可以被喚醒(signal)D : 不可被喚醒的睡眠狀態,通常這支程序可能在等待 I/O 的情況(ex>列印)T : 停止狀態(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態Z : Zombie,僵尸狀態,程序已經終止但卻無法被移除至內存外 UID/PID/PPID : 代表此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼 C : 代表 CPU 使用率,單位為百分比 PRI/NI : Priority/Nice,代表此程序被 CPU 所運行的優先順序,數值越小代表該程序越快被 CPU 運行 ADDR/SZ/WCHAN : 都與內存有關,ADDR 是 kernel function,指出該程序在內存的哪個部分,如果是個 running 的程序,一般就會顯示'-' / SZ 代表此程序用掉多少內存 / WCHAN 表示目前程序 是否運行中,若為 - 表示正在運行中 TTY : 登陸者的終端機位置,若為遠程登陸則使用動態終端介面 (pts/n) TIME : 使用掉的 CPU 時間,是此程序實際花費 CPU 運行的時間,而不是系統時間 CMD : 就是 command 的縮寫,造成此程序的觸發程序之命令為何2) ps aux:觀察所有程序 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER : 該 process 屬于的使用者賬號 PID : 該 process 的程序識別碼 %CPU : 該 process 使用掉的 CPU 資源百分比 %MEM : 該 process 所占用的實體內存百分比 VSZ : 該 process 使用掉的虛擬內存量 (Kbytes) RSS : 該 process 占用的固定的內存量 (Kbytes) TTY : 該 process 是在那個終端機上面運行,若與終端機無關則顯示'?',另外,tty1-ttyn 是本機上面的登陸 者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。 STAT : 該程序目前的狀態,狀態顯示與 ps -l 的 S 旗標相同 (R/S/T/Z) START : 該 process 被觸發啟動的時間 TIME : 該 process 實際使用 CPU 運行的時間 COMMAND:該程序的實際命令 補充:一般來說,該命令會依照PID的順序來排序顯示top
top:動態觀察程序變化 top [-d 數字] top [-bnp] -d : 后面接秒數,就是整個程序畫面更新的秒數。默認是 5 秒; -b : 以批處理方式運行 top ,還有更多的參數可以使用,通常會搭配數據流重導向來將批量的結果輸出成為文件舉例:top -b -n 2 > /tmp/top.txt (注意當前語系,可能輸出亂碼) -n : 與 -b 搭配,意義是,需要進行幾次 top 的輸出結果 -p : 指定某些個 PID 來進行觀察監測而已 在 top 運行過程當中可以使用的按鍵命令:? : 顯示在 top 當中可以輸入的按鍵命令P : 以 CPU 的使用資源排序顯示M : 以 Memory 的使用資源排序顯示N : 以 PID 來排序T : 由該 Process 使用的 CPU 時間累積 (TIME+) 排序k : 給予某個 PID 一個訊號 (signal)r : 給予某個 PID 重新制訂一個 nice 值。q : 離開 top 命令界面說明: top - 19:46:15 up 1:31, 1 user, load average: 0.34, 0.40, 0.52 Tasks: 266 total, 2 running, 211 sleeping, 0 stopped, 1 zombie %Cpu(s): 0.6 us, 0.4 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 7907860 total, 3698804 free, 1680204 used, 2528852 buff/cache KiB Swap: 8000508 total, 8000508 free, 0 used. 5654468 avail Mem <=如果加入 k 或 r 時,就會有相關的字樣出現在這里 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 上面的畫面為整個系統的資源使用狀態,基本上總共有六行,顯示的內容依序是: 第一行(top..) : 目前的時間;啟動到目前所經過的時間up..;已經登陸系統的使用者人數;系統在1,5,15分鐘的 平均工作負荷,系統平均要負責運行幾個程序的意思,越小代表越閑置,高于1需要注意系統程序 是否太過繁復 第二行(Tasks..): 顯示的是目前程序的總量與個別程序的狀態 第三行(Cpus..) : 顯示的是 CPU 的整體負載us, user : time running un-niced user processessy, system : time running kernel processesni, nice : time running niced user processesid, idle : time spent in the kernel idle handlerwa, IO-wait : time waiting for I/O completionhi : time spent servicing hardware interruptssi : time spent servicing software interruptsst : time stolen from this vm by the hypervisor 第四行與第五行 : 表示目前的實體內存與虛擬內存 (Mem/Swap) 的使用情況下半部分的畫面,則是每個 process 使用的資源情況: PID : 每個 process 的 ID USER : 該 process 所屬的使用者 PR : Priority 的簡寫,程序的優先運行順序,越小越早被運行 NI : Nice 的簡寫,與 Priority 有關,也是越小越早被運行 %CPU : CPU 的使用率 %MEM : 內存的使用率 TIME+: CPU 使用時間的累加補充:top 默認使用 CPU 使用率 (%CPU) 作為排序的重點2. kill, killall 程序管理(send a signal to a process)
程序相互管理是通過給程序一個訊號(signal)
kill
kill -signal PID 常用的signal: (其他signal可以查詢 man 7 signal) 1 : SIGHUP,啟動被終止的程序,可讓該 PID 重新讀取自己的配置檔,類似重新啟動 2 : SIGINT,相當于用鍵盤輸入 Ctrl+c 來中斷一個程序 9 : SIGKILL,強制中斷一個程序的的進行。若該程序進行到一半,那么尚未完成的部分可能會有“半產品”產生例如 vim 會有 .filename.swp 保留下來 15: SIGTERM,以正常的結束程序來終止該程序,后續動作也會將它完成如果該程序已經發生問題,即無法使用正常的方法終止,則該signal無效 17: SIGSTOP,相當于鍵盤輸入 Ctrl+z 來暫停一個程序的進行經常使用 ps 或 pstree 找到某個程序的PID后再使用kill傳送訊號killall
killall [-iIe] -signal [command name] -i : interactive,互動式的,若需要刪除時,會出現提示字節給使用者 -e : exact,表示后面接的'command name'要一致,但整個完整的命令不能超過15個字節 -I : 命令名稱(可能含參數)忽略大小寫 注意:killall會處理該命令名稱的全部程序?
(十)系統網絡資源與服務
netstat; demsg; ifconfig, ip; systemd, systemctl
1. netstat 追蹤網絡或插槽檔
網絡監聽:是一種監視網絡狀態、數據流程以及網絡上信息傳輸的管理工具,它可以將網絡界面設定成監聽模式,并且可以截獲網絡上所傳輸的信息。
套接字(socket):TCP用主機的IP地址加上主機上的端口號作為TCP連接的端點,這種端點就叫做套接字
netstat 這個命令常用在網絡監控方面。其輸出分為兩大部分,分別是網絡與系統自己的程序相關性部分。
netstat [-atunlp] -a : 將目前系統上所有的連線、監聽、socket數據都列出來 -t : 列出 tcp 網絡封包的數據 -u : 列出 udp 網絡封包的數據 -n : 不以程序的服務名稱,以埠號(port number)來顯示 -l : 列出目前正在網絡監聽(listen)的服務 -p : 列出該網絡服務的程序PIDnetstat后面不接參數,表示列出目前系統已創建的網絡連線與 unix socket 狀態 Active Internet connections (w/o servers) (激活Internet連接,是與網絡較相關的部分) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 linux:41836 203.23.128.100:https ESTABLISHED ... Active UNIX domain sockets (w/o servers) (活躍的UNIX域套接字,本機的程序自己的相關性(非網絡)) Proto RefCnt Flags Type State I-Node Path列表說明: 網際網絡連線部分: Proto:網絡的封包協議,主要分為TCP與UDP封包 Recv-Q:非由使用者程序連結到此socket的復制總bytes數 Send-Q:非由遠程主機傳送過來的acknowledged總bytes數 Locale Address:本地端的IP:port情況 Foreign Address:遠程主機的IP:port情況 State:連線狀態,主要有創建(ESTABLISHED)及監聽(LISTEN) 除了網絡上的連線外,Linux系統上面的程序是可以接受不同程序發送來的資訊,那就是Linux上頭的插槽檔(socket file) Proto:一般就是 unix 啦; RefCnt:連接到此 socket 的程序數量; Flags:連線的旗標; Type:socket 存取的類型。主要有確認連線的 STREAM 與不需確認的 DGRAM 兩種; State:若為 CONNECTED 表示多個程序之間已經連線創建。 Path:連接到此 socket 的相關程序的路徑!或者是相關數據輸出的路徑。常用舉例: 1) 找出目前系統上已在監聽的網絡連線及其PID netstat -tlnp2. dmesg 分析核心產生的信息
dmesg | more : 輸出所有的核心啟動時的資訊,因為信息太多可以加入管線命令”| more“來使畫面暫停 dmesg | grep -i hd : 搜尋啟動的時候,硬盤的相關資訊 dmesg | grep -i eth : 查閱網絡卡相關資訊3. ifconfig, ip 顯示或設置網絡設備
ifconfig
1) ifconfig 不加參數,表示顯示網絡設備信息 2) ifconfig [網絡設備] [down up] down : 關閉指定指定網卡,例如eth0 up : 啟動指定網卡 3) ifconfig [網絡設備] [add del] [地址] add : 設置網絡設備IPv6地址 del : 刪除網絡設備IPv6地址 網絡設備和地址之間不加參數 : 給該網絡設備配置IP地址 4) ifconfig hw [網絡設備] [硬件地址] : 設置網絡設備的類型與硬件地址ip
常用命令: ip link show : 顯示鏈路 ip addr show : 顯示地址(或ifconfig) ip route show : 顯示路由(route -n) ip neigh show : 顯示arp表 ip rule show : 顯示缺省規則 ip route del default dev eth0 : 刪除接口路由 ip route show table local : 查看本地靜態路由 ip route show table main : 查看直連路由 ip addr add/del [地址] dev eth0 : 增加/刪除地址4. systemd, systemctl 系統管理
systemd
傳統的Linux系統啟動過程主要由著名的init進程(也被稱為SysV init 啟動系統)來處理,而基于init的啟動系統被認為有效率不足的問題。
systemd 是Linux系統的另一種啟動方式,宣稱彌補了以傳統Linux SYSVC init為基礎的系統的缺點。systemd 是用來啟動守護進程,已成為大多數發行版的標準配置。它的設計目的是為系統的啟動和管理提供一套完整的解決方案,字母d是(daemon)的縮寫。
systemd 是Linux操作系統的系統和服務管理器。當在引導時作為第一個進程運行時(作為PID 1)取代init啟動和維護用戶空間服務,其他進程都是它的子進程。
systemd 并不是一個命令,而是一組命令,涉及到系統管理的方方面面。
systemctl
systemctl 是 systemd 的主命令,用于管理系統。
顯示系統狀態: $ systemctl status立即激活單元: # systemctl start [單元]立即停止單元: # systemctl stop [單元]重啟單元: # systemctl restart [單元]開機自動激活單元: # systemctl enable [單元]取消開機自動激活單元: # systemctl disable [單元]命令單元重新讀取配置: # systemctl reload [單元]輸出單元運行狀態: $ systemctl status [單元]檢查單元是否配置為自動啟動: $ systemctl is-enabled [單元]顯示單元的手冊頁: # systemctl help [單元]重新載入 systemd,掃描新的或有變動的單元: # systemctl daemon-reload輸出激活的單元: $ systemctl list-units查看已激活的服務: $ systemctl list-units -t service輸出運行失敗的單元: $ systemctl --failed禁用一個單元: # systemctl mask [單元]取消禁用一個單元: # systemctl unmask [單元]查看所有已安裝服務: $ systemctl list-unit-files檢查某個服務的所有配置細節 # systemctl show [服務]獲取某個服務的依賴性列表 # systemctl list-dependencies [服務]查看環境變量 $ systemctl show-environment重啟系統 # systemctl reboot關閉系統 # systemctl poweroff進入待機狀態 # systemctl suspend進入休眠狀態 # systemctl hibernate進入混合休眠模式 # systemctl hybrid-sleep進入救援狀態 # systemctl rescue?
(十一)遠程操作 ssh, scp
1. ssh 遠程登陸
ssh(SSH client) 是一個用于登陸遠程計算機并在遠程計算機上執行命令的程序。它旨在通過不安全的網絡在兩個untrusted主機之間提供安全的加密通信。X11連接,任意TCP端口和UNIX域套接字也可以通過安全通道轉發。
常用示例: 1) 登陸其他系統ssh usr(用戶名)@hostname(目標主機(局域網內或者遠程)的IP地址) 2) 使用其他端口(默認連接到目標主機的22端口上)ssh -p 端口號 usr@hostname 3) 遠程執行命令ssh usr@postname 命令 4) X11圖形界面ssh -X usr@hostname如果在運行圖形界面同時想做別的事情,只需要在圖形界面命令末尾加一個&符號 5) 轉義字符用ssh連接到任意一臺主機然后輸入~?就可以看到支持的轉義字符和功能說明列表 6) 配置ssh如果想要改變ssh的配置,文本編輯器打開/etc/ssh/sshd_config進行編輯 7) 構建ssh密鑰對ssh-keygen -t dsa此命令會要求輸入密碼,然后生成密鑰并會顯示一張該密鑰對應的隨機圖PS:三個用終端查看IP地址的命令:ip addr show; ifconfig -a; hostname -I2. scp 安全遠程文件拷貝
scp 是 secure copy 的縮寫,是Linux系統下基于ssh登陸進行安全的遠程文件拷貝命令。scp 在網絡上的主機之間復制文件,它使用 ssh 進行數據傳輸,并使用相同的身份驗證提供相同的安全性。如果需要,scp 會要求輸入密碼或密碼短語進行認證。本地文件可以使用絕對路徑或相對路徑,注意避免出現“:”作為主機說明符的名稱。
scp [-cprv] 原路徑 目標路徑 -C : 允許壓縮 -p : 保留原文件的修改時間,訪問時間和訪問權限 -r : 遞歸復制整個目錄 -v : 詳細方式顯示輸出。scp和ssh會顯示出整個過程的調試信息。這些信息用于調試鏈接、驗證和配置問題。應用示例: 1) 從本地復制到遠程scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file scp local_file remote_ip:remote_folder scp local_file remote_ip:remote_file 第1,2個指定了用戶名,命令執行后需要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名;第3,4個沒有指定用戶名,命令執行后需要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名; 2) 從遠程復制到本地只要將從本地復制到遠程的命令后兩個參數調換順序即可scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 scp -r www.runoob.com:/home/root/others/ /home/space/music/?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Linux基础学习(Ubuntu)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: websocket autobahn w
- 下一篇: CTF工具分享(下)