【Linux】Linux學習筆記(完結)

前言

在工做中發現Linux系統的重要性,因而計劃重溫下Linux,順便記錄筆記方便以後查閱。git

磁盤分區

  • Linux系統中,每一個設備都被當成一個文件來對待;如IDE接口的硬盤文件名爲/dev/hd[a-d]
  • 磁盤的第一個扇區記錄了主引導分區(MBR)分區表主引導分區能夠安裝引導加載程序的地方,有446bytes,系統開機時會主動讀取MBR區塊的內容;分區表記錄硬盤分區狀態,有64bytes
  • 磁盤分區是對分區表進行設置,默認分區表僅能寫入四組分區信息,四組分區信息稱爲主或擴展分區
  • 使用擴展分區劃分出來的爲邏輯分區,其編號從5開始,如/dev/hda5//dev/hda6...。前四個分區號均保留。
  • 主與擴展分區最多有4個``擴展分區最多隻有1個,邏輯分區是由擴展分區分割出來的分區,只有主分區邏輯分區可以被格式化,擴展分區不能。
  • 擴展分區被破壞,全部邏輯分區將會被刪除。
  • BIOS是寫入到硬件上的程序,其會根據用戶設置取得可以開機的硬盤,而且到該硬盤下讀取第一個扇區的MBR位置,MBR中存放了最基本的引導加載程序,接下來由引導加載程序(boot loader)加載內核文件,而後內核文件開始操做系統的功能。
  • 引導加載程序主要提供三個服務:
    • 提供菜單:可選擇不一樣開機選項,是多重引導的重要功能。
    • 載入內核文件:指向可開機的程序區段來開始操做系統。
    • 轉交其餘loader:將引導加載功能轉交給其餘loader負責。
  • 引導加載程序除了能夠安裝在MBR外,還能夠安裝在每一個分區的引導扇區
  • 每一個分區擁有本身的啓動扇區,實際可開機的內核文件放置在各分區內,loader只認識本身系統分區內的可開機內核文件以及其餘loader,loader可直接指向或間接將管理權轉交給另外一個管理程序。

系統登陸

  • Linux默認提供6Terminal供用於登陸,切換方式爲Ctrl+Alt+[F1-F6],名稱分別爲tty1-tty6,使用Ctrl+Alt+F7可切換至圖形界面。
  • 若以純文本環境啓動Linux,若想啓動圖形界面,可以使用startx命令啓動圖形界面。
  • 使用man + 命令可查看幫助,如man date
  • 使用shutdown命令關機,如shutdown -h now表示如今關機,shutdown -h 20:25表示20:25關機。

文件權限和目錄配置

Markdown

分爲七列,分別表明文件權限鏈接數文件全部者文件所屬用戶組文件大小文件最後被修改的時間文件名shell

  • 第一列作以下劃分:
    • 第一個字符若爲d,則表示目錄,若爲-,則表示文件,若爲|,則表示爲鏈接文件(linkfile)、若爲b,表示設備文件裏的可供存儲的接口設備、若爲c,表示設備文件裏的串行端口設備,如鍵盤鼠標等。
    • 接下來三個字符爲一組,可分爲三組,且均爲rwx組合,r表明可讀,w表明可寫,x表明可執行,其位置不會變化,若無權限,則爲-;第一組爲文件全部者的權限、第二組爲同用戶組的權限、第三組爲其餘非本用戶組的權限
  • chgrp改變文件所屬用戶組;chown改變文件全部者;chmod改變文件權限。在改變時發現無權限可使用sudo ch***試試。
  • 改變全部者可以使用chown user:group ***的格式,如chown root:root log.loglog.log改成root組下的root賬號。
  • r:4;w:2;x:1,可以使用數字更改權限屬性,權限分爲三組,分別對應ownergroupothers,如chmod 777 .bashrc表示owner、group、others都具備讀寫執行權限。
  • 可以使用chmod u=rwx,go=rx .bashrc更改權限,owner具備讀寫執行權限;groupothers具備讀寫權限。
  • 可否進入某個目錄,只與該目錄的x權限有關,若具備權限,則可進入,不然不可進入。
  • 單一文件或目錄的最大允許文件名爲255個字符,包含完整路徑名稱及目錄/的完整文件名爲4096個字符。
  • 可以使用mkdir -p test/test/test/test一次性建立全部的目錄。

文件與目錄管理

  • 使用cp -r dir1 dir2/dir1目錄複製到dir2目錄下。
  • 使用mv test1 test2test1改名爲test2
  • catmorelessheadtail可查看文件。
  • tail -f filename,可查看filename不斷新增的內容。

磁盤與文件系統管理

  • 扇區是最小的物理存儲單位,大小爲512bytes扇區組成柱面柱面分區的最小單位。
  • 掛載點必定是目錄,該目錄爲進入該文件系統的入口。
  • 可以使用df命令查看磁盤的使用狀況。

文件與文件系統壓縮和打包

  • 使用tar -zcvf git.tar.gz git/命令壓縮git目錄至git.tar.gz
  • 使用tar -zxvf git.tar.gz命令解壓縮git.tar.gz至本目錄下。

Vim編輯器

  • G(Shift+g)移動到最後一行,gg移動到第一行。
  • dd刪除光標所在的一整行。
  • x向後刪除一個字符(Del),X向前刪除一個字符(Backspace)。

認識學習Bash

  • 對於變量賦值而言,等號兩邊不能接空格,如myname = leesf會報錯。
  • 使用bash能夠進入子進程,但進程的自定義變量沒法在子進程內使用,exit退出子進程,經過export將變量變成環境變量後,就可以在子進程中使用。
  • 使用set可查看全部變量(含環境變量和自定義變量)
  • 使用set | grep HISTFILE可查看歷史命令記錄的放置文件和歷史命令記錄大小。
  • 使用echo $?查看上個命令執行的回傳碼(若執行成功,返回0,不然爲非0)。
  • 使用echo $$能夠查看本PID
  • 使用alias cls='clear'設置清屏的別名。
  • 使用history能夠顯示全部歷史命令。
  • 使用!!或者向上箭頭+Enter執行上一條命令。
  • 使用!al執行最近以al爲開頭的命令。
  • 可修改~/.bashrc~/.bash_profile文件進行我的設置,並使用source ~/.bashrcsource ~/.bash_profile使其生效,有時可能須要從新登出登入操做,登出使用exit便可。
  • 標準輸入代碼爲0,使用<或<<;標準輸出代碼爲1,使用>或>>;標準錯誤輸出代碼爲2,使用2>或2>>。其中>>表示累加,>表示覆蓋。
  • 使用/dev/nullstderr信息丟棄,如find /home -name .bashrc 2> /dev/null,表示將stderr丟棄。
  • 若想將錯誤信息和正確信息都寫進同一文件中,需使用特殊用法,如find /home -name .bashrc > list 2>&1或者find /home -name .bashrc &> list
  • cat > catfile < ~/.bashrc~/.bashrc的內容輸出至catfile中。
  • cat > catfile << "eof"使用eof做爲結束輸入控制符。
  • 可將多個命令組合一次性執行,如ll;ll;shutdown -h now,先執行兩次ll,而後執行關機操做。
  • 可根據上個命令執行狀態肯定下個命令是否執行,上個命令回傳碼爲0表示成功,非0表示失敗。
  • cmd1 && cmd2表示若cmd1執行完畢且正確執行,則執行cmd2,不然不執行cmd2cmd1 || cmd2表示cmd1執行完畢且正確執行,則不執行cmd2,不然執行cmd2
  • 管道命令僅會處理standard output,對於standard error output予以忽略。
  • 常見的管道命令以下,cutgrepsortwcuniqtee等。
  • 使用tar -cvf - /home | tar -xvf -,可將/home打包後再解壓到當前目錄。
  • 使用sed -i 's/This is/That is/g' testtest文件中全部This is替換成That is
  • 使用sed -i '$a the end' test能夠在test文件末尾添加the end,其中$表示最後一行,a表示新增
  • 使用awk命令處理每行的數據。如awk '{FS=":"} $1 "\t" $3'表示自定義分隔符爲:,並將第一列與第三列輸出。
  • 使用diff test1 test查看testtest1之間的異同。

學習Shell Script

  • shell.sh文件必需要具有可讀可執行(rx)權限。
  • script腳本第一行#!/bin/bash聲明瞭這個script使用的shell名稱。
  • 使用source test.shsh test.sh執行時,前者是直接在父進程中運行,變量再父進程中有效,後者在子進程中運行,父進程中無效。
  • 可在sh test.sh後面接參數,並使用$#、$一、$2...等進行獲取,其中$0表示執行的shell腳本名。;
  • 對於某些機器而言,須要使用bash test.sh執行腳本。
  • 因爲shell是由上往下執行,須要在最前面定義函數。
  • 取計算所得變量值時,建議使用$((運算內容))

賬號管理與ACL權限設置

  • 登陸時會取得用戶ID,即UID和用戶組ID,即GID
  • 可以使用susudo命令切換身份。

磁盤配額與高級文件系統管理

  • RAID-0爲等量模式,性能最佳;RAID-1爲映像模式,完整備份,整個RAID容量幾乎減小一半;RAID-5對性能和數據備份進行了均衡考慮,當損壞的磁盤數量大於等於兩塊時,整組RAID-5的數據就毀了,其默認只支持一塊磁盤損壞的狀況。

例行性工做

  • at能夠處理僅執行一次就結束調度的命令;crontab所設置的命令將會循環一直進行下去。
  • 命令at now + 1 minutes表示一分鐘後執行命令。
  • 使用命令atq能夠查詢有哪些任務,使用atrm [jobnumber]可刪除指定job number的任務。
  • 還可以使用batch命令建立任務,表示當系統有空時才運行。
  • 0 3,6 * * * command表示3點和6點都執行指定命令;20 8-12 * * * command表示8點到12點(包括)的之間的每一個小時的20分都進行執行命令;*/5 * * * * command表示每隔5分鐘就執行命令,也能夠寫成0-59/5 * * * * command
  • 使用crontab執行sh文件時,建議使用絕對路徑。

程序管理

  • 觸發任何一個事件時,系統都會將它定義爲一個進程,而且給予這個進程一個ID,稱爲PID,同時觸發這個進程的用戶和相關屬性關係,給予這個PID一組有效的權限設置。
  • 父進程可經過複製(fork)方式產生如出一轍的子進程,而後被複製出來的子進程再以exec方式執行實際要進行的進程,最終就成爲一個子進程。
  • 系統先以fork方式複製一個與父進程相同的暫存進程,這個進程與父進程惟一的區別就是PID不一樣,這個暫存進程還會多一個PPID的參數,其爲父進程的標識符。
  • 可以使用&將任務丟到後臺進行。(避免使用ctrl + c中斷,若註銷時,仍是會中斷執行)
  • 可以使用jobs -l命令查看目前的後臺工做狀態。
  • 使用fg %jobnumber命令將後臺工做拿到前臺執行,如先使用vim kill.sh &,而後使用jobs -l,最後使用fg 1命令。
  • 使用bg %jobnumber命令運行後臺命令。
  • 使用kill -9 %jobnumber刪除指定後臺任務。
  • nohup [命令與參數]在終端機前臺中工做,nohup [命令與參數] &在終端機後臺中工做。即使註銷,也依舊執行。
  • ps aux可查看全部的進程數據。
  • top命令監控進程運行狀態,如top -d 2表示兩秒更新一次各進程狀態。
  • uname命令可查看系統與內核相關信息,如uname -s查看系統內核名稱。
  • uptime命令可查看系統啓動時間與工做負載。
  • fuser命令經過文件找出正在使用該文件的程序。
  • lsof命令列出被進程所打開的文件名。
  • pidof命令找出某個正在執行的進程的PID

總結

對於通常的編程做業中,只需瞭解Linux主要命令便可,Linux私房菜中後面的部分因爲在編程中接觸較少,所以再也不學習,有興趣的讀者可自行閱讀。編程

相關文章
相關標籤/搜索