2011/09/14

Linux 常用指令

參考網站

鳥哥
Linux 指令集
Tsung’s Blog

chkconfig | cp | df | dpkg | du | find | ln | locate | ls | netstat | rm | rpm | tar | top | yum

chkconfig(管理系統服務預設開機啟動與否)

chkconfig

參數說明

  • chkconfig --list [服務名稱]
  • chkconfig [–level [0123456]] [服務名稱] [on|off]

範例

範例一:列出目前系統上面所有被 chkconfig 管理的服務
chkconfig --list | more
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
yum-updatesd    0:off   1:off   2:on    3:on    4:on    5:on    6:off

xinetd based services:  <==底下為 super daemon 所管理的服務
        chargen-dgram:  off
        chargen-stream: off

# 你可以發現上面的表格有分為兩個區塊,一個具有 1, 2, 3 等數字,一個則被 xinetd 
# 管理。沒錯!從這裡我們就能夠發現服務有 stand alone 與 super daemon 之分。

範例二:顯示出目前在 run level 3 為啟動的服務
chkconfig --list | grep '3:on'

範例三:讓 atd 這個服務在 run level 為 3, 4, 5 時啟動:
chkconfig --level 345 atd on

範例四:先觀察 httpd ,再觀察預設有無啟動,之後以 chkconfig 設定為預設啟動
/etc/init.d/httpd status
httpd 已停止  <==根本就沒有啟動

chkconfig --list httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
# 原因是預設並沒有啟動啊!

chkconfig httpd on; chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 已經設定為『開機預設啟動』了,再來觀察看看到底該服務啟動沒?

/etc/init.d/httpd status
httpd 已停止
# 哈!竟然還是沒有啟動喔!怎麼會這樣啊?因為要重新開機或者手動啟動

範例五:查閱 rsync 是否啟動,若要將其關閉該如何處理?
/etc/init.d/rsync status
-bash: /etc/init.d/rsync: No such file or directory
# rsync 是 super daemon 管理的,所以當然不可以使用 stand alone 的啟動方式來觀察

netstat -tlup | grep rsync
tcp  0 0 192.168.201.110:rsync  *:*     LISTEN     4618/xinetd
tcp  0 0 www.vbird.tsai:rsync   *:*     LISTEN     4618/xinetd

chkconfig --list rsync
rsync           on   <==預設啟動呢!將它處理成預設不啟動吧

chkconfig rsync off; chkconfig --list rsync
rsync           off  <==看吧!關閉了喔!現在來處理一下 super daemon 的東東!

/etc/init.d/xinetd restart; netstat -tlup | grep rsync

cp(複製檔案)

cp -參數 來源檔 (或目錄) 目的檔 (或目錄)

參數說明

  • a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
  • d:若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身;
  • f:為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次;
  • i:若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
  • l:進行硬式連結(hard link)的連結檔建立,而非複製檔案本身;
  • p:連同檔案的屬性一起複製過去,而非使用預設屬性(備份常用);
  • r:遞迴持續複製,用於目錄的複製行為;(常用)
  • s:複製成為符號連結檔 (symbolic link),亦即『捷徑』檔案;
  • u:若 destination 比 source 舊才更新 destination !

範例

範例一:用root身份,將家目錄下的 .bashrc 複製到 /tmp 下,並更名為 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==n不覆蓋,y為覆蓋
# 重複作兩次動作,由於 /tmp 底下已經存在 bashrc 了,加上 -i 選項後,
# 則在覆蓋前會詢問使用者是否確定!可以按下 n 或者 y 來二次確認呢!

範例二:變換目錄到/tmp,並將/var/log/wtmp複製到/tmp且觀察屬性:
[root@www ~]# cd /tmp
[root@www tmp]# cp /var/log/wtmp . <==想要複製到目前的目錄,最後的 . 不要忘
[root@www tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp
# 注意上面的特殊字體,在不加任何選項的情況下,檔案的某些屬性/權限會改變;
# 這是個很重要的特性!要注意喔!還有,連檔案建立的時間也不一樣了!
# 那如果你想要將檔案的所有特性都一起複製過來該怎辦?可以加上 -a 喔!如下所示:

[root@www tmp]# cp -a /var/log/wtmp wtmp_2
[root@www tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2
# 瞭了吧!整個資料特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性!

範例三:複製 /etc/ 這個目錄下的所有內容到 /tmp 底下
[root@www tmp]# cp /etc/ /tmp
cp: omitting directory `/etc'   <== 如果是目錄則不能直接複製,要加上 -r 的選項
[root@www tmp]# cp -r /etc/ /tmp
# 還是要再次的強調喔! -r 是可以複製目錄,但是,檔案與目錄的權限可能會被改變
# 所以,也可以利用『 cp -a /etc /tmp 』來下達指令喔!尤其是在備份的情況下!

範例四:將範例一複製的 bashrc 建立一個連結檔 (symbolic link)
[root@www tmp]# ls -l bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:02 bashrc  <==先觀察一下檔案情況
[root@www tmp]# cp -s bashrc bashrc_slink
[root@www tmp]# cp -l bashrc bashrc_hlink
[root@www tmp]# ls -l bashrc*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc  <==與原始檔案不太一樣了!
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc_hlink
lrwxrwxrwx 1 root root   6 Sep 24 14:20 bashrc_slink -> bashrc

範例五:若 ~/.bashrc 比 /tmp/bashrc 新才複製過來
[root@www tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性,是在目標檔案與來源檔案有差異時,才會複製的。
# 所以,比較常被用於『備份』的工作當中喔! ^_^

範例六:將範例四造成的 bashrc_slink 複製成為 bashrc_slink_1 與bashrc_slink_2
[root@www tmp]# cp bashrc_slink bashrc_slink_1
[root@www tmp]# cp -d bashrc_slink bashrc_slink_2
[root@www tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc
lrwxrwxrwx 1 root root   6 Sep 24 14:20 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:32 bashrc_slink_1       <==與原始檔案相同
lrwxrwxrwx 1 root root   6 Sep 24 14:33 bashrc_slink_2 -> bashrc <==是連結檔!
# 這個例子也是很有趣喔!原本複製的是連結檔,但是卻將連結檔的實際檔案複製過來了
# 也就是說,如果沒有加上任何選項時,cp複製的是原始檔案,而非連結檔的屬性!
# 若要複製連結檔的屬性,就得要使用 -d 的選項了!如 bashrc_slink_2 所示。

範例七:將家目錄的 .bashrc 及 .bash_history 複製到 /tmp 底下
[root@www tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個資料一次複製到同一個目錄去!最後面一定是目錄!

df(查詢硬碟使用量)

df - 參數 目的

參數說明

  • a:顯示全部的檔案系統和各分割區的磁碟使用情形
  • i:顯示i -nodes的使用量
  • k:大小用k來表示 (預設值)
  • t:顯示某一個檔案系統的所有分割區磁碟使用量
  • x:顯示不是某一個檔案系統的所有分割區磁碟使用量
  • T:顯示每個分割區所屬的檔案系統名稱
  • H:以 M=1000K 取代 M=1024K 的進位方式

範例

df /etc/
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                     147310884   1926800 137780272   2% /
#df 指令很單純,只要接上目的就可以顯示該目的的總容量

df -h /etc/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      141G  1.9G  132G   2% /
#我最常應該就是這樣下,容量顯示比較友善

dpkg(管理系統套件)

dpkg -參數

參數說明

  • i:安裝套件
  • r:刪除套件
  • P:刪除套件(套件括配置文件)
  • L:列出與該套件關聯的文件
  • l:顯示該套件的版本
  • unpack:解開 deb 套件的內容
  • S:搜索所屬的套件內容
  • l:列出當前已安裝的套件
  • c:列出 deb 套件的內容
  • configure:配置套件

範例

範例一:利用 dpkg 查詢跟 vim 有關的套件
dpkg -l | grep vim
ii  vim                                    2:7.3.429-2ubuntu2.1                    Vi IMproved - enhanced vi editor
ii  vim-addon-manager                      0.4.4                                   manager of addons for the Vim editor
ii  vim-common                             2:7.3.429-2ubuntu2.1                    Vi IMproved - Common files
ii  vim-doc                                2:7.3.429-2ubuntu2.1                    Vi IMproved - HTML documentation
ii  vim-runtime                            2:7.3.429-2ubuntu2.1                    Vi IMproved - Runtime files
ii  vim-scripts                            20110813                                plugins for vim, adding bells and whistles
ii  vim-syntax-gtk                         20110314-1                              Syntax files to highlight GTK+ keywords in vim
ii  vim-tiny                               2:7.3.429-2ubuntu2.1                    Vi IMproved - enhanced vi editor - compact version

範例二:移除 vim 套件
dpkg -r vim

du(查詢檔案或目錄的磁碟使用空間)

du - 參數 目的

參數說明

  • a:顯示全部目錄和其次目錄下的每個檔案所佔的磁碟空間
  • b:大小用bytes來表示 (預設值為k bytes)
  • c:最後再加上總計 (預設值)
  • l:計算所有檔案大小
  • s:只顯示各檔案大小的總合
  • x:只計算同屬同一個檔案系統的檔案
  • L:計算所有的檔案大小
  • h:以人們較易讀的容量格式 (G/M) 顯示

範例

du -h
12K ./pm
8.0K    ./conman
1.6M    ./nginx
8.0K    ./ppp
16K ./mail
36K ./prelink
20K ./cups
8.0K    ./conman.old
9.5M    ./audit
34M .
#與 df 不一樣的是,du 這個指令其實會直接到檔案系統內去搜尋所有的檔案資料

du -ah
#這樣下會列出該目錄下所有的檔案以及目錄
#所以建議搭配 grep 或者是 more 來搜尋比較好

find(找尋檔案、目錄)

find 【起始目錄】 -name 【欲找的檔名】 -print

參數說明

  • mtime n :n 為數字,意義為在 n 天之前的『一天之內』被更動過內容的檔案;
  • mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的檔案檔名;
  • mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的檔案檔名。
  • newer file :file 為一個存在的檔案,列出比 file 還要新的檔案檔名
  • uid n :n 為數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在 /etc/passwd 裡面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
  • gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在 /etc/group
  • user name :name 為使用者帳號名稱喔!例如 dmtsai
  • group name:name 為群組名稱喔,例如 users ;
  • nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!
  • nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!當你自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者,這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
  • name filename:搜尋檔案名稱為 filename 的檔案;
  • size [±]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有: c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 還要大的檔案,就是『 -size +50k 』
  • type TYPE:搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), 及 FIFO § 等屬性。
  • perm mode :搜尋檔案權限『剛好等於』 mode 的檔案,這個 mode 為類似 chmod 的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
  • perm -mode :搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案,舉例來說,我們要搜尋 -rwxr–r-- ,亦即 0744 的檔案,使用 -perm -0744,當一個檔案的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr–r-- 的屬性了。
  • perm +mode :搜尋檔案權限『包含任一 mode 的權限』的檔案,舉例來說,我們搜尋 -rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性為 -rw------- 也會被列出來,因為他有 -rw… 的屬性存在!

範例

範例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出
find / -mtime 0
# 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,
# 有變動過內容的檔案都會被列出來!那如果是三天前的 24 小時內?
# find / -mtime 3 有變動過的檔案都被列出的意思!

範例二:尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
find /etc -newer /etc/passwd
# -newer 用在分辨兩個檔案之間的新舊關係是很有用的!

範例三:搜尋 /home 底下屬於 vbird 的檔案
find /home -user vbird
# 這個東西也很有用的~當我們要找出任何一個使用者在系統當中的所有檔案時,
# 就可以利用這個指令將屬於某個使用者的所有檔案都找出來喔!

範例四:搜尋系統中不屬於任何人的檔案
find / -nouser
# 透過這個指令,可以輕易的就找出那些不太正常的檔案。
# 如果有找到不屬於系統任何人的檔案時,不要太緊張,
# 那有時候是正常的~尤其是你曾經以原始碼自行編譯軟體時。

範例五:找出檔名為 passwd 這個檔案
find / -name passwd
# 利用這個 -name 可以搜尋檔名啊!

範例六:找出 /var 目錄下,檔案類型為 Socket 的檔名有哪些?
find /var -type s
# 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的檔案,
# 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找!

範例七:搜尋檔案當中含有 SGID 或 SUID 或 SBIT 的屬性
find / -perm +7000 
# 所謂的 7000 就是 ---s--s--t ,那麼只要含有 s 或 t 的就列出,
# 所以當然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三個權限,
# 因此,就是 +7000 ~瞭乎?

範例八:將上個範例找到的檔案使用 ls -l 列出來~
find / -perm +7000 -exec ls -l {} \;
# 注意到,那個 -exec 後面的 ls -l 就是額外的指令,指令不支援命令別名,
# 所以僅能使用 ls -l 不可以使用 ll 喔!注意注意!

範例九:找出系統中,大於 1MB 的檔案
find / -size +1000k
# 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,
# 不過,俺卻試不出來這個功能~所以,目前應該是僅支援到 c 與 k 吧!
</pre>

* -mtime 搜尋檔案的修改時間()
* -mmin 搜尋檔案的修改時間(分鐘)
* -ctime 搜尋檔案的建立時間()
* -cmin 搜尋檔案的建立時間(分鐘)
* -atime 搜尋檔案的最後開啟時間()
* -amin 搜尋檔案的最後開啟時間(分鐘)

<pre class="brush: bash">
$ find ./ -mtime 3 # 在當前目錄下搜尋3天時修改的檔案
$ find ./ -mtime +3 # 在當前目錄下搜尋3天前修改的檔案
$ find ./ -mtime -3 # 在當前目錄下搜尋3天內修改的檔案

ln(製作檔案捷徑)

ln -參數 已存在的檔案 要連結成的檔案

參數說明

  • 不加:預設值;只限於相同檔案系統間的連結,且不能連結目錄
  • s:可作不同檔案系統間的連結,且能連結目錄
  • f:如果要連結成的檔案已存在,則砍掉這個已存在的檔案
  • n:如果要連結成的檔案已存在,則停止連結,不會砍掉該檔案

範例

ln -s /home/a/b tob
#這樣將會在你當下的目錄建一個叫 tob 的捷徑,連結到 /home/a/b/

lrwxrwxrwx 1 root root   10 Sep 14 17:51 tob -> /home/a/b/
#看起來像這樣子

rm -f tob
#要刪除此捷徑只要 rm 掉即可,記得不可以加 /

locate(找尋檔案)

locate -參數 檔名

參數說明

  • i:忽略大小寫的差異
  • r:後面可接正規表示法的顯示方式

範例

找出系統中所有與 passwd 相關的檔名
locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd

updatedb
#根據 /etc/updatedb.conf 的設定去搜尋系統硬碟內的檔名,並更新 /var/lib/mlocate 內的資料庫檔案;

ls(列出檔案資訊)

ls - 參數

參數說明

  • l:列出詳細的檔案資訊
  • a:列出全部檔案包括隱藏檔
  • R:遞回列出檔案及子目錄其下的所有子目錄和檔案
  • x:以多欄方式列出,字母順序由左而右
  • i:以i -node來列出,會列出每個檔案在磁碟中的編號
  • m:列出檔案時以逗號 , 來分隔
  • n:把群組及檔案擁有者名稱轉成數字代碼
  • t:依檔案的修改時間排序 (由新而舊)
  • u:依檔案上次的存取時間排序 (需與t配合)
  • s:檔案的大小以區塊為單位 (每個區塊block = 512 bytes)
  • o:用顏色來顯示各種類別的檔案
  • r:以相反的英文字母順序顯示
  • d:只顯示目錄訊息而非目錄下的檔案
  • h:將檔案容量以人類較易讀的方式(例如 GB, KB 等等)列出來

範例

ls
abrt               depmod.d                 idmapd.conf
acpi               dhcp                     init       
adjtime            DIR_COLORS               init.d     
aliases            DIR_COLORS.256color      inittab    
#直接會列出該目錄的檔案以及目錄

ls -l
total 1812
drwxr-xr-x.  3 root root   4096 Sep  3 04:30 abrt
drwxr-xr-x.  4 root root   4096 Sep  3 04:43 acpi
-rw-r--r--.  1 root root     45 Sep 13 10:59 adjtime
-rw-r--r--.  1 root root   1512 Jan 12  2010 aliases
-rw-r--r--.  1 root root  12288 Sep  3 11:17 aliases.db
drwxr-xr-x.  2 root root   4096 Sep  3 04:31 alsa
drwxr-xr-x.  2 root root   4096 Sep  3 04:49 alternatives
#這應該是最常用的參數,可以直列出詳細內容

ls -lh
total 1.8M
drwxr-xr-x.  3 root root 4.0K Sep  3 04:30 abrt
drwxr-xr-x.  4 root root 4.0K Sep  3 04:43 acpi
-rw-r--r--.  1 root root   45 Sep 13 10:59 adjtime
-rw-r--r--.  1 root root 1.5K Jan 12  2010 aliases
-rw-r--r--.  1 root root  12K Sep  3 11:17 aliases.db
drwxr-xr-x.  2 root root 4.0K Sep  3 04:31 alsa
drwxr-xr-x.  2 root root 4.0K Sep  3 04:49 alternatives
#可以讓檔案大小用比較 friendly 的方式顯示

ll
#因為 ls -l 太常用了,所以很多系統都會有 ll 這個功能
#ll = ls -l,也可以直接這樣下 ll -h = ls -lh

ls -l | grep pa
drwxr-xr-x.  2 root root   4096 Sep  3 04:56 pam.d
drwxr-xr-x.  3 root root   4096 Sep  3 04:30 pango
-rw-r--r--.  1 root root   1384 Sep  4 15:29 passwd
-rw-r--r--.  1 root root   1332 Sep  4 15:19 passwd-
-rw-r--r--.  1 root root    220 Oct 14  2008 quotagrpadmins
#ls 也可以搭配 grep

netstat(查詢網路目前狀況)

netstat - 參數 目的

參數說明

  • a:全部列出
  • c:每隔幾秒鐘重新列一遍
  • i:界面狀態
  • n:以網路IP位址代替名稱列出網路連接情形
  • o:列出時間狀態
  • r:列出網路的路徑表
  • t:列出tcp協定的連接情形
  • u:列出udp協定的連接情形
  • v:列出版本
  • w:列出raw程序連結的資訊
  • x:列出有關unix網域socket的資訊

範例

netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2619/hpiod          
tcp        0      0 0.0.0.0:838                 0.0.0.0:*                   LISTEN      2352/rpc.statd      
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2744/mysqld
#這是我最常用的格式

rm(刪除檔案或目錄)

ls - 參數 目的

參數說明

  • r:刪除其下的檔案及目錄(類似 dos 之 deltree)
  • i:刪除時提出警告
  • f:刪除時不提出警告,也就是強制刪除
  • d:刪除目錄,即使該目錄並非空目錄

範例

rm -f a*
#強制刪除字母為 a 開頭的檔案
#-f 是會直接殺個爽,所以你最好確定你要刪的目的是正確的

rm a/
#假設你直接刪除 a 這個資料夾,會出現失敗訊息

rm -rf a/
#必須加上 -r 的參數,這樣會把 a 資料夾下的東西清光光

rm -rf *
#此指令會將你當下目錄「以下」的檔案或目錄清光,請小心使用

rpm(安裝軟體)

rpm - 參數 檔案

參數說明

  • -i:install 的意思
  • -v:察看更細部的安裝資訊畫面
  • -h:以安裝資訊列顯示安裝進度

範例

範例一:安裝 rp-pppoe-3.5-32.1.i386.rpm
[root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
Preparing...     ####################################### [100%]
   1:rp-pppoe    ####################################### [100%] 

範例二、一口氣安裝兩個以上的軟體時:
rpm -ivh a.i386.rpm b.i386.rpm *.rpm
# 後面直接接上許多的軟體檔案!

範例三、直接由網路上面的某個檔案安裝,以網址來安裝:
rpm -ivh http://website.name/path/pkgname.rpm

範例四、更新軟體
rpm -Uvh ai386.rpm

rpm -qa                              <==已安裝軟體
rpm -q[licdR] 已安裝的軟體名稱       <==已安裝軟體
rpm -qf 存在於系統上面的某個檔名     <==已安裝軟體
rpm -qp[licdR] 未安裝的某個檔案名稱  <==查閱RPM檔案
選項與參數:
查詢已安裝軟體的資訊:
-q  :僅查詢,後面接的軟體名稱是否有安裝;
-qa :列出所有的,已經安裝在本機 Linux 系統上面的所有軟體名稱;
-qi :列出該軟體的詳細資訊 (information),包含開發商、版本與說明等;
-ql :列出該軟體所有的檔案與目錄所在完整檔名 (list);
-qc :列出該軟體的所有設定檔 (找出在 /etc/ 底下的檔名而已)
-qd :列出該軟體的所有說明檔 (找出與 man 有關的檔案而已)
-qR :列出與該軟體有關的相依軟體所含的檔案 (Required 的意思)
-qf :由後面接的檔案名稱,找出該檔案屬於哪一個已安裝的軟體;
查詢某個 RPM 檔案內含有的資訊:
-qp[icdlR]:注意 -qp 後面接的所有參數以上面的說明一致。但用途僅在於找出
        某個 RPM 檔案內的資訊,而非已安裝的軟體資訊!注意!

tar(打包指令)

tar - 參數 文件與目錄

參數說明

  • c:建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename)
  • t:察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了;
  • x:解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開,特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
  • j:透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
  • z:透過 gzip 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.gz
  • v:在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來!
  • f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!
  • C 目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
  • p(小寫) :保留備份資料的原本權限與屬性,常用於備份(-c)重要的設定檔
  • P(大寫) :保留絕對路徑,亦即允許備份資料中含有根目錄存在之意;
  • –exclude=FILE:在壓縮的過程中,不要將 FILE 打包! 此程式不會於「新增/移除程式」或任何地方產生移除連結,若要移除,請將程式所在資料夾全部刪除即可!

範例

範例一:將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
# 特別注意,在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/' from member names'那是關於絕對路徑的特殊設定

範例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?
tar -ztvf /tmp/etc.tar.gz
# 由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時
# 就得要加上 z 這個參數了!這很重要的!

範例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下
cd /usr/local/src
tar -zxvf /tmp/etc.tar.gz
# 在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,
# 我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同喔!

範例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
cd /tmp
tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透過 tar -ztvf 來查閱 tarfile 內的文件名稱,如果單只要一個文件
# 就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!

範例五:將 /etc/ 內的所有文件備份下來,並且保存其權限!
tar -zxvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!

範例六:在 /home 當中,比 2005/06/01 新的文件才備份
tar -N '2005/06/01' -zcvf home.tar.gz /home

範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生文件!
cd /tmp
tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分別代表 standard output, standard input 與管線命令啦!

top(動態觀察程序的變化)

top - 參數

參數說明

  • d:後面可以接秒數,就是整個程序畫面更新的秒數。預設是 5 秒
  • b:以批次的方式執行 top ,還有更多的參數可以使用喔
  • n:與 -b 搭配,意義是,需要進行幾次 top 的輸出結果
  • p:指定某些個 PID 來進行觀察監測而已
  • ?:顯示在 top 當中可以輸入的按鍵指令
  • P:以 CPU 的使用資源排序顯示
  • M:以 Memory 的使用資源排序顯示
  • N:以 PID 來排序喔
  • T:由該 Process 使用的 CPU 時間累積 (TIME+) 排序
  • k:給予某個 PID 一個訊號 (signal)
  • r:給予某個 PID 重新制訂一個 nice 值
  • q:離開 top 軟體的按鍵

範例

top -d 2
top - 17:03:09 up 7 days, 16:16,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  80 total,   1 running,  79 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us,  0.5%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    742664k total,   681672k used,    60992k free,   125336k buffers
Swap:  1020088k total,       28k used,  1020060k free,   311156k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND     
14398 root      15   0  2188 1012  816 R  0.5  0.1   0:00.05 top
    1 root      15   0  2064  616  528 S  0.0  0.1   0:01.38 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
#每兩秒鐘更新一次 top ,觀察整體資訊

top -b -n 2 > /tmp/top.txt
#這樣一來,嘿嘿!就可以將 top 的資訊存到 /tmp/top.txt 檔案中了

yum(安裝套件)

yum - 參數 套件

參數說明

  • install:安裝某個套件,後面需要接套件名稱
  • update:升級套件
  • list:列出目前在 yum server 上面有的 RPM 套件
  • info:某個套件的內容,類似 rpm -qi packages 的內容
  • clean:將已將下載到本機的 packages 或 headers 移除
  • remove:移除已經安裝在我們系統的某個套件

範例

yum search php
#在 yum server 上搜尋 php 這個套件
# server 會列出搜尋的結果,如果沒有此套件
#可能要透過 rpm 或是 tarball 安裝,或者是更新一下 yum server

yum install php
#如果有找到你要的套件,便可執行 install 這個參數

yum -y install php
#安裝過程中可能會有多次確認的互動,加上 -y 這個參數便可以跳過

yum clean php
#安裝過程會下載檔案暫存,可以使用 clean 去清除

yum clean all
#clean all 是比較常用的

yum remove php
#移除 php 這個套件

yum list installed
#可以列出安裝了哪些套件

yum list installed | grep php
#可搭配 grep 做篩選

yum list updates
#可以列出所有已經有更新檔的套件,一樣可以使用 grep 篩選

yum update php
#可以單獨更新 php 這個套件

yum -y update
#直接更新所有可以更新的套件

yum upgrade
#用來升級套件,功能和 yum update 類似,不同處在於
#yum upgrade 會連一些過舊即將洮汰的套件也一起升級
#比較類似在做大規模的版本升級動作
#(如從 xxx Linux 8.0 升級到 xxx Linux 9)
#所以要小心使用

沒有留言:

張貼留言