最近想架一台server來玩 選擇了Debain做為系統
Debain的系統很乾淨 剛裝完很多東西都沒有 需要自動安裝
最常用的ssh也是 這時就需要安裝囉~~~
Debian的線上套件管理是使用 apt這隻程式
首先 先來找套件
xiang-debian:~# apt-cache search ssh
openssh-client - Secure shell client, an rlogin/rsh/rcp replacement
openssh-server - Secure shell server, an rshd replacement
上面的指令是搜尋有ssh的套件 當然 會列出很多 這裡全部省略 只要注意上面這兩個
openssh-client 就是ssh用戶端的意思,有安裝這個才可以登入別人的ssh 主機
openssh-server 就是ssh伺服器的意思,安裝完就可以讓別人使用ssh登入你的主機
系統預設會安裝client不會安裝serer,所以為了能方便之後的作業可以使用ssh來登入,現在就要安裝openssh-server這個套件
xiang-debian:~# apt-get install openssh-server
apt的優點就是會自動把相關的套件都安裝好,安裝過程只要確認一下就好了
之後再到 /etc/init.d下執行
./ssh start 讓他跑起來後就能用ssh登入了
2009年1月12日 星期一
2008年9月4日 星期四
2008年8月4日 星期一
Fedora9 輸入法安裝
最近安裝 Fedora 9 64bit 準備架站玩玩
用的是之前要跑 VM Lab那台 因為有8GB的ram 所以當然要跑64bit爽一下
除了架站 一些工作也會在上面做
結果 Fedora 9 預設是沒有安裝輸入法的 於是乎上網找了一下
請在終端機輸入
yum install scim-lang-chinese
大約會下載25MB的套件 跑完 重開機後就有中文輸入法了
用的是之前要跑 VM Lab那台 因為有8GB的ram 所以當然要跑64bit爽一下
除了架站 一些工作也會在上面做
結果 Fedora 9 預設是沒有安裝輸入法的 於是乎上網找了一下
請在終端機輸入
yum install scim-lang-chinese
大約會下載25MB的套件 跑完 重開機後就有中文輸入法了
2008年7月27日 星期日
2008年5月29日 星期四
Process Management
程序
在Linux底下,每觸發一個事件(通常是執行一個指令或程式),系統會將他設定成一個程序並給予一個ID,稱為PID,管理者就可以藉由這個PID來管理程序。另外系統也會依照觸發程序的使用者所擁有的權限給予程序適當的權限。
父程序與子程序
當一個程序又去觸發另一個程序時,第一個程序為父程序,新觸發的程序就稱為子程序。像我們所登入系統後會得到一個bash的shell,我們可以在這個bash而執行許多指令,假設我們在這個shell執行了/usr/bin/less這個指令,這個less的PID就稱為子程序,而bash就是他的父程序。
關於子程序與父程序的關係,可以使用pstree這支指令去觀察:
pstree 參數
-p 列出各程序的PID
-u 列出各程序的所屬帳號名稱
程序的觀察
前面所介紹的pstree指令,僅能列出子程序與父程序的關係,並不會顯示出程序的相關資訊,若要或得程序的詳細資訊可以使用ps這隻程式,他提供了程序的狀態、CPU、記憶體的使用情況等等:
ps 參數
在不加任何參數直接執行 ps時,只會列出使用者個人、有連結終端機的程序,如下:
[root@localhost tmp]# ps
PID TTY TIME CMD
2591 pts/1 00:00:00 bash
30891 pts/1 00:00:00 ps
然而只列出這些是不夠的,我們可以加入ㄧ些參數得到更多的資料:
a 顯示有連接終端機的所有行程
u 顯示有效使用者相關的程序
x 顯示未連結終端機的所有程序(通常是長期運作的的伺服行程)
l 較長、詳細的格式輸出(顯示nice值)
ps 常搭配 aux這三個參數使用,執行結果如下
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2112 704 ? Ss 08:02 0:01 init [5]
root 2 0.0 0.0 0 0 ? S< 08:02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 08:02 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< 08:02 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:02 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< 08:02 0:00 [events/0]
root 7 0.0 0.0 0 0 ? S< 08:02 0:00 [khelper]
user 該程序的使用者名稱
PID 該程序的PID
%CPU 使用CPU的百分比
%MEM 使用實體記憶體的百分比
VSZ 使用虛擬記憶體的大小
RSS 佔用固定的記憶體大小
TTY 運作的終端機,如果與終端機無關則顯示 ?
STAT 程序狀態,有以下幾種
R 程序執行中
S 程序睡眠中,可被喚醒
T 程序偵測或停止
Z 程序已停止,但父程序無法正常終止他
START 程序觸發時間
TIME 該程序實際使用CPU時間
COMMAND 程序指令名稱
相對於ps的靜態輸出,top提供了動態的輸出,top可以更即時的獲取程序狀態:
top 參數
-d 更新的秒數,預設是五秒更新一次
-b 通常會搭配資料流重導向來將批次的結果輸出成為檔案
-n 指定觀察的次數,常與-b搭配
-p 指定PID
在top執行時可用的快速鍵:
?:顯示可用的快速鍵
P:以CPU的使用率進行排序
M:以記憶體的使用率進行排序
N:以PID進行排序
k:給某PID傳送信號
r:重新設定某PID的nice值
top的執行畫面如下:
top - 14:51:28 up 7:05, 3 users, load average: 0.01, 0.00, 0.00
Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.6%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2075220k total, 571116k used, 1504104k free, 59064k buffers
Swap: 2031608k total, 0k used, 2031608k free, 305772k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2381 root 20 0 143m 61m 15m R 84.2 3.0 1:59.05 nautilus
2088 root 20 0 49148 19m 6016 S 3.9 1.0 0:38.33 Xorg
3372 root 20 0 2360 964 724 R 2.0 0.0 0:00.01 top
1 root 20 0 1948 768 560 S 0.0 0.0 0:01.04 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
7 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
第一行為系統的已啟動時間,線上人數,平均負載:三個數字分別代表1、5、10分鐘
第二行為總程序數,這個例子為,126的程序,2個執行中,124個睡眠,0個已停止,0個zombie程序
第三行為CPU的整體負載
第四行為實體記憶體的使用情形
第五行為虛擬記憶體(swap)的使用情形
接下來的畫面就是各程序的狀態,與ps大致上都相同
程序的執行順序
在Linux系統中,每個程序都會擁有一個優先執行程序的屬性,利用該屬性能讓系統知道哪個程序比較重要需要先執行。當我們執行ps -l或top時會發現有兩個欄位,PRI(top為PR)和NI,這兩個欄位就是用來計算程序的執行順序的:
PRI Priority的縮寫,數值越小越優先執行
NI 系統給予我們可改變執行順序的值,需注意以下幾點:
一般使用者的NI值為0~19
一般使用者僅能調高NI值
一般使用者僅能調整自己的NI值
root的NI值為-20~19
程序執行順序=PRI+NI,我們可以透過修改NI值來決定程序的執行順序,一般來講有兩種修改的方法:
程序執行時就指定NI值(nice)
修改執行中程序的NI值(renice)
nice -n command
-n 調整的NI值
command 欲執行的指令
[root@localhost ~]# nice -n -7 vi&
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
這個例子我設定vi的NI為-7,並在背景執行,並使用ps -l觀察
renice number PID
number 欲設定的NI值
PID 欲設定程序的PID
例:
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
4 R 0 3397 3292 0 80 0 - 1430 - pts/1 00:00:00 ps
延用剛才的範例,我已經將vi的NI設為-7,並得知PID為3387,現在將NI值改成10:
[root@localhost ~]# renice 10 3387
3387: old priority -7, new priority 10
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 90 10 - 1530 signal pts/1 00:00:00 vi
4 R 0 3399 3292 0 80 0 - 1431 - pts/1 00:00:00 ps
NI值真的變成10了!
程序的管理
前面只提到程序的觀察,再來要介紹管理程序的指令
再來介紹 kill這個指令,這個指令可透過傳遞信號來管理程序的執行狀態,kill的語法如下:
kill -single PID
single 傳給程序的信號代碼
PID 該程序的PID
另外 -l參數會列出可用的信號清單
一般常用的信號有:
代碼 名稱 內容
1 SIGHUP 接收到此信號後,程序會重新讀取自己的組態檔,類似重新啟動的功能
2 SIGINT 中斷、停止執行,跟Ctrl+C 有同樣的作用
9 SIGKILL 強制結束程序
15 SIGTERM 以正常程序中止程序
假設我目前有個程序狀態顯示為 Z,而他的 PID為4100,要將他強制結束可以這樣:
[root@localhost ~]# kill -9 4100
要重新啟動的話也只要將信號代碼改成 1就行了:
[root@localhost ~]# kill -1 4100
除了代碼,也可以直接使用信號名稱:
[root@localhost ~]# kill -TERM 2569
另外,若未設定任何參數,kill預設會傳送 SIGTERM(15)
另一個跟 kill有關的是 killall,使用 kill必須要知道程序的PID,而 killall則是要知道程序的指令名稱:
[root@localhost ~]# killall -9 vi
相關參數:
i interactive,互動式,當要刪除時會先詢問使用者
I 忽略大小寫
相關指令
檢視目前記憶體使用狀況
free 參數
-b 以bytes為單位
-k 以Kbytes為單位
-m 以Mbytes為單位
-g 以Gbytes為單位
-t 顯示實體與swap記憶體總量
執行結果如下:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 2026 554 1471 0 58 299
-/+ buffers/cache: 196 1829
Swap: 1983 0 1983
在Linux底下,每觸發一個事件(通常是執行一個指令或程式),系統會將他設定成一個程序並給予一個ID,稱為PID,管理者就可以藉由這個PID來管理程序。另外系統也會依照觸發程序的使用者所擁有的權限給予程序適當的權限。
父程序與子程序
當一個程序又去觸發另一個程序時,第一個程序為父程序,新觸發的程序就稱為子程序。像我們所登入系統後會得到一個bash的shell,我們可以在這個bash而執行許多指令,假設我們在這個shell執行了/usr/bin/less這個指令,這個less的PID就稱為子程序,而bash就是他的父程序。
關於子程序與父程序的關係,可以使用pstree這支指令去觀察:
pstree 參數
-p 列出各程序的PID
-u 列出各程序的所屬帳號名稱
程序的觀察
前面所介紹的pstree指令,僅能列出子程序與父程序的關係,並不會顯示出程序的相關資訊,若要或得程序的詳細資訊可以使用ps這隻程式,他提供了程序的狀態、CPU、記憶體的使用情況等等:
ps 參數
在不加任何參數直接執行 ps時,只會列出使用者個人、有連結終端機的程序,如下:
[root@localhost tmp]# ps
PID TTY TIME CMD
2591 pts/1 00:00:00 bash
30891 pts/1 00:00:00 ps
然而只列出這些是不夠的,我們可以加入ㄧ些參數得到更多的資料:
a 顯示有連接終端機的所有行程
u 顯示有效使用者相關的程序
x 顯示未連結終端機的所有程序(通常是長期運作的的伺服行程)
l 較長、詳細的格式輸出(顯示nice值)
ps 常搭配 aux這三個參數使用,執行結果如下
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2112 704 ? Ss 08:02 0:01 init [5]
root 2 0.0 0.0 0 0 ? S< 08:02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 08:02 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< 08:02 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:02 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< 08:02 0:00 [events/0]
root 7 0.0 0.0 0 0 ? S< 08:02 0:00 [khelper]
user 該程序的使用者名稱
PID 該程序的PID
%CPU 使用CPU的百分比
%MEM 使用實體記憶體的百分比
VSZ 使用虛擬記憶體的大小
RSS 佔用固定的記憶體大小
TTY 運作的終端機,如果與終端機無關則顯示 ?
STAT 程序狀態,有以下幾種
R 程序執行中
S 程序睡眠中,可被喚醒
T 程序偵測或停止
Z 程序已停止,但父程序無法正常終止他
START 程序觸發時間
TIME 該程序實際使用CPU時間
COMMAND 程序指令名稱
相對於ps的靜態輸出,top提供了動態的輸出,top可以更即時的獲取程序狀態:
top 參數
-d 更新的秒數,預設是五秒更新一次
-b 通常會搭配資料流重導向來將批次的結果輸出成為檔案
-n 指定觀察的次數,常與-b搭配
-p 指定PID
在top執行時可用的快速鍵:
?:顯示可用的快速鍵
P:以CPU的使用率進行排序
M:以記憶體的使用率進行排序
N:以PID進行排序
k:給某PID傳送信號
r:重新設定某PID的nice值
top的執行畫面如下:
top - 14:51:28 up 7:05, 3 users, load average: 0.01, 0.00, 0.00
Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.6%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2075220k total, 571116k used, 1504104k free, 59064k buffers
Swap: 2031608k total, 0k used, 2031608k free, 305772k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2381 root 20 0 143m 61m 15m R 84.2 3.0 1:59.05 nautilus
2088 root 20 0 49148 19m 6016 S 3.9 1.0 0:38.33 Xorg
3372 root 20 0 2360 964 724 R 2.0 0.0 0:00.01 top
1 root 20 0 1948 768 560 S 0.0 0.0 0:01.04 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
7 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
第一行為系統的已啟動時間,線上人數,平均負載:三個數字分別代表1、5、10分鐘
第二行為總程序數,這個例子為,126的程序,2個執行中,124個睡眠,0個已停止,0個zombie程序
第三行為CPU的整體負載
第四行為實體記憶體的使用情形
第五行為虛擬記憶體(swap)的使用情形
接下來的畫面就是各程序的狀態,與ps大致上都相同
程序的執行順序
在Linux系統中,每個程序都會擁有一個優先執行程序的屬性,利用該屬性能讓系統知道哪個程序比較重要需要先執行。當我們執行ps -l或top時會發現有兩個欄位,PRI(top為PR)和NI,這兩個欄位就是用來計算程序的執行順序的:
PRI Priority的縮寫,數值越小越優先執行
NI 系統給予我們可改變執行順序的值,需注意以下幾點:
一般使用者的NI值為0~19
一般使用者僅能調高NI值
一般使用者僅能調整自己的NI值
root的NI值為-20~19
程序執行順序=PRI+NI,我們可以透過修改NI值來決定程序的執行順序,一般來講有兩種修改的方法:
程序執行時就指定NI值(nice)
修改執行中程序的NI值(renice)
nice -n command
-n 調整的NI值
command 欲執行的指令
[root@localhost ~]# nice -n -7 vi&
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
這個例子我設定vi的NI為-7,並在背景執行,並使用ps -l觀察
renice number PID
number 欲設定的NI值
PID 欲設定程序的PID
例:
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 73 -7 - 1530 signal pts/1 00:00:00 vi
4 R 0 3397 3292 0 80 0 - 1430 - pts/1 00:00:00 ps
延用剛才的範例,我已經將vi的NI設為-7,並得知PID為3387,現在將NI值改成10:
[root@localhost ~]# renice 10 3387
3387: old priority -7, new priority 10
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 R 0 3292 3289 0 80 0 - 1493 - pts/1 00:00:00 bash
4 T 0 3387 3292 0 90 10 - 1530 signal pts/1 00:00:00 vi
4 R 0 3399 3292 0 80 0 - 1431 - pts/1 00:00:00 ps
NI值真的變成10了!
程序的管理
前面只提到程序的觀察,再來要介紹管理程序的指令
再來介紹 kill這個指令,這個指令可透過傳遞信號來管理程序的執行狀態,kill的語法如下:
kill -single PID
single 傳給程序的信號代碼
PID 該程序的PID
另外 -l參數會列出可用的信號清單
一般常用的信號有:
代碼 名稱 內容
1 SIGHUP 接收到此信號後,程序會重新讀取自己的組態檔,類似重新啟動的功能
2 SIGINT 中斷、停止執行,跟Ctrl+C 有同樣的作用
9 SIGKILL 強制結束程序
15 SIGTERM 以正常程序中止程序
假設我目前有個程序狀態顯示為 Z,而他的 PID為4100,要將他強制結束可以這樣:
[root@localhost ~]# kill -9 4100
要重新啟動的話也只要將信號代碼改成 1就行了:
[root@localhost ~]# kill -1 4100
除了代碼,也可以直接使用信號名稱:
[root@localhost ~]# kill -TERM 2569
另外,若未設定任何參數,kill預設會傳送 SIGTERM(15)
另一個跟 kill有關的是 killall,使用 kill必須要知道程序的PID,而 killall則是要知道程序的指令名稱:
[root@localhost ~]# killall -9 vi
相關參數:
i interactive,互動式,當要刪除時會先詢問使用者
I 忽略大小寫
相關指令
檢視目前記憶體使用狀況
free 參數
-b 以bytes為單位
-k 以Kbytes為單位
-m 以Mbytes為單位
-g 以Gbytes為單位
-t 顯示實體與swap記憶體總量
執行結果如下:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 2026 554 1471 0 58 299
-/+ buffers/cache: 196 1829
Swap: 1983 0 1983
2008年1月11日 星期五
檔案搜尋
which 接command
依照PATH的路徑 尋找command 列出該位置
例
xiang-debian:/var# which ls
/bin/ls
whereis [option] name
尋找特定程式的可執行檔 原始碼檔 以及manpage路徑. 該指令只會在標準Linux 目錄尋找(/bin /etc /usr/bin /usr/local......)
option
-b 只尋找可執行檔
-m 只尋找manpae
-s 只尋找原始碼檔
locate 接patterns
列出包含patterns的檔案. 需要注意的事,第一次執行locate時,他會建立一個索引資料庫,locate都是從該資料庫尋找,所以如果檔案在更新資料庫之後出現是找不到的.
updatedb 更新資料庫囉
whatis keyword
會於whatis資料庫中尋找keyword, 需完全符合keyword才會顯示出來
apropos keyword
跟whatis差不多 , 但沒那麼嚴格,會找出類似的資料
另外 find 會另外寫一篇
依照PATH的路徑 尋找command 列出該位置
例
xiang-debian:/var# which ls
/bin/ls
whereis [option] name
尋找特定程式的可執行檔 原始碼檔 以及manpage路徑. 該指令只會在標準Linux 目錄尋找(/bin /etc /usr/bin /usr/local......)
option
-b 只尋找可執行檔
-m 只尋找manpae
-s 只尋找原始碼檔
locate 接patterns
列出包含patterns的檔案. 需要注意的事,第一次執行locate時,他會建立一個索引資料庫,locate都是從該資料庫尋找,所以如果檔案在更新資料庫之後出現是找不到的.
updatedb 更新資料庫囉
whatis keyword
會於whatis資料庫中尋找keyword, 需完全符合keyword才會顯示出來
apropos keyword
跟whatis差不多 , 但沒那麼嚴格,會找出類似的資料
另外 find 會另外寫一篇
2007年11月19日 星期一
2007年11月2日 星期五
Linux 日誌07/11/02
Plone 架起來了 還蠻開心的
再來就要去熟悉他的架構
現在上班 都用ssh 連回家裡
使用 no-ip 的動態名稱服務
但是這樣用沒幾天 就有人想入侵我的電腦= =
今天把電腦啟動後 忘記啟動 noip2 因為我三不五時就換系統 有時忘記把noip2 設成自動啟動
無言...........
/xiang
再來就要去熟悉他的架構
現在上班 都用ssh 連回家裡
使用 no-ip 的動態名稱服務
但是這樣用沒幾天 就有人想入侵我的電腦= =
今天把電腦啟動後 忘記啟動 noip2 因為我三不五時就換系統 有時忘記把noip2 設成自動啟動
無言...........
/xiang
2007年10月25日 星期四
vi 文書處理器
vi 文書處理器
vi 是Linux下的文書處理器,要作為一個系統管理者也是必學的一套軟體。在任何的 Unix like的機器上幾乎預設都有安裝 vi,另外,雖然 vi 是很古老的文書處理器,但他幾乎什麼功能都有了,這些都是必學的原因。
在 Linux 機器上預設都有安裝 vi ,若想在windows下使用的話可以使用 gVim 。
vi 的操作模式
在文字介面底下沒有像在圖形介面下可以輕鬆的使用滑鼠來編輯檔案,於是乎 vi 就有幾個不同的模式來提供不同的編輯功能。
vi 分為三種模式:
1.一般模式:
當我們使用 vi 開啟或編輯一個檔案時,一進入 vi 就是一般模式了。在這個模式下可以用鍵盤移動指標,也可以刪除、複製字元、字串或整行文字。等等會介紹一般模式常用的快速鍵。
2.編輯模式:
在一般模式裡可以刪除、複製、貼上等等的動作,但是卻不能編輯,要編輯就要進入這個編輯模式。進入編輯模式的方法如下,在一般模式下,按下 i , I , o , O , a , A , r , R 即可進入,每個字元代表的進入狀態都不一樣。進入編輯模式後,左下角會出現INSERT的字樣,要退出編輯模式也很簡單,只要按下鍵盤的 ESC 就可以跳出了。
3.命令模式:
在一般模式裡,按下 : / ? 就可以進入命令模式了
一般指令下的功能鍵
移動指標
直接按↑k ↓j ←h →l
Ctrl + f :向下一頁
Ctrl + b :向上一頁
Ctrl + d :螢幕向上半頁
Ctrl + u :螢幕向下半頁
+ :移動到非空白字元的下一列
- :移動到非空白字元的上一列
n + 空白鍵 :n 代表數字。向右移n個字元的意思
0(數字零) :移到這一行最前面的字元
H :螢幕最上行
M :螢幕中間行
L : 螢幕最下行
G :移到這個檔案的最後一行
nG :n為數字,移動到這個檔案的第 n 行
gg :移到這個檔案的第一行
n: 往下移動 n 行
刪除、複製、貼上(一般模式)
x :往後刪除一個字元
X :往前刪除一個字元
nx :連續刪除 n個字元
dd :刪除一整列
ndd:向下刪除到n列
d1G:刪除游標位置到第一行的所有資料
dG :刪除游標位置到最後一行的所有資料
d$ :刪除游標位置到那一行的最後一個字元
d0 :往前刪除到該行第一個字元
u :復原前一個動作
Ctrl+ c :重做上個動作
. :他是小數點,重複執行上個動作
搜尋與取代(命令模式下)
/word :往下搜尋 word
?word :往上搜尋 word
n : 重複執行上一個搜尋的動作
N : 重複執行上一個搜尋的動作,但是是反向的
n1,n2s/word1/word2/gc
n1 n2 代表從第幾行到第幾行 後面s 都要有
word1 代表搜尋的字
word2 代表使用這個字 去代替word1
g 都要有
加上c 會作確認的動作
w :寫入檔案
q :離開
! :強制的意思
ZZ :若沒有修改則不儲存離開,若有修改則儲存後離開
w [file]:將檔案寫入指定的檔案
r [file]:讀入檔案,將 file的內容讀入游標後
n1 n2 w [file] :將 n1行到 n2行寫入指定的 file裡
! command :暫時離開 vi 到指令列模式下執行 command 的顯示結果
set nu :顯示行號
set nonu :取消顯示行號
vi 是Linux下的文書處理器,要作為一個系統管理者也是必學的一套軟體。在任何的 Unix like的機器上幾乎預設都有安裝 vi,另外,雖然 vi 是很古老的文書處理器,但他幾乎什麼功能都有了,這些都是必學的原因。
在 Linux 機器上預設都有安裝 vi ,若想在windows下使用的話可以使用 gVim 。
vi 的操作模式
在文字介面底下沒有像在圖形介面下可以輕鬆的使用滑鼠來編輯檔案,於是乎 vi 就有幾個不同的模式來提供不同的編輯功能。
vi 分為三種模式:
1.一般模式:
當我們使用 vi 開啟或編輯一個檔案時,一進入 vi 就是一般模式了。在這個模式下可以用鍵盤移動指標,也可以刪除、複製字元、字串或整行文字。等等會介紹一般模式常用的快速鍵。
2.編輯模式:
在一般模式裡可以刪除、複製、貼上等等的動作,但是卻不能編輯,要編輯就要進入這個編輯模式。進入編輯模式的方法如下,在一般模式下,按下 i , I , o , O , a , A , r , R 即可進入,每個字元代表的進入狀態都不一樣。進入編輯模式後,左下角會出現INSERT的字樣,要退出編輯模式也很簡單,只要按下鍵盤的 ESC 就可以跳出了。
3.命令模式:
在一般模式裡,按下 : / ? 就可以進入命令模式了
一般指令下的功能鍵
移動指標
直接按↑k ↓j ←h →l
Ctrl + f :向下一頁
Ctrl + b :向上一頁
Ctrl + d :螢幕向上半頁
Ctrl + u :螢幕向下半頁
+ :移動到非空白字元的下一列
- :移動到非空白字元的上一列
n + 空白鍵 :n 代表數字。向右移n個字元的意思
0(數字零) :移到這一行最前面的字元
H :螢幕最上行
M :螢幕中間行
L : 螢幕最下行
G :移到這個檔案的最後一行
nG :n為數字,移動到這個檔案的第 n 行
gg :移到這個檔案的第一行
n
刪除、複製、貼上(一般模式)
x :往後刪除一個字元
X :往前刪除一個字元
nx :連續刪除 n個字元
dd :刪除一整列
ndd:向下刪除到n列
d1G:刪除游標位置到第一行的所有資料
dG :刪除游標位置到最後一行的所有資料
d$ :刪除游標位置到那一行的最後一個字元
d0 :往前刪除到該行第一個字元
u :復原前一個動作
Ctrl+ c :重做上個動作
. :他是小數點,重複執行上個動作
搜尋與取代(命令模式下)
/word :往下搜尋 word
?word :往上搜尋 word
n : 重複執行上一個搜尋的動作
N : 重複執行上一個搜尋的動作,但是是反向的
n1,n2s/word1/word2/gc
n1 n2 代表從第幾行到第幾行 後面s 都要有
word1 代表搜尋的字
word2 代表使用這個字 去代替word1
g 都要有
加上c 會作確認的動作
w :寫入檔案
q :離開
! :強制的意思
ZZ :若沒有修改則不儲存離開,若有修改則儲存後離開
w [file]:將檔案寫入指定的檔案
r [file]:讀入檔案,將 file的內容讀入游標後
n1 n2 w [file] :將 n1行到 n2行寫入指定的 file裡
! command :暫時離開 vi 到指令列模式下執行 command 的顯示結果
set nu :顯示行號
set nonu :取消顯示行號
2007年9月18日 星期二
2007年8月27日 星期一
磁碟
磁碟的新增
新增磁碟大概有幾個步驟:
1.磁碟分割,建立可用的分割區
2.格式化,建立filesystem
3.建立掛載點,將磁碟掛載上來
fdisk
這是個很常見的磁碟分割指令
fdisk /dev/hdd
後面直接接裝置路徑
進入fdisk後,輸入m 可以叫出help 清單
mke2fs
-b=設定每個 block 的大小,目前支援 1024, 2048, 4096 bytes 三種
-i=多少容量給予一個 inode
-c=檢查磁碟錯誤,僅下達一次 -c 時,會進行快速讀取測試
執行兩次 -c -c會測試讀寫(read-write)粉慢的
-l=接表頭名稱
-j=mke2fs 是 EXT2 ,加上 -j 後,會主動加入 journal 而成為 EXT3
fsck
新增磁碟大概有幾個步驟:
1.磁碟分割,建立可用的分割區
2.格式化,建立filesystem
3.建立掛載點,將磁碟掛載上來
fdisk
這是個很常見的磁碟分割指令
fdisk /dev/hdd
後面直接接裝置路徑
進入fdisk後,輸入m 可以叫出help 清單
mke2fs
-b=設定每個 block 的大小,目前支援 1024, 2048, 4096 bytes 三種
-i=多少容量給予一個 inode
-c=檢查磁碟錯誤,僅下達一次 -c 時,會進行快速讀取測試
執行兩次 -c -c會測試讀寫(read-write)粉慢的
-l=接表頭名稱
-j=mke2fs 是 EXT2 ,加上 -j 後,會主動加入 journal 而成為 EXT3
fsck
2007年8月17日 星期五
daemon
daemon是什麼
簡單來說,daemon 就是在背景執行的程序。daemon負責系統上的某些服務(service)。
service又是什麼呢?
就是系統所提供的服務,像是http 、ftp 等等,都是。
daemon的分類
依啟動和管理的方式,大致可以分為兩類:
stand_alone:
該daemon啟動後,會常駐在記憶體中,一直啟動,優點是當有服務要求時他會很快速的回應,缺點是會一直佔用系統資源。http就是這一類daemon。
super_daemon:
這一種服務的啟動方式則是藉由統一的一個 daemon 來負責喚起該服務。都沒有服務要求時,該服務不會一直佔據系統資源,相對的,當有要求時,啟動服務會花較多的時間。
這一個統一負責的 daemon 就是 inet 這支服務啦!不過,在後來的 Linux 發展套件中,則是使用 xinet 這個設定囉!我們這裡以 FC4 的 xinet 來做說明。當有網路的服務要求來的時候,該要求會先送給 xinet 這個服務,然後 xinet 根據該網路要求送來的資料封包的內容 ( 該內容會記錄 IP 與 port ) 來將資料封包送給實際運作的服務!而該服務這個時候才會啟動的!最常見到的就是 ftp 這支網路服務啦!
哪種啟動方式比較好呢?當然還是看主機的用途囉~~~
服務有關的埠口對應資料
/etc/services 這個檔案記載了相關服務與port 的對應資料
Daemon 的命名規則
通常在服務名稱後會加上一個 d ,這個d 就是daemon 的意思。像at atd、http httpd等等。
daemon檔案
stand_alone:
這個放置在 /etc/init.d/ 這個目錄裡面,幾乎所有的 RPM 安裝的套件之啟動 scripts 都在這裡啦!不過,實際上,我們的 FC4 是放置到 /etc/rc.d/init.d/* , 但你依舊可以記憶成 /etc/init.d ,因為所有的 unix like 機器都有這個目錄!
super_daemon:
這個工作的那一支服務其實就是 xinet 或者是 inet 啦!請注意, xinet 也是一個 daemon 呢!他是 stand alone 啟動的,也就是他會一直在監聽大家的需求,所以 xinet 的啟動 scripts 寫在 /etc/init.d/xinetd 這個 scripts 裡面囉!但是掛在這個 daemon 裡頭的服務之設定項目呢?嗯!就是寫在 /etc/xinetd.conf 與 /etc/xinetd.d/* 這個目錄裡面的任何檔案!
簡單來說,daemon 就是在背景執行的程序。daemon負責系統上的某些服務(service)。
service又是什麼呢?
就是系統所提供的服務,像是http 、ftp 等等,都是。
daemon的分類
依啟動和管理的方式,大致可以分為兩類:
stand_alone:
該daemon啟動後,會常駐在記憶體中,一直啟動,優點是當有服務要求時他會很快速的回應,缺點是會一直佔用系統資源。http就是這一類daemon。
super_daemon:
這一種服務的啟動方式則是藉由統一的一個 daemon 來負責喚起該服務。都沒有服務要求時,該服務不會一直佔據系統資源,相對的,當有要求時,啟動服務會花較多的時間。
這一個統一負責的 daemon 就是 inet 這支服務啦!不過,在後來的 Linux 發展套件中,則是使用 xinet 這個設定囉!我們這裡以 FC4 的 xinet 來做說明。當有網路的服務要求來的時候,該要求會先送給 xinet 這個服務,然後 xinet 根據該網路要求送來的資料封包的內容 ( 該內容會記錄 IP 與 port ) 來將資料封包送給實際運作的服務!而該服務這個時候才會啟動的!最常見到的就是 ftp 這支網路服務啦!
哪種啟動方式比較好呢?當然還是看主機的用途囉~~~
服務有關的埠口對應資料
/etc/services 這個檔案記載了相關服務與port 的對應資料
Daemon 的命名規則
通常在服務名稱後會加上一個 d ,這個d 就是daemon 的意思。像at atd、http httpd等等。
daemon檔案
stand_alone:
這個放置在 /etc/init.d/ 這個目錄裡面,幾乎所有的 RPM 安裝的套件之啟動 scripts 都在這裡啦!不過,實際上,我們的 FC4 是放置到 /etc/rc.d/init.d/* , 但你依舊可以記憶成 /etc/init.d ,因為所有的 unix like 機器都有這個目錄!
super_daemon:
這個工作的那一支服務其實就是 xinet 或者是 inet 啦!請注意, xinet 也是一個 daemon 呢!他是 stand alone 啟動的,也就是他會一直在監聽大家的需求,所以 xinet 的啟動 scripts 寫在 /etc/init.d/xinetd 這個 scripts 裡面囉!但是掛在這個 daemon 裡頭的服務之設定項目呢?嗯!就是寫在 /etc/xinetd.conf 與 /etc/xinetd.d/* 這個目錄裡面的任何檔案!
2007年8月12日 星期日
Process
UNIX 規格的第二版將行程定義為“一個單一或多個執行緒執行的位址空間,並包含那些執行緒所需的資源”
Process 是什麼?
Linux 系統中:『觸發任何一個事件時, 系統都會將他定義成為一個程序,並且給予這個程序一個 ID ,稱為 PID(Process ID),同時依據啟發這個程序的使用者與相關屬性關係, 給予這個 PID 一組有效的權限設定。』 從此以後,這個 PID 能夠在系統上面進行的動作,就與這個 PID 的權限有關了!
而Process 的主要功能是“Linux 中用來記錄執行中程式種種資訊的資料”
Process 的內容
Process儲存了下列資料:
● 執行緒位置
紀錄程式載入記憶體的位置
● 行程識別碼
每個程式都有的獨一無二的PID,透過該碼來識別某個Process ,範圍為1~32768
● 行程優先權
當兩個Process同時存取一個資源時,優先權越高的越先使用
● 記憶體脈絡
● 程式名稱
Process的名稱,以及其相關的引數或參數
● 環境資訊
環境變數
● 檔案描述子
行程開啟一個檔案時,Linux會為這個檔案產生一個檔案描述子,作為檔案的代號。從0開始,不過一般是從3開始,因為012被標準輸入輸出跟錯誤輸出用了
● 安全憑證
Process會紀錄UID/GID ,以便讓Linux知道是哪個使用者,哪個群組所執行,或是Linux判別存取權限之用
Linux 透過procfs ,以檔案與目錄的方式呈現在/proc/PID/目錄中,PID代表的是Process識別碼的編號,例如/proc/1/就是PID為1的Process資料
Process 的特性
●每個Process都是獨立的個體
●父程序結束時需主動結束子行程
●子程序結束時須通知父行程
Process 的相關指令
pstree
檢視Process tree
-a==>顯示程序指令的參數與引數
-A==>以ASCII字元繪製樹狀圖
-h==>標示顯目的標記
-n==>以PID取代名稱排序
-p==>顯示各別的PID
-u==>行程傭有者的名稱
-z==>顯示安全絡脈
ps
Process Status
若沒加任何參數,預設是顯示目前終端機貨主控台中,同ㄧ個UID的行程
*前面不用加“-”*
a==>顯示全部
x==>顯示所有行程,包括連結至終端機設備的行程
w==>寬格式顯示
l==>完整格式顯示
u==>有效UID為user的行程,沒指定user的話預設是自己
c==>顯示cmds
p==>顯示PID為PID的行程
t==>顯示連結至TTY終端設備的行程
o==>指定格式顯示
pgrep
這個就是ps 搭配grep 拉,用來查詢PID
-l==>顯示行程名稱
-o==>顯示較舊的行程
-n==>顯示較新的行程
監控行程
top
-c==>切換顯示程式名稱或指令名稱,預設顯示程式名稱
-d==>變更更新時間,秒
-i==>切換顯示閒置行程,預設會顯示閒置行程
-u==>指定顯示user行程
Process 是什麼?
Linux 系統中:『觸發任何一個事件時, 系統都會將他定義成為一個程序,並且給予這個程序一個 ID ,稱為 PID(Process ID),同時依據啟發這個程序的使用者與相關屬性關係, 給予這個 PID 一組有效的權限設定。』 從此以後,這個 PID 能夠在系統上面進行的動作,就與這個 PID 的權限有關了!
而Process 的主要功能是“Linux 中用來記錄執行中程式種種資訊的資料”
Process 的內容
Process儲存了下列資料:
● 執行緒位置
紀錄程式載入記憶體的位置
● 行程識別碼
每個程式都有的獨一無二的PID,透過該碼來識別某個Process ,範圍為1~32768
● 行程優先權
當兩個Process同時存取一個資源時,優先權越高的越先使用
● 記憶體脈絡
● 程式名稱
Process的名稱,以及其相關的引數或參數
● 環境資訊
環境變數
● 檔案描述子
行程開啟一個檔案時,Linux會為這個檔案產生一個檔案描述子,作為檔案的代號。從0開始,不過一般是從3開始,因為012被標準輸入輸出跟錯誤輸出用了
● 安全憑證
Process會紀錄UID/GID ,以便讓Linux知道是哪個使用者,哪個群組所執行,或是Linux判別存取權限之用
Linux 透過procfs ,以檔案與目錄的方式呈現在/proc/PID/目錄中,PID代表的是Process識別碼的編號,例如/proc/1/就是PID為1的Process資料
Process 的特性
●每個Process都是獨立的個體
●父程序結束時需主動結束子行程
●子程序結束時須通知父行程
Process 的相關指令
pstree
檢視Process tree
-a==>顯示程序指令的參數與引數
-A==>以ASCII字元繪製樹狀圖
-h==>標示顯目的標記
-n==>以PID取代名稱排序
-p==>顯示各別的PID
-u==>行程傭有者的名稱
-z==>顯示安全絡脈
ps
Process Status
若沒加任何參數,預設是顯示目前終端機貨主控台中,同ㄧ個UID的行程
*前面不用加“-”*
a==>顯示全部
x==>顯示所有行程,包括連結至終端機設備的行程
w==>寬格式顯示
l==>完整格式顯示
u==>有效UID為user的行程,沒指定user的話預設是自己
c==>顯示cmds
p==>顯示PID為PID的行程
t==>顯示連結至TTY終端設備的行程
o==>指定格式顯示
pgrep
這個就是ps 搭配grep 拉,用來查詢PID
-l==>顯示行程名稱
-o==>顯示較舊的行程
-n==>顯示較新的行程
監控行程
top
-c==>切換顯示程式名稱或指令名稱,預設顯示程式名稱
-d==>變更更新時間,秒
-i==>切換顯示閒置行程,預設會顯示閒置行程
-u==>指定顯示user行程
2007年8月11日 星期六
Linux的壓縮指令介紹
常見的壓縮檔副檔名
*.Z compress 程式壓縮的檔案
*.bz2 bzip2 程式壓縮的檔案
*.gz gzip 程式壓縮的檔案
*.tar tar 程式打包的資料,並沒有壓縮過
*.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮
compress是很久以前的壓縮程式,現在就常用的是gzip、bzip,而這些程式僅僅只能針對一個檔案壓縮,而tar是用來將許多檔案打包成一個檔案,透過這兩個程式的搭配,壓縮檔案的工作就變的很輕鬆。
gzip zcat
gzip gzip的壓縮指令
zcat 檢視gzip檔的內容
gzip 指令參數
-c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理
-d :解壓縮
-t :可以用來檢驗一個壓縮檔的一致性~看看檔案有無錯誤
-數字 :壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6
另外,gzip是用來取代compress的,所以他也能解開compress的檔案
bzip2, bzcat
bzip2 bzip2的壓縮指令
bzcat 檢視bzip2檔的內容
用法跟gzip差不多
tar
參數
-c :建立一個打包檔
-x :解開一個打包檔
-t :查看打包檔
*這三個指令不能同時存在*
-z :bzip格式
-j :gzip2格式
-v :顯示過程
-f :f 後面接檔案名 這個參數ㄧ定要加
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中
tar 指令範例:
1. tar -cvf /tmp/etc.tar /etc
參數f後面接的/tmp/etc.tar代表打包後的檔案 後面的/etc 代表要打包的目錄
2. tar -zxvf /tmp/etc.tar.gz etc/passwd
只解開該檔案裡面的passwd檔,注意後面開投沒有/
*.Z compress 程式壓縮的檔案
*.bz2 bzip2 程式壓縮的檔案
*.gz gzip 程式壓縮的檔案
*.tar tar 程式打包的資料,並沒有壓縮過
*.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮
compress是很久以前的壓縮程式,現在就常用的是gzip、bzip,而這些程式僅僅只能針對一個檔案壓縮,而tar是用來將許多檔案打包成一個檔案,透過這兩個程式的搭配,壓縮檔案的工作就變的很輕鬆。
gzip zcat
gzip gzip的壓縮指令
zcat 檢視gzip檔的內容
gzip 指令參數
-c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理
-d :解壓縮
-t :可以用來檢驗一個壓縮檔的一致性~看看檔案有無錯誤
-數字 :壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6
另外,gzip是用來取代compress的,所以他也能解開compress的檔案
bzip2, bzcat
bzip2 bzip2的壓縮指令
bzcat 檢視bzip2檔的內容
用法跟gzip差不多
tar
參數
-c :建立一個打包檔
-x :解開一個打包檔
-t :查看打包檔
*這三個指令不能同時存在*
-z :bzip格式
-j :gzip2格式
-v :顯示過程
-f :f 後面接檔案名 這個參數ㄧ定要加
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中
tar 指令範例:
1. tar -cvf /tmp/etc.tar /etc
參數f後面接的/tmp/etc.tar代表打包後的檔案 後面的/etc 代表要打包的目錄
2. tar -zxvf /tmp/etc.tar.gz etc/passwd
只解開該檔案裡面的passwd檔,注意後面開投沒有/
2007年8月8日 星期三
rpm 安裝
rpm套件管理程式提供了以下幾個功能:
安裝、升級與更新、查詢、驗證與數位簽章、反安裝與重建資料庫
安裝
rpm -ivh telnet-0.17-35
- 符號後面是參數
i 安裝
v 顯示冗長資訊
h 顯示安裝進度
要ㄧ次安裝許多套件 可以像下例
rpm -ivh a.rpm b.rpm
常見參數
--nodeps =========>不檢查rpm的相依性直接安裝,有可能會無法正常執行程式
--replacefiles ==>直接覆蓋檔案
--replacepkgs ====>重新安裝某個已經安裝過的套件
--force =========>這個參數其實就是 --replacefiles 與 --replacepkgs 的綜合體
--test =========>測試該套件是否可以被安裝到使用者的 Linux 環境當中
查詢
rpm -q telnet
q 為查詢的參數
查詢時,不用輸入版本
ㄧ般常搭配始用的參數
a===>全部的意思
i===>顯示詳細資訊
l===>相關檔案目錄完整名稱
c===>設定檔 即etc下
d===>該套件說明檔
R===>有關的相依套件所含的檔案
f===>後面接的檔案名稱,找出該檔案屬於哪一個已安裝的套件
移除
rpm -e telnet-0.17-35
e===>即為刪除的參數
使用rpm較麻煩的就是相依性,軟體間有相依性,可能碰到的問題是,要移除或安裝某個檔案,可能因為相依性的關係移除之前要先移除相關軟體,或安裝之前相關軟體要先安裝好。
這一點我還很差
更新
U===>套件即使沒有安裝過,則系統將予以直接安裝; 若後面接的套件有安裝過舊版,則系統自動更新至新版;
F===>若之前未安裝過此套件,rpm就不會進行安裝
安裝、升級與更新、查詢、驗證與數位簽章、反安裝與重建資料庫
安裝
rpm -ivh telnet-0.17-35
- 符號後面是參數
i 安裝
v 顯示冗長資訊
h 顯示安裝進度
要ㄧ次安裝許多套件 可以像下例
rpm -ivh a.rpm b.rpm
常見參數
--nodeps =========>不檢查rpm的相依性直接安裝,有可能會無法正常執行程式
--replacefiles ==>直接覆蓋檔案
--replacepkgs ====>重新安裝某個已經安裝過的套件
--force =========>這個參數其實就是 --replacefiles 與 --replacepkgs 的綜合體
--test =========>測試該套件是否可以被安裝到使用者的 Linux 環境當中
查詢
rpm -q telnet
q 為查詢的參數
查詢時,不用輸入版本
ㄧ般常搭配始用的參數
a===>全部的意思
i===>顯示詳細資訊
l===>相關檔案目錄完整名稱
c===>設定檔 即etc下
d===>該套件說明檔
R===>有關的相依套件所含的檔案
f===>後面接的檔案名稱,找出該檔案屬於哪一個已安裝的套件
移除
rpm -e telnet-0.17-35
e===>即為刪除的參數
使用rpm較麻煩的就是相依性,軟體間有相依性,可能碰到的問題是,要移除或安裝某個檔案,可能因為相依性的關係移除之前要先移除相關軟體,或安裝之前相關軟體要先安裝好。
這一點我還很差
更新
U===>套件即使沒有安裝過,則系統將予以直接安裝; 若後面接的套件有安裝過舊版,則系統自動更新至新版;
F===>若之前未安裝過此套件,rpm就不會進行安裝
2007年8月2日 星期四
RPM管理套件
資料庫路徑
之前所說的RPM的資料庫,其路徑是 /var/lib/rpm ,當你使用到RPM安裝或查詢時,其相關的資訊都是這個目錄的內容資料來提供。
RPM套件的命名格式
httpd-2.2.3-5.i386.rpm
拆解ㄧ下
httpd=>套件名稱
2.2.3 =>版本資訊
5=>釋出版本次數
i386=>操作硬體平台
底下將介紹各名稱意義
套件名稱:顧名思義,就是套件的名稱囉~
版本資訊:就....用來版本新舊
釋出版本次數:編譯的次數,有時可能bug或安全上的顧慮會重新編譯過
操作硬體平台:適用的PC環境,如下
i386 ===i代表是Intel 相容CPU i386幾乎所有環境都適用
i586 ===586 等級的電腦,pentium第一代為代表
i686 ===686 等級的電腦,在 pentun II 以後的 Intel 系列 CPU
noarch ==就是沒有任何硬體等級上的限制。一般來說,這種類型的 RPM 檔案,裡面應該沒有 binary file 存在。
另外,i386可以在任何環境執行,但i686不ㄧ定能在i586或i386上執行
之前所說的RPM的資料庫,其路徑是 /var/lib/rpm ,當你使用到RPM安裝或查詢時,其相關的資訊都是這個目錄的內容資料來提供。
RPM套件的命名格式
httpd-2.2.3-5.i386.rpm
拆解ㄧ下
httpd=>套件名稱
2.2.3 =>版本資訊
5=>釋出版本次數
i386=>操作硬體平台
底下將介紹各名稱意義
套件名稱:顧名思義,就是套件的名稱囉~
版本資訊:就....用來版本新舊
釋出版本次數:編譯的次數,有時可能bug或安全上的顧慮會重新編譯過
操作硬體平台:適用的PC環境,如下
i386 ===i代表是Intel 相容CPU i386幾乎所有環境都適用
i586 ===586 等級的電腦,pentium第一代為代表
i686 ===686 等級的電腦,在 pentun II 以後的 Intel 系列 CPU
noarch ==就是沒有任何硬體等級上的限制。一般來說,這種類型的 RPM 檔案,裡面應該沒有 binary file 存在。
另外,i386可以在任何環境執行,但i686不ㄧ定能在i586或i386上執行
2007年8月1日 星期三
RPM介紹
RPM的全名是 RedHat Package Manager,就是RedHat所提供的套件管理程式。其實也有很多其他的套件管理程式,但是因為RPM使用上很方便,所以也就變成相當熱門的套件管理程式。身為ㄧ個系統管理員,使用RPM是很基本的工夫~~~
RPM利用資料庫記錄的方式將你要安裝的套件安裝到Linux系統裡。最大的特點就是所安裝的套件都已經編譯並打包好了,透過包裝好的套件裡頭預設的資料庫記錄, 記錄這個套件要安裝的時候必須要的相依屬性模組,當要安裝套件時,RPM會先查詢資料庫裡的資訊,看看Linux 主機的相依屬性套件是否滿足。
另外要注意的是,由於RPM套件都是已經"包裝好"的軟體,所以,安裝的時候一定要和當初安裝時的主機環境ㄧ樣才能安裝!
這時~SRPM就出現了~~
SRPM就是 Source RPM,就是這個 RPM 檔案裡面含有原始碼( Source Code )啦!而裡面的套件內容是沒有編譯過的喔!!!
所以SRPM在安裝套件以前會先編譯過後再執行安裝,這樣子就不用管主機環境ㄧ不一樣了。
Note
RPM是ㄧ個普通的檔案,你必須使用rpm工具才能進行RPM套件的管理或安裝。
RPM利用資料庫記錄的方式將你要安裝的套件安裝到Linux系統裡。最大的特點就是所安裝的套件都已經編譯並打包好了,透過包裝好的套件裡頭預設的資料庫記錄, 記錄這個套件要安裝的時候必須要的相依屬性模組,當要安裝套件時,RPM會先查詢資料庫裡的資訊,看看Linux 主機的相依屬性套件是否滿足。
另外要注意的是,由於RPM套件都是已經"包裝好"的軟體,所以,安裝的時候一定要和當初安裝時的主機環境ㄧ樣才能安裝!
這時~SRPM就出現了~~
SRPM就是 Source RPM,就是這個 RPM 檔案裡面含有原始碼( Source Code )啦!而裡面的套件內容是沒有編譯過的喔!!!
所以SRPM在安裝套件以前會先編譯過後再執行安裝,這樣子就不用管主機環境ㄧ不一樣了。
Note
RPM是ㄧ個普通的檔案,你必須使用rpm工具才能進行RPM套件的管理或安裝。
訂閱:
文章 (Atom)
