參考網站
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)
#所以要小心使用
沒有留言:
張貼留言