1. 程式人生 > 實用技巧 >Linux系統概述及常用命令

Linux系統概述及常用命令

王軍老師《Linux系統命令及shell指令碼實踐指南》的讀書筆記,Linux系統結構及常用指令

Linux系統分支:

Fedora

Fedora和Redhat這兩個Linux的發行版聯絡很密切。 可以說Fedora Core 的前身就是Red Hat Linux。Fedora Core 被紅帽公司定位為新技術的實驗場,與 Red Hat Enterprise Linux 被定位為穩定性優先不同,許多新的技術都會在 Fedora Core 中檢驗,如果穩定的話紅帽公司則會考慮加入 Red Hat Enterprise Linux 中。

Redhat

Redhat,應該稱為Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所謂的Redhat Advance Server,收費版本)、Fedora Core(由原來的Redhat桌面版本發展而來,免費版本)、CentOS(RHEL的社群克隆版本,免費)。所以這個版本的特點就是使用人群數量大,資料非常多,言下之意就是如果你有什麼不明白的地方,很容易找到人來問,而且網上的一般Linux教程都是以Redhat為例來講解的。Redhat系列的包管理方式採用的是基於RPM包的YUM包管理方式,包分發方式是編譯好的二進位制檔案。穩定性方面RHEL和CentOS的穩定性非常好,適合於伺服器使用,但是Fedora Core的穩定性較差,最好只用於桌面應用

Debian

Debian,或者稱Debian系列,包括Debian和Ubuntu等。Debian是社群類Linux的典範,是迄今為止最遵循GNU規範的Linux系統。Debian最早由Ian Murdock於1993年建立,分為三個版本分支(branch): stable, testing 和 unstable。其中,unstable為最新的測試版本,其中包括最新的軟體包,但是也有相對較多的bug,適合桌面使用者。

Ubuntu

目前使用最多的Linux,簡單方便,有KDE和GNOME等視窗介面可供選擇,擁有強大的apt-get軟體管理程式,安裝個管理軟體很方便!作為新手,推薦使用。

Ubuntu嚴格來說不能算一個獨立的發行版本,Ubuntu是基於Debian的unstable版本加強而來,可以這麼說,Ubuntu就是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的 Linux桌面系統。根據選擇的桌面系統不同,有三個版本可供選擇,基於Gnome的Ubuntu,基於KDE的Kubuntu以及基於Xfc的Xubuntu。特點是介面非常友好,容易上手,對硬體的支援非常全面,是最適合做桌面系統的Linux發行版本。

Linux系統組成

Linux系統一般有4個主要部分:核心、shell、檔案系統和應用程式。核心、shell和檔案系統一起形成了基本的作業系統結構,它們使得使用者可以執行程式、管理檔案並使用系統。

核心是作業系統的核心,具有很多最基本功能,它負責管理系統的程序、記憶體、裝置驅動程式、檔案和網路系統,決定著系統的效能和穩定性。

Linux 核心由如下幾部分組成:記憶體管理、程序管理、裝置驅動程式、檔案系統和網路管理等

幫助命令

man :獲取指定命令幫助

Help:命令 --help 獲取命令選項的幫助

Info:詳細命令幫助

使用者管理

useradd 選項 使用者名稱

userdel 選項 使用者名稱

usermod 選項 使用者名稱

passwd 選項 使用者名稱 超級使用者可以為自己和其他使用者指定口令,普通使用者只能用它修改自己的口令。

su:預設切換到超級管理員使用者。Linux使用者分為根使用者(root)、普通使用者、系統使用者3種

sudo:通過一種可配置的方式解決了這個問題。該命令的使用方式是在sudo後跟上需要執行的命令,比如說sudo passwd user1,即使用root的身份修改user1的密碼。執行該命令時,系統首先檢查/etc/sudoers,判斷該使用者是否有執行sudo的許可權,在確定有執行許可權後,系統要求使用者輸自己的密碼,如果密碼輸入正確,則會以root使用者的身份執行passwd user1命令。

groupadd 選項 使用者組

groupdel 使用者組

groupmod 選項 使用者組

任務管理

at:單一時刻執行一次任務

cron: 在Linux中,可以利用cron工具做這種設定。首先需要確定crond程序在執行,如果沒有執行,需要先啟動該程序。

檢查使用者登入資訊

user :檢視系統有哪些使用者

who:檢視使用者通過終端登入系統的資訊

w:詳細的使用者登入資訊

Linux檔案管理

Linux 遵循一切皆檔案的準則

檔案操作

touch:建立檔案。同名已存在檔案使用touch會更新建立時間

rm:刪除檔案

mv:move的縮寫,移動檔案到資料夾

cat:檢視檔案內容

head:檢視檔案頭部

tail:檢視檔案尾部,可以動態地檢視檔案尾tail -f

目錄操作

cd:切換目錄

mkdir:建立目錄

rmdir和rm:刪除目錄,在使用rm刪除目錄時,最常用的組合引數是-rf,這樣就不會有任何提醒了,可直接將目錄刪除乾淨

cp:使用者複製檔案或者資料夾

檔案與目錄的許可權

對檔案許可權有嚴格的控制:安全的原因

ls –al 檢視檔案或目錄的許可權

chmod: Linux下的每個檔案都定義了檔案擁有者(user)、擁有組(group)、其他人(others)的許可權,我們使用字母u、g、o來分別代表擁有者、擁有組、其他人,而對應的具體許可權則使用rwx的組合來定義,增加許可權使用+號,刪除許可權使用-號,詳細許可權使用=號。

同時設定所有人的許可權就需要使用數字表示法了,我們定義r=4,w=2,x=1,如果許可權是rwx,則數字表示為7,如果許可權是r-x,則數字表示為5。假設想設定一個檔案的許可權是:擁有者的許可權是讀、寫、執行(rwx),擁有組的許可權是讀、執行(r-x),其他人的許可權是隻讀(r--),那麼可以使用命令chmod 754 somefile來設定。

chown: 改變檔案的擁有者

chgrp:改變檔案的擁有組

查詢檔案

find:查詢 find PATH-name filename

locate: locate命令依賴於一個數據庫檔案,Linux系統預設每天會檢索一下系統中的所有檔案,然後將檢索到的檔案記錄到資料庫中。所以使用locate命令要比find命令反饋更為迅速。在執行這個命令之前一般需要執行updatedb命令

which: which用於從系統的PATH變數所定義的目錄中查詢可執行檔案的絕對路徑

whereis: whereis也能查到其路徑,但是和which不同的是,它不但能找出其二進位制檔案,還能找出相關的man檔案

檔案壓縮和解壓

gzip/gunzip是用來壓縮和解壓縮單個檔案的工具,使用方法比較簡單。

tar:tar不但可以打包檔案,還可以將整個目錄中的全部檔案整合成一個包,整合包的同時還能使用gzip的功能進行壓縮,比如說把整個/boot目錄整合並壓縮成一個檔案。一般來說,整合後的包習慣使用.tar作為其後綴名,使用gzip壓縮後的檔案則使用.gz作為其後綴名。因為tar有同時整合和壓縮的功能,所以可使用.tar.gz作為字尾名

tar –zcvf boot.tgz /boot

bzip2 :使用bzip2壓縮檔案時,預設會產生以.bz2副檔名結尾的檔案,這裡使用-z引數進行壓縮,使用-d引數進行解壓縮

cpio:

檔案系統

檔案系統是作業系統用於明確磁碟或分割槽上相關檔案的方法和資料結構,通俗的說法就是在磁碟上組織檔案的方法。

Ext3檔案系統

因為日誌檔案系統使用了“兩階段提交”的方式來維護待處理的事務。比方說在寫入資料之前,檔案系統會先在日誌中寫入相關記錄資訊,然後再開始真實地寫資料,寫完資料後則會將之前寫入日誌中的內容刪除。

硬連結(hard link)又稱實際連結,是指通過索引節點來進行連結。在Linux檔案系統中,所有的檔案都會有一個編號,稱為inode,多個檔名指向同一索引節點是被允許的,這種連結就是硬連結。

軟連結(soft link)又稱符號連結(symbolic link),是一個包含了另一個檔案路徑名的檔案,可以指向任意檔案或目錄,也可以跨不同的檔案系統。軟連結和Windows下的“快捷方式”十分類似,刪除軟連結並不會刪除其所指向的原始檔,如果刪除了原始檔則軟連結會出現“斷鏈”。

字元處理

|:管道是一種使用非常頻繁的通訊機制,我們可以用管道符“|”來連線程序,由管道連線起來的程序可以自動執行,如同有一個數據流一樣,所以管道表現為輸入輸出重定向的一種方法,它可以把一個命令的輸出內容當作下一個命令的輸入內容,兩個命令之間只需要使用管道符連線即可。

grep是Linux下非常強大的基於行的文字搜尋工具,使用該工具時,如果匹配到相關資訊就會打印出符合條件的所有行。

sort:對無序的資料進行排序

uniq: uniq一般都需要和sort命令一起使用,也就是先將檔案使用sort進行排序(這樣重複的內容就能顯示在連續的幾行中),然後再使用uniq刪除掉重複的內容(uniq的作用就在於刪除連續的完全一致的行)

cut: cut就是擷取的意思,它能處理的物件是“一行”文字,可從中選取出使用者所需要的部分。在有特定的分隔符時,可以指定分隔符,然後打印出以分隔符隔開的具體某一列或某幾列

tr:tr命令比較簡單,其主要作用在於文字轉換或刪除

paste:將檔案按照行進行合併,中間使用tab隔開

網路管理

ifconfig命令時將會輸出當前系統中所有處於活動狀態的網路介面

ifconfig eth0 down關閉網絡卡 ifconfig eth0 up 重啟網絡卡

ping程式的目的在於測試另一臺主機是否可達,一般來說,如果ping不到某臺主機,就說明對方主機已經出現了問題,但是不排除由於鏈路中防火牆的因素、ping包被丟棄等原因而造成ping不通的情況。

程序管理

程序表示程式的一次執行過程,它是應用程式的執行例項,是一個動態的過程。所有的程序都可能存在3種狀態:執行態、就緒態、阻塞態

Ps:命令就是一款非常強大的程序檢視工具

#ps 的引數非常多,在此列出一些常用的引數

#-A 列出所有的程序,和-e有同樣的效果

#-a 列出不和本終端有關的所有程序

#-w 顯示加寬可以顯示較多資訊

#-u 顯示有效使用者相關的程序

#aux 顯示所有包含其他使用者的程序

top命令提供了實時的系統狀態監控,可以按照CPU使用、記憶體使用、執行時間等指標對程序進行排序

kill、killall:結束程序

lsof(list open files)是一個列出當前系統中所有開啟檔案的工具。

nice renice: 數值越低代表優先順序越高,也就能更多地被作業系統排程執行,如果一個程序在啟動時並沒有設定nice優先順序,則預設使用0。普通使用者也可以給自己的程序設定nice優先順序,但是範圍只限於0~19。

軟體包安裝

RPM是RedHat Package Manager的簡寫,顧名思義是紅帽軟體包管理器的意思。

安裝引數

-i,--install 安裝軟體

-v,--verbose 列印詳細資訊

-h,--hash 使用“#”號列印安裝進度(需要和-v同時用)

-e,--erase 刪除軟體

-U,--upgrade=<packagefile>+ 升級軟體

--replacepkge 如果軟體已經安裝,則強行安裝

--test 安裝測試,並不實際安裝

--nodeps 忽略軟體包的依賴關係強行安裝

--force 忽略軟體包及檔案的衝突

查詢引數(需要使用-q或--query引數)

-a,--all 查詢所有安裝軟體

-p,--package 查詢某個安裝軟體

-l,--list 列出某個軟體包所包含的所有檔案

-f,--file 查詢某個檔案的所屬包

安裝軟體包:rpm-ivh PACKAGE_NAME-VERSION.rpm

rpm-ivh--test PACKAGE_NAME-VERSION.rpm測試安裝軟體包,不做真實的安裝

rpm-ivh--relocate /=/usr/local/PACKAGE_NAME PACKAGE_NAME-VERSION.rpm 安裝軟體包,並重新定義安裝路徑

rpm-ivh PACKAGE_NAME-VERSION.rpm--force—nodeps強行安裝軟體包,忽略依賴關係

rpm-Uvh PACKAGE_NAME-VERSION.rpm

升級軟體包

rpm-Uvh PACKAGE_NAME-VERSION.rpm--force—nodeps強行升級軟體包,忽略依賴關係

rpm--import RPM-GPG-KEY 匯入簽名

rpm-q PACKAGE_NAME查詢某個包是否已經安裝

rpm-qa查詢系統中所有已安裝的包

rpm-e PACKAGE_NAME刪除軟體包

yum的全稱為Yellow dog Updater,Modified,是一個基於RPM的shell前端包管理器,能夠從指定的伺服器上(一個或多個)自動下載並安裝或更新軟體、刪除軟體。其最大的好處是可以自動解決依賴關係。RedHat和CentOS的版本為5以上的都會預設安裝yum,所以該命令可以直接使用

yum [options] [command] [package]

#以下演示中大寫的單詞是變數

1.安裝操作

yum install PACKAGE #安裝某個包

例:yum install httpd

yum groupinstall GROUP #安裝某個軟體組

例:yum groupinstall "KDE" #安裝KDE桌面

2.升級操作

yum update #更新系統中所有需要更新的包

yum update PACKAGE #更新某個包

例:yum update httpd

yum groupupdate GROUP #更新某個軟體組

例:yum groupupdate "KDE" #升級KDE桌面

yum check-update #檢查當前系統中需要更新的包

3.查詢操作

yum list #顯示軟體源中所有可用的包,一般不用

yum list installed #顯示系統中已經安裝過的包

yum info PACKAGE #顯示某個包的資訊

例:yum info httpd

yum groupinfo GROUP #顯示某個軟體組的資訊

例:yum groupinfo "KDE" #顯示KDE桌面軟體的資訊

yum grouplist #顯示軟體源巨集所有的可用軟體組

4.刪除操作

yum remove PACKAGE #刪除某個包

例:yum remove httpd #刪除httpd包

yum groupremove GROUP #刪除某個軟體組

例:yum groupremove "KDE" #刪除KDE桌面

5.清除操作

yum clean #清除使用yum所生成的快取檔案

常用工具

vi編輯器是Visual Interface的簡稱,是Linux系統中最基本的文字編輯器,其功能與很多圖形編輯器類似,可以進行編輯、查詢、刪除、替換等文字操作。

vi編輯器有3種模式,分別是一般模式、編輯模式、末行指令模式。

sed(stream editor)是一種非互動式的流編輯器,通過多種轉換修改流經它的文字。但是請注意,預設情況下,sed並不會改變原檔案本身,而只是對流經sed命令的文字進行修改,並將修改後的結果列印到標準輸出中(也就是螢幕)。

awk則是基於列的文字處理工具,它的工作方式是按行讀取文字並視為一條記錄,每條記錄以欄位分割成若干欄位,然後輸出各欄位的值。事實上,awk是一種程式語言,其語法異常複雜,所以awk也是一種較難掌握的文字處理工具。本節將使用大量的例子來直接演示awk的常見用法,讓讀者能迅速學會使用

文摘引用地址:

https://www.cnblogs.com/Torres_fans/archive/2010/09/05/1818686.html