非常有用的Linux系統操作命令

程式碼講故事發表於2020-10-24

非常有用的Linux系統操作命令。

系統

# uname -a               # 檢視核心/作業系統/CPU資訊
# head -n 1 /etc/issue   # 檢視作業系統版本
# cat /proc/cpuinfo      # 檢視CPU資訊
# hostname               # 檢視計算機名
# lspci -tv              # 列出所有PCI裝置
# lsusb -tv              # 列出所有USB裝置
# lsmod                  # 列出載入的核心模組
# env                    # 檢視環境變數
資源

# free -m                # 檢視記憶體使用量和交換區使用量
# df -h                  # 檢視各分割槽使用情況
# du -sh <目錄名>        # 檢視指定目錄的大小
# grep MemTotal /proc/meminfo   # 檢視記憶體總量
# grep MemFree /proc/meminfo    # 檢視空閒記憶體量
# uptime                 # 檢視系統執行時間、使用者數、負載
# cat /proc/loadavg      # 檢視系統負載
磁碟和分割槽

# mount | column -t      # 檢視掛接的分割槽狀態
# fdisk -l               # 檢視所有分割槽
# swapon -s              # 檢視所有交換分割槽
# hdparm -i /dev/hda     # 檢視磁碟引數(僅適用於IDE裝置)
# dmesg | grep IDE       # 檢視啟動時IDE裝置檢測狀況
網路

# ifconfig               # 檢視所有網路介面的屬性
# iptables -L            # 檢視防火牆設定
# route -n               # 檢視路由表
# netstat -lntp          # 檢視所有監聽埠
# netstat -antp          # 檢視所有已經建立的連線
# netstat -s             # 檢視網路統計資訊
程式

# ps -ef                 # 檢視所有程式
# top                    # 實時顯示程式狀態
使用者

# w                      # 檢視活動使用者
# id <使用者名稱>            # 檢視指定使用者資訊
# last                   # 檢視使用者登入日誌
# cut -d: -f1 /etc/passwd   # 檢視系統所有使用者
# cut -d: -f1 /etc/group    # 檢視系統所有組
# crontab -l             # 檢視當前使用者的計劃任務
服務

# chkconfig --list       # 列出所有系統服務
# chkconfig --list | grep on    # 列出所有啟動的系統服務
程式

# rpm -qa                # 檢視所有安裝的軟體包
 

 

RPM

    在Linux 作業系統中,有一個系統軟體包,它的功能類似於Windows裡面的“新增/刪除程式”,
    但是功能又比“新增/刪除程式”強很多,它就是 Red Hat Package Manager(簡稱RPM)。
    此工具包最先是由Red Hat公司推出的,後來被其他Linux開發商所借用。
    由於它為Linux使用者省去了很多時間,所以被廣泛應用於在Linux下安裝、刪除軟體。
    下面就介紹一下它的具體使用方法。

1.我們得到一個新軟體,在安裝之前,一般都要先檢視一下這個軟體包裡有什麼內容,
假設這個檔案是:
Linux-1.4-6.i368.rpm,

我們可以用這條命令檢視:
rpm -qpi Linux-1.4-6.i368.rpm

系統將會列出這個軟體包的詳細資料,包括含有多少個檔案、各檔名稱、檔案大小、建立時間、編譯日期等資訊。

2.上面列出的所有檔案在安裝時不一定全部安裝,就像Windows下程式的安裝方式分為典型、完全、自定義一樣,
Linux也會讓你選擇安裝方式,此時我們可以用下面這條命令檢視軟體包將會在系統裡安裝哪些部分,
以方便我們的選擇:

rpm -qpl Linux-1.4-6.i368.rpm

3. 選擇安裝方式後,開始安裝。我們可以用rpm-ivh Linux-1.4-6.i368.rpm命令安裝此軟體。
在安裝過程中,若系統提示此軟體已安裝過或因其他原因無法繼續安裝,但若我們確實想執行安裝命令,
可以在 -ivh後加一引數“-replacepkgs”:

rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm

4.有時我們解除安裝某個安裝過的軟體,只需執行rpm-e <檔名>;命令即可。

5.對低版本軟體進行升級是提高其功能的好辦法,這樣可以省去我們解除安裝後再安裝新軟體的麻煩,要升級某個軟體,
只須執行如下命令:rpm -uvh <檔名>;,注意:此時的檔名必須是要升級軟體的升級補丁

6. 另外一個安裝軟體的方法可謂是Linux的獨到之處,同時也是RMP強大功能的一個表現:通過FTP站點直接線上安裝軟體。
當找到含有你所需軟體的站點並 與此網站連線後,執行下面的命令即可實現線上安裝,
譬如線上安裝Linux-1.4-6.i368.rpm,可以用命令:

rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm

7. 在我們使用電腦過程中,難免會有誤操作,若我們誤刪了幾個檔案而影響了系統的效能時,
怎樣查詢到底少了哪些檔案呢?RPM軟體包提供了一個查詢損壞檔案的 功能,
執行此命令:rpm -Va即可,Linux將為你列出所有損壞的檔案。
你可以通過Linux的安裝光碟進行修復。

8.Linux系統中檔案繁多,在使用過程中,難免會碰到我們不認識的檔案,
在Windows下我們可以用“開始/查詢”選單快速判斷某個檔案屬於哪個資料夾,
在Linux中,下面這條命令列可以幫助我們快速判定某個檔案屬於哪個軟體包:

rpm -qf <檔名>;

9.當每個軟體包安裝在Linux系統後,安裝檔案都會到RPM資料庫中“報到”,所以,我們要查詢某個已安裝軟體的屬性時,
只需到此資料庫中查詢即可。注意:此時的查詢命令不同於1和8介紹的查詢,這種方法只適用於已安裝過的軟體包!
命令格式:
rpm -引數 <檔名>;

APT-GET

apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後執行該命令。
此外您需要定期執行這一命令以確保您的軟體包列表是最新的。 
apt-get install packagename——安裝一個新軟體包(參見下文的aptitude) 
apt-get remove packagename——解除安裝一個已安裝的軟體包(保留配置檔案) 
apt-get --purge remove packagename——解除安裝一個已安裝的軟體包(刪除配置檔案) 
dpkg --force-all --purge packagename 有些軟體很難解除安裝,而且還阻止了別的軟體的應用,就可以用這個,不過有點冒險。 
apt-get autoclean apt會把已裝或已卸的軟體都備份在硬碟上,所以如果需要空間的話,
可以讓這個命令來刪除你已經刪掉的軟體 
apt-get clean 這個命令會把安裝的軟體的備份也刪除,不過這樣不會影響軟體的使用的。 
apt-get upgrade——更新所有已安裝的軟體包 
apt-get dist-upgrade——將系統升級到新版本 
apt-cache search string——在軟體包列表中搜尋字串 
dpkg -l package-name-pattern——列出所有與模式相匹配的軟體包。
如果您不知道軟體包的全名,您可以使用“*package-name-pattern*”。 
aptitude——詳細檢視已安裝或可用的軟體包。與apt-get類似,
aptitude可以通過命令列方式呼叫,但僅限於某些命令——最常見的有安裝和解除安裝命令。
由於aptitude比apt-get瞭解更多資訊,可以說它更適合用來進行安裝和解除安裝。 
apt-cache showpkg pkgs——顯示軟體包資訊。 
apt-cache dumpavail——列印可用軟體包列表。 
apt-cache show pkgs——顯示軟體包記錄,類似於dpkg –print-avail。 
apt-cache pkgnames——列印軟體包列表中所有軟體包的名稱。 
dpkg -S file——這個檔案屬於哪個已安裝軟體包。 
dpkg -L package——列出軟體包中的所有檔案。 
apt-file search filename——查詢包含特定檔案的軟體包(不一定是已安裝的),這些檔案的檔名中含有指定的字串。
apt-file是一個獨立的軟體包。您必須 先使用apt-get install來安裝它,然後執行apt-file update。
如果apt-file search filename輸出的內容太多,您可以嘗試
使用apt-file search filename | grep -w filename
(只顯示指定字串作為完整的單詞出現在其中的那些檔名)或者類似方法,
例如:apt-file search filename | grep /bin/
(只顯示位於諸如/bin或/usr/bin這些資料夾中的檔案,如果您要查詢的是某個特定的執行檔案的話,這樣做是有幫助的)

linux界兩大主流:RPM和DPKG
Linux 開發商先在固定的硬體平臺與作業系統平臺上面將需要安裝或升級的軟體編譯好, 然後將這個軟體的所有相關檔案打包成為一個特殊格式的檔案,在這個軟體檔案內還包含了預先偵測系統與相依軟體的指令碼, 並提供記載該軟體提供的所有檔案資訊等。最終將這個軟體檔案釋出。使用者端取得這個檔案後,只要透過特定的命令來安裝, 那麼該軟體檔案就會依照內部的指令碼來偵測相依的前驅軟體是否存在,若安裝的環境符合需求,那就會開始安裝, 安裝完成後還會將該軟體的資訊寫入軟體管理機制中,以達成未來可以進行升級、移除等動作。

目前在 Linux 界軟體安裝方式最常見的有兩種,分別是:

DPKG:
這個機制最早是由 Debian Linux 社群所開發出來的,透過 dpkg 的機制, Debian 提供的軟體就能夠簡單的安裝起來,同時還能提供安裝後的軟體資訊,實在非常不錯。 只要是衍生於 Debian 的其他 Linux distributions 大多使用 dpkg 這個機制來管理軟體的, 包括 B2D, Ubuntu 等等。
RPM:
這個機制最早是由 Red Hat 這家公司開發出來的,後來實在很好用,因此很多 distributions 就使用這個機制來作為軟體安裝的管理方式。包括 Fedora, CentOS, SuSE 等等知名的開發商都是用這。
目前新的 Linux 開發商都有提供『線上升級』機制,透過這個機制, 原版光碟就只有第一次安裝時需要用到而已,其他時候只要有網路,你就能夠取得原本開發商所提供的任何軟體了呢! 在 dpkg 管理機制上就開發出 APT 的線上升級機制,RPM 則依開發商的不同,有 Red Hat 系統的 yum , SuSE 系統的 Yast Online Update (YOU)。

distribution 代表 軟體管理機制 使用命令 線上升級機制(命令)
Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
Debian/Ubuntu DPKG dpkg APT (apt-get)
Linux換源
因為線上安裝需要在伺服器上下載需要軟體和依賴關係檔案,所以下載的速度很影響使用體驗。一般來說,Linux預設的源安裝和更新速度很慢,所以安裝好系統一般會選擇換源。

個人常用的源:

清華源:https://mirrors.tuna.tsinghua.edu.cn/

163源:http://mirrors.163.com/

舉例在Ubuntu16.04和Centos7上如何換源

在Ubuntu上更換清華源:
Ubuntu 16.04的軟體源配置檔案是 /etc/apt/sources.list。將系統自帶的該檔案做個備份,將該檔案替換為下面內容,即可使用 TUNA 的軟體源映象。(其他版本sourcelist 參看 網頁)
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
先備份在編輯

mv /etc/apt/sources.list /etc/apt/sources.list.bakup
sudo vim /etc/apt/sources.list

# 預設註釋了原始碼映象以提高 apt update 速度,如有需要可自行取消註釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 預釋出軟體源,不建議啟用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

訪問源列表裡的每個網址,並讀取軟體列表,然後儲存在本地電腦。使用update命令更新。

sudo apt-get update

在Centos上更換163源
Centos7的原始檔是/etc/yum.repos.d/CentOS-Base.repo。同理先備份,然後再替換檔案即可。

首先備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

再下載Centos,並且將其改成預設原始檔。

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo

執行命令生成快取

yum clean all
yum makecache

關於update和upgrade
在Ubuntu下

sudo apt-get update

這個命令,會訪問源列表裡的每個網址,並讀取軟體列表,然後儲存在本地電腦。我們在新立得軟體包管理器裡看到的軟體列表,都是通過update命令更新的。

sudo apt-get upgrade

這個命令,會把本地已安裝的軟體,與剛下載的軟體列表裡對應軟體進行對比,如果發現已安裝的軟體版本太低,就會提示你更新。如果源裡面有系統更新,直接給你把系統升級。有網友表示會導致原來軟體無法使用。

在Centos下

yum makecache

等同於 sudo apt-get update

yum -y update

升級所有包,改變軟體設定和系統設定,系統版本核心都升級。

yum -y upgrade

升級所有包,不改變軟體設定和系統設定,系統版本升級,核心不改變。


linux 軟連線的使用
軟連線是linux中一個常用命令,它的功能是為某一個檔案在另外一個位置建立一個同不的連結。

具體用法是:ln -s 原始檔 目標檔案。

當 我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在其它的 目錄下用ln命令連結(link)就可以,不必重複的佔用磁碟空間。

例如:

ln -s /usr/local/mysql/bin/mysql /usr/bin
這樣我們就對/usr/bin目錄下的mysql命令建立了軟連線

【硬連線】
硬連線指通過索引節點來進行連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

【軟連線】
另外一種連線稱之為符號連線(Symbolic Link),也叫軟連線。軟連結檔案有類似於Windows的快捷方式。它實際上是一個特殊的檔案。在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。

使用方式

建立軟連結

ln -s [原始檔或目錄] [目標檔案或目錄]

例:

當前路徑建立test 引向/var/www/test 資料夾

ln –s /var/www/test test
建立/var/test 引向/var/www/test 資料夾

ln –s /var/www/test /var/test
刪除軟連結

和刪除普通的檔案是一樣的,刪除都是使用rm來進行操作

例:

刪除test

rm –rf test
修改軟連結

ln –snf [新的原始檔或目錄] [目標檔案或目錄]

這將會修改原有的連結地址為新的地址

例如:

建立一個軟連結

ln –s /var/www/test /var/test
修改指向的新路徑

ln –snf /var/www/test1 /var/test
常用引數:

-f : 鏈結時先將與 dist 同檔名的檔案刪除
  -d : 允許系統管理者硬鏈結自己的目錄
  -i : 在刪除與 dist 同檔名的檔案時先進行詢問
  -n : 在進行軟連結時,將 dist 視為一般的檔案
  -s : 進行軟鏈結(symbolic link)
  -v : 在連結之前顯示其檔名
  -b : 將在鏈結時會被覆寫或刪除的檔案進行備份
  -S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
  -V METHOD : 指定備份的方式
  --help : 顯示輔助說明
  --version : 顯示版本

相關文章