天天看點

linux invalid argument_後端程式員必備的Linux基礎知識

  • #一-從認識作業系統開始
  • #11-作業系統簡介
  • #12-作業系統簡單分類
  • #二-初探linux
  • #21-linux簡介
  • #22-linux誕生簡介
  • #23-linux的分類
  • #三-linux檔案系統概覽
  • #31-linux檔案系統簡介
  • #32-檔案類型與目錄結構
  • #四-linux基本指令
  • #41-目錄切換指令
  • #42-目錄的操作指令增删改查
  • #43-檔案的操作指令增删改查
  • #44-壓縮檔案的操作指令
  • #45-linux的權限指令
  • #46-linux-使用者管理
  • #47-linux系統使用者組的管理
  • #48-其他常用指令
學習Linux之前,我們先來簡單的認識一下作業系統。

一 從認識作業系統開始

1.1 作業系統簡介

我通過以下四點介紹什麼作業系統:

  • 作業系統(Operation System,簡稱OS)是管理計算機硬體與軟體資源的程式,是計算機系統的核心與基石;
  • 作業系統本質上是運作在計算機上的軟體程式 ;
  • 為使用者提供一個與系統互動的操作界面 ;
  • 作業系統分核心與外殼(我們可以把外殼了解成圍繞着核心的應用程式,而核心就是能操作硬體的程式)。
linux invalid argument_後端程式員必備的Linux基礎知識

1.2 作業系統簡單分類

  1. Windows: 目前最流行的個人桌面作業系統 ,不做多的介紹,大家都清楚。
  2. Unix: 最早的多使用者、多任務作業系統 .按照作業系統的分類,屬于分時作業系統。Unix 大多被用在伺服器、工作站,現在也有用在個人計算機上。它在建立網際網路、計算機網絡或用戶端/伺服器模型方面發揮着非常重要的作用。
linux invalid argument_後端程式員必備的Linux基礎知識
  1. Linux: Linux是一套免費使用和自由傳播的類Unix作業系統.Linux存在着許多不同的Linux版本,但它們都使用了 Linux核心 。Linux可安裝在各種計算機硬體裝置中,比如手機、平闆電腦、路由器、視訊遊戲控制台、台式計算機、大型機和超級計算機。嚴格來講,Linux這個詞本身隻表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基于Linux核心,并且使用GNU 工程各種工具和資料庫的作業系統。
linux invalid argument_後端程式員必備的Linux基礎知識

二 初探Linux

2.1 Linux簡介

我們上面已經介紹到了Linux,我們這裡隻強調三點。

  • 類Unix系統: Linux是一種自由、開放源碼的類似Unix的作業系統
  • Linux核心: 嚴格來說,Linux這個詞本身隻表示Linux核心
  • Linux之父: 一個程式設計領域的傳奇式人物。他是Linux核心的最早作者,随後發起了這個開源項目,擔任Linux核心的首要架構師與項目協調者,是當今世界最著名的電腦程式員、黑客之一。他還發起了Git這個開源項目,并為主要的開發者。
linux invalid argument_後端程式員必備的Linux基礎知識

2.2 Linux誕生簡介

  • 1991年,芬蘭的業餘計算機愛好者Linus Torvalds編寫了一款類似Minix的系統(基于微核心架構的類Unix作業系統)被ftp管理者命名為Linux 加入到自由軟體基金的GNU計劃中;
  • Linux以一隻可愛的企鵝作為标志,象征着敢作敢為、熱愛生活。

2.3 Linux的分類

Linux根據原生程度,分為兩種:

  1. 核心版本: Linux不是一個作業系統,嚴格來講,Linux隻是一個作業系統中的核心。核心是什麼?核心建立了計算機軟體與硬體之間通訊的平台,核心提供系統服務,比如檔案管理、虛拟記憶體、裝置I/O等;
  2. 發行版本: 一些組織或公司在核心版基礎上進行二次開發而重新發行的版本。Linux發行版本有很多種(ubuntu和CentOS用的都很多,初學建議選擇CentOS),如下圖所示:
linux invalid argument_後端程式員必備的Linux基礎知識

三 Linux檔案系統概覽

3.1 Linux檔案系統簡介

在Linux作業系統中,所有被作業系統管理的資源,例如網絡接口卡、磁盤驅動器、列印機、輸入輸出裝置、普通檔案或是目錄都被看作是一個檔案。

也就是說在LINUX系統中有一個重要的概念:一切都是檔案。其實這是UNIX哲學的一個展現,而Linux是重寫UNIX而來,是以這個概念也就傳承了下來。在UNIX系統中,把一切資源都看作是檔案,包括硬體裝置。UNIX系統把每個硬體都看成是一個檔案,通常稱為裝置檔案,這樣使用者就可以用讀寫檔案的方式實作對硬體的通路。

3.2 檔案類型與目錄結構

Linux支援5種檔案類型 :

linux invalid argument_後端程式員必備的Linux基礎知識

Linux的目錄結構如下:

Linux檔案系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:

linux invalid argument_後端程式員必備的Linux基礎知識

常見目錄說明:

  • /bin: 存放二進制可執行檔案(ls,cat,mkdir等),常用指令一般都在這裡;
  • /etc: 存放系統管理和配置檔案;
  • /home: 存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示;
  • /usr : 用于存放系統應用程式;
  • /opt: 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡;
  • /proc: 虛拟檔案系統目錄,是系統記憶體的映射。可直接通路這個目錄來擷取系統資訊;
  • /root: 超級使用者(系統管理者)的主目錄(特權階級^o^);
  • /sbin: 存放二進制可執行檔案,隻有root才能通路。這裡存放的是系統管理者使用的系統級别的管理指令和程式。如ifconfig等;
  • /dev: 用于存放裝置檔案;
  • /mnt: 系統管理者安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時挂載其他的檔案系統;
  • /boot: 存放用于系統引導時使用的各種檔案;
  • /lib : 存放着和系統運作相關的庫檔案 ;
  • /tmp: 用于存放各種臨時檔案,是公用的臨時檔案存儲點;
  • /var: 用于存放運作時需要改變資料的檔案,也是某些大檔案的溢出區,比方說各種服務的日志檔案(系統啟動日志等。)等;
  • /lost+found: 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡。

四 Linux基本指令

下面隻是給出了一些比較常用的指令。推薦一個Linux指令快查網站,非常不錯,大家如果遺忘某些指令或者對某些指令不了解都可以在這裡得到解決。

Linux指令大全:http://man.linuxde.net/

4.1 目錄切換指令

  • cd usr: 切換到該目錄下usr目錄
  • cd ..(或cd../): 切換到上一層目錄
  • cd /: 切換到系統根目錄
  • cd ~: 切換到使用者主目錄
  • cd -: 切換到上一個操作所在目錄

4.2 目錄的操作指令(增删改查)

  1. mkdir 目錄名稱: 增加目錄
  2. ls或者ll(ll是ls -l的别名,ll指令可以看到該目錄下的所有目錄和檔案的詳細資訊):檢視目錄資訊
  3. find 目錄 參數: 尋找目錄(查)

示例:

  • 列出目前目錄及子目錄下所有檔案和檔案夾: find .
  • 在/home目錄下查找以.txt結尾的檔案名:find /home -name "*.txt"
  • 同上,但忽略大小寫: find /home -iname "*.txt"
  1. 目前目錄及子目錄下查找所有以.txt和.pdf結尾的檔案:find . ( -name "*.txt" -o -name "*.pdf" )或find . -name "*.txt" -o -name "*.pdf" mv 目錄名稱 新目錄名稱: 修改目錄的名稱(改)

注意:mv的文法不僅可以對目錄進行重命名而且也可以對各種檔案,壓縮包等進行 重命名的操作。mv指令用來對檔案或目錄重新命名,或者将檔案從一個目錄移到另一個目錄中。後面會介紹到mv指令的另一個用法。

  1. mv 目錄名稱 目錄的新位置: 移動目錄的位置---剪切(改)

注意:mv文法不僅可以對目錄進行剪切操作,對檔案和壓縮包等都可執行剪切操作。另外mv與cp的結果不同,mv好像檔案“搬家”,檔案個數并未增加。而cp對檔案進行複制,檔案個數增加了。

  1. cp -r 目錄名稱 目錄拷貝的目标位置: 拷貝目錄(改),-r代表遞歸拷貝

注意:cp指令不僅可以拷貝目錄還可以拷貝檔案,壓縮包等,拷貝檔案和壓縮包時不 用寫-r遞歸

  1. rm [-rf] 目錄: 删除目錄(删)

注意:rm不僅可以删除目錄,也可以删除其他檔案或壓縮包,為了增強大家的記憶, 無論删除任何目錄或檔案,都直接使用rm -rf 目錄/檔案/壓縮包

4.3 檔案的操作指令(增删改查)

  1. touch 檔案名稱: 檔案的建立(增)
  2. cat/more/less/tail 檔案名稱 檔案的檢視(查)
  • cat: 檢視顯示檔案内容
  • more: 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出檢視
  • less: 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束檢視
  • tail-10 : 檢視檔案的後10行,Ctrl+C結束

注意:指令 tail -f 檔案 可以對某個檔案進行動态監控,例如tomcat的日志檔案, 會随着程式的運作,日志會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化

  1. vim 檔案: 修改檔案的内容(改)

vim編輯器是Linux中的強大元件,是vi編輯器的加強版,vim編輯器的指令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改檔案的方式基本會使用就可以了。

在實際開發中,使用vim編輯器主要作用就是修改配置檔案,下面是一般步驟:

vim 檔案------>進入檔案----->指令模式------>按i進入編輯模式----->編輯檔案 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq代表寫入内容并退出,即儲存;輸入q!代表強制退出不儲存。)
           
  1. rm -rf 檔案: 删除檔案(删)

同目錄删除:熟記 rm -rf 檔案 即可

4.4 壓縮檔案的操作指令

1)打包并壓縮檔案:

Linux中的打封包件一般是以.tar結尾的,壓縮的指令一般是以.gz結尾的。

而一般情況下打包和壓縮是一起進行的,打包并壓縮後的檔案的字尾名一般.tar.gz。指令:tar -zcvf 打包壓縮後的檔案名 要打包壓縮的檔案其中:

z:調用gzip壓縮指令進行壓縮

c:打封包件

v:顯示運作過程

f:指定檔案名

比如:加入test目錄下有三個檔案分别是 :aaa.txt bbb.txt ccc.txt,如果我們要打包test目錄并指定壓縮後的壓縮包名稱為test.tar.gz可以使用指令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解壓壓縮包:

指令:tar [-xvf] 壓縮檔案

其中:x:代表解壓

示例:

1 将/test下的test.tar.gz解壓到目前目錄下可以使用指令:tar -xvf test.tar.gz

2 将/test下的test.tar.gz解壓到根目錄/usr下:tar -xvf xxx.tar.gz -C /usr(- C代表指定解壓的位置)

4.5 Linux的權限指令

作業系統中每個檔案都擁有特定的權限、所屬使用者和所屬組。權限是作業系統用來限制資源通路的機制,在Linux中權限一般分為讀(readable)、寫(writable)和執行(excutable),分為三組。分别對應檔案的屬主(owner),屬組(group)和其他使用者(other),通過這樣的機制來限制哪些使用者、哪些組可以對特定的檔案進行什麼樣的操作。通過 ls -l 指令我們可以 檢視某個目錄下的檔案或目錄的權限

示例:在随意某個目錄下ls -l

linux invalid argument_後端程式員必備的Linux基礎知識

第一列的内容的資訊解釋如下:

linux invalid argument_後端程式員必備的Linux基礎知識
下面将詳細講解檔案的類型、Linux中權限以及檔案有所有者、所在組、其它組具體是什麼?

檔案的類型:

  • d: 代表目錄
  • -: 代表檔案
  • l: 代表軟連結(可以認為是window中的快捷方式)

Linux中權限分為以下幾種:

  • r:代表權限是可讀,r也可以用數字4表示
  • w:代表權限是可寫,w也可以用數字2表示
  • x:代表權限是可執行,x也可以用數字1表示

檔案和目錄權限的差別:

對檔案和目錄而言,讀寫執行表示不同的意義。

對于檔案:

權限名稱 可執行操作 r

可以使用cat檢視檔案的内容 w

可以修改檔案的内容 x

可以将其運作為二進制檔案 對于目錄:

權限名稱 可執行操作 r

可以檢視目錄下清單 w

可以建立和删除目錄下檔案 x

可以使用cd進入目錄 需要注意的是超級使用者可以無視普通使用者的權限,即使檔案目錄權限是000,依舊可以通路。在linux中的每個使用者必須屬于一個組,不能獨立于組外。在linux中每個檔案有所有者、所在組、其它組的概念。

  • 所有者

一般為檔案的建立者,誰建立了該檔案,就天然的成為該檔案的所有者,用ls ‐ahl指令可以看到檔案的所有者 也可以使用chown 使用者名 檔案名來修改檔案的所有者 。

  • 檔案所在組

當某個使用者建立了一個檔案後,這個檔案的所在組就是該使用者所在的組 用ls ‐ahl指令可以看到檔案的所有組 也可以使用chgrp 組名 檔案名來修改檔案所在的組。

  • 其它組

除開檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組

我們再來看看如何修改檔案/目錄的權限。

修改檔案/目錄的權限的指令:chmod

示例:修改/test下的aaa.txt的權限為屬主有全部權限,屬主所在的組有讀寫權限,其他使用者隻有讀的權限

chmod u=rwx,g=rw,o=r aaa.txt

linux invalid argument_後端程式員必備的Linux基礎知識

上述示例還可以使用數字表示:

chmod 764 aaa.txt

補充一個比較常用的東西:

假如我們裝了一個zookeeper,我們每次開機到要求其自動啟動該怎麼辦?

  1. 建立一個腳本zookeeper
  2. 為建立的腳本zookeeper添加可執行權限,指令是:chmod +x zookeeper
  3. 把zookeeper這個腳本添加到開機啟動項裡面,指令是: chkconfig --add zookeeper
  4. 如果想看看是否添加成功,指令是:chkconfig --list

4.6 Linux 使用者管理

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

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

Linux使用者管理相關指令:

  • useradd 選項 使用者名:添加使用者賬号
  • userdel 選項 使用者名:删除使用者帳号
  • usermod 選項 使用者名:修改帳号
  • passwd 使用者名:更改或建立使用者的密碼
  • passwd -S 使用者名 :顯示使用者賬号密碼資訊
  • passwd -d 使用者名: 清除使用者密碼

useradd指令用于Linux中建立的新的系統使用者。useradd可用來建立使用者帳号。帳号建好之後,再用passwd設定帳号的密碼.而可用userdel删除帳号。使用useradd指令所建立的帳号,實際上是儲存在/etc/passwd文本檔案中。

passwd指令用于設定使用者的認證資訊,包括使用者密碼、密碼過期時間等。系統管理者則能用它管理系統使用者的密碼。隻有管理者可以指定使用者名稱,一般使用者隻能變更自己的密碼。

4.7 Linux系統使用者組的管理

每個使用者都有一個使用者組,系統可以對一個使用者組中的所有使用者進行集中管理。不同Linux 系統對使用者組的規定有所不同,如Linux下的使用者屬于與它同名的使用者組,這個使用者組在建立使用者時同時建立。

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

Linux系統使用者組的管理相關指令:

  • groupadd 選項 使用者組 :增加一個新的使用者組
  • groupdel 使用者組:要删除一個已有的使用者組
  • groupmod 選項 使用者組 : 修改使用者組的屬性

4.8 其他常用指令

  • pwd: 顯示目前所在位置
  • grep 要搜尋的字元串 要搜尋的檔案 --color: 搜尋指令,--color代表高亮顯示
  • ps -ef/ps -aux: 這兩個指令都是檢視目前系統正在運作程序,兩者的差別是展示格式不同。如果想要檢視特定的程序可以使用這樣的格式:ps aux|grep redis (檢視包括redis字元串的程序),也可使用 pgrep redis -a。

注意:如果直接用ps((Process Status))指令,會顯示所有程序的狀态,通常結合grep指令檢視某程序的狀态。

  • kill -9 程序的pid: 殺死程序(-9 表示強制終止。)

先用ps查找程序,然後用kill殺掉

  • 網絡通信指令:檢視目前系統的網卡資訊:ifconfig
  • 檢視與某台機器的連接配接情況:ping
  • 檢視目前系統的端口使用:netstat -an
  • net-tools 和 iproute2 :
  • net-tools起源于BSD的TCP/IP工具箱,後來成為老版本Linux核心中配置網絡功能的工具。但自2001年起,Linux社群已經對其停止維護。同時,一些Linux發行版比如Arch Linux和CentOS/RHEL 7則已經完全抛棄了net-tools,隻支援iproute2。linux ip指令類似于ifconfig,但功能更強大,旨在替代它。更多詳情請閱讀https://linoxide.com/linux-command/use-ip-command-linux
  • shutdown: shutdown -h now: 指定現在立即關機;shutdown +5 "System will shutdown after 5 minutes":指定5分鐘後關機,同時送出警告資訊給登入使用者。
  • reboot: reboot: 重開機。reboot -w: 做個重開機的模拟(隻有紀錄并不會真的重開機)。

------

【感謝您能看完,如果能夠幫到您,麻煩點個贊~】

更多經驗技術歡迎前來共同學習交流:一點課堂-為夢想而奮鬥的線上學習平台 http://www.yidiankt.com/

想要深入學習的同學們可以關注私信我,一起學習讨論~還有全套資源分享,經驗探讨,等你哦!

繼續閱讀