作者簡介 海洋,從事linux運維工作6年,業務運維4年,現任職餓了麼資深運維工程師,負責物流業務運維及穩定性相關工作,隨著運維工作不斷自動化和智慧化,現對aiops感興趣,喜歡羽毛球、籃球等運動,沒事的話喜歡宅在家。
寫給初學者的Linux餐前小菜
本文以linux的幾個重要的哲學思想為起點,依次介紹了linux下的檔案目錄及作用、基本命令操作以及包管理器的使用幾個話題,帶領初學的同學從整體上感受一下linux的輪廓。
Linux遵循的哲學思想
- 一切皆檔案 除了普通檔案,諸如目錄、字元裝置、塊裝置、套接字等在Unix/Linux中也都是以檔案來對待,雖然型別不同,但是對其提供的卻是同一套操作介面。不同的檔案根據型別或用途放在不同的目錄下。
- 由目的單一、短小、精悍的程式組成 通過短小、簡單的程式保障linux的高效,由於程式功能過於單一,一個完整的服務需要依賴多個程式,多個程式相互的依賴關係又是一個問題,linux通過包管理器很好的解決了這個問題
- 文字檔案儲存配置資訊 使用簡單的檔案編輯器就可以完成配置、更改配置(有關文字編輯器的使用,下次再聊)
- 儘量避免捕獲使用者介面 一個程式一旦開始執行,就不需要使用者進行任何操作,儘量不和使用者互動
Linux檔案目錄及作用
目錄 | 作用 |
---|---|
/ | 根目錄 |
/bin | 主要放基本執行命令 |
/sbin | 主要放系統管理的命令 |
/boot | 引導目錄(與系統啟動有關),放置核心、grub、initrd等檔案 |
/dev | device,裝置檔案目錄,也是特殊檔案目錄 |
/etc | 配置檔案目錄,放置系統的配置檔案 |
/home | 使用者的家目錄,放置使用者的資訊(使用者登入後身處的預設目錄即為使用者的家目錄) |
/lib | library,庫檔案目錄,放置庫檔案 |
/mnt | 系統掛載目錄 |
/media | 額外檔案系統的掛在目錄 |
/misc | 被動目錄,放置雜項裝置 |
/opt | 可選目錄,第三方軟體安裝的目錄 |
/proc | 偽目錄,放置核心映像檔案 |
/srv | 伺服器執行中產生的資料的臨時使用的目錄 |
/sys | 偽目錄,放置核心中硬體資訊的對映 |
/tmp | 臨時檔案目錄,放置系統中產生的臨時檔案 |
/usr | 第三方軟體的管理命令、額外資訊等都存放在此 |
/var | 經常變化的檔案所處的目錄,如使用者的郵箱佇列 |
終端下的Linux:通過命令列和Linux交流
和作業系統互動的方式,一般分為兩類
- GUI: graphical user interface 圖形化介面,類似windows系統的圖形化介面,linux使用的不多
- CLI: command line interface 命令列介面,linux多通過這種方式進行操作,所以掌握基本命令是至關重要的
Linux中的命令格式:
- 命令嚴格區分大小寫
- command [options][arguments]
- 短選項:-l 、-h、 -hl 分開的選項之間用空格隔開如
ls -a -l = ls -al
- 長選項:
--help
、--long
- 引數與選項之間空格隔開,引數之間也用空格隔開
ls -al /etc /home
磨刀不誤砍柴工:如何獲得一個命令的幫助資訊
linux在非圖形介面下的操作都是基於命令列的,然而linux又有非常多的命令,每個命令又有很多options, 在使用一個命令前,清楚的知曉命令的作用以及options的作用是非常重要的,下面我們們來學習下通過哪些方法可以得知這些資訊。
Linux的命令分類
-
內部命令(shell自帶的命令) help command 獲取內部命令的幫助資訊
[xxx@xxx]$ help cd
-
外部命令(除了內部命令,即為外部命令) command -h 獲取外部命令的幫助資訊
[xxx@xxx]$ nginx -h
MAN手冊
man手冊可以說是linux很全面的幫助文件了,包括多個章節,每個章節涉及不同方面。
- User commands 普通使用者命令相關資訊
- System calls 系統呼叫相關資訊
- Library functions 庫函式相關資訊
- Devices 裝置相關資訊
- Files 檔案格式、檔案系統相關資訊
- Games 娛樂和遊戲相關資訊
- Overviews, conventions, and miscellaneous 雜項
- Superuser and system administration commands 管理員命令相關資訊
__whatis__命令
有的命令只涉及一個維度、有的命令可能涉及多個維度。檢視命令對應在man手冊中的資訊可使whatis, whatis command
顯示一個命令的簡單說明,同時顯示出此命令不同部分在man手冊上的章節數。
[xxx@xxx]$ whatis cd
whatis是呼叫資料庫中有關這個命令的相關簡單說明,如果系統剛剛安裝,有些命令可能還沒來得及建立資料庫,因此便無法使用whatis開檢視此命令的幫助資訊。可以使用mkwhatis command幫命令生成一個有關此命令的資料資料。
常用命令
ls: 顯示目錄檔案
- -a 顯示目錄中所有檔案(包括隱藏檔案)
- -l 顯示檔案的詳細資訊(許可權、時間、屬主、屬組等)
- -h 顯示檔案大小(自動換算為B、KB、MB、G)
- -d 顯示目錄本身資訊
cd: 切換所在目錄
- cd ~ 切換到當前使用者的家目錄
- cd - 切換到上一次目錄
- cd . 切換到當前目錄
- cd .. 切換到上一級目錄(父目錄)
- cd /xx 切換到指定路徑
cat: 輸出檔案所有內容
- cat filename 輸出filename的所有內容
- cat -n filename 輸出內容、顯示行號
tail: 檢視檔案內容(預設顯示後10行)
- -f filename 動態顯示檔案後10行(實時重新整理)
- -fn filename 動態顯示檔案後n行(實時重新整理)
echo: 像檔案內寫入內容
- echo xxx > filename 用xxx覆蓋filename的內容(filename原來內容消失,只有xxx)
- echo xxx >> filename 在filename內容新追加一行xxx(filename原來內容依然在,新增一行xxx)
歷史命令
- history 檢視當前使用者使用過的命令,預設記錄1000條
- history -c 清除命令歷史
- ! + 'n'(歷史命令前的數字)即可使用命令歷史中相應的命令。
- ! + '-n' 執行歷史命令中倒數第n條命令
- ! + 字串 表示執行歷史命令中離現在最近的以這個字串開始的命令
- !! 表示重複執行上一條命令
- !$ 引用上一條命令的最後一個字元
Linux下的軟體安裝:包管理器的使用
上面我們們說過基於'由目的單一、短小、精悍的程式組成'的特性,需要對多個程式間的依賴進行管理,linux開發出了包管理器。 包管理器可以自動化地更新與管理軟體包,能夠從指定的伺服器自動下載軟體包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
YUM
Yum(全稱為Yellow dog Updater, Modified)是在Fedora和RedHat以及Centos中基於rpm的軟體包管理器。
YUM基本用法
- yum install package 安裝程式package
- yum groupinstall package 安裝程式組
- yum update package 更新程式package
- yum upgrade package 升級程式package
- yum remove package 解除安裝程式package
YUM安裝mysql
- 首先獲得root許可權(自己的主機一般都是root)
- 執行命令
[xxx@xxx]$ yum install mysql-server mysql mysql-devel -y
- mysql 即mysql客戶端command
- mysql-server 即mysql服務端
- mysql-devel 安裝所需的庫和檔案等
- -y 確認安裝(如果沒有-y 在安轉過程中需要輸入y + '回車') 接下來就是刷屏的安裝資訊了,如果安裝成功會顯示 Complete!
- 執行命令
[xxx@xxx]$ service mysqld start
啟動mysql服務 - 連結mysql服務
[xxx@xxx]$ mysql
可以直接登入mysql(mysql剛初始化沒有密碼) - 設定root使用者連結mysql的密碼
[xxx@xxx]$ mysqladmin -u root password 'password'
[xxx@xxx]$ mysql -u root -p
輸入密碼,即可登入 mysql安裝及啟動到此結束,接下來就可以進行建庫、建表操作。
結尾
可見linux的操作雖然陌生,也是非常簡單的,只需要掌握一些基本知識即可為我們所用。 如果大家需要非常全面的linux入門資料《鳥哥私房菜》是不錯的選擇,對於比較感興趣的知識點想深挖下去可以通過Google直接搜關鍵字就能查到很多高質量的文章。 不過最最最權威的還是官網!
閱讀部落格還不過癮?
歡迎大家掃二維碼加入交流群,討論和部落格有關的技術問題,還可以和博主有更多互動
部落格轉載、線下活動及合作等問題請郵件至 shadowfly_zyl@hotmail.com 進行溝通