Linux 學習日誌

2009年9月7日 星期一

如何在 FreeBSD 安裝 Java

說明:學習 FreeBSD 的套件安裝,Java 是一個不錯的練習,因為它有點難又不會太難,剛好適合了解 Ports 的運作,由於 在 FreeBSD 中可安裝的 Java 方式很多,在這邊選擇的應該算是相當簡單的方式,利用 Ports 來安裝 Diablo JDK 1.6.0_07。

作業系統:Freebsd 6.4
Java 版本:Diablo Java 1.6.0_07

步驟一

前往 FreeBSD Foundation 頁面下載套件

下載 Diablo Caffe JDK 1.6.0-7
  • diablo-jdk-freebsd6.i386.1.6.0.07.02.tbz
  • diablo-caffe-freebsd6-i386-1.6.0_07-b02.tar.bz2
步驟二

將下載好的檔案複製到 /usr/ports/distfiles/

步驟三

# cd /usr/ports/java/diablo-jdk16
# make install clean

步驟四

確認是否安裝完成,登出後登入
# java -version
java version "1.6.0_07"
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
注意事項:

當第一次安裝時會遇到 config 頁面,建議 POLICY 與 TZUPDATE 皆取消,不要安裝。若你已選擇要安裝,也可輸入
# make config
來取消選擇。

如何尋找想安裝的 FreeBSD 套件

官方正式的搜尋方法

以 ldap 關鍵字搜尋 ports 之下各套件名稱,介紹等。
# cd /usr/ports
# make search key=ldap

以 ldap 關鍵字搜尋 ports/ftp 下各套件名稱,介紹等。
# cd /usr/ports/ftp
# make search key=ldap

以 ldap 關鍵字搜尋,ports 下各套件名稱
# cd /usr/ports
# make search name=ldap

其他指令搜尋
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof

# whereis lsof
lsof: /usr/ports/sysutils/lsof

參考文件:

2009年8月28日 星期五

CentOS 5.3 網路安裝

網路安裝流程相當簡單,但因為某些原因我卡住了,在這邊紀錄一下正確流程
主要參考來源:http://www.chrisgountanis.com/technical/34-technical/45-centos-netinstall.html
Images re reference:http://www.chrisgountanis.com/technical/34-technical/45-centos-netinstall.html

下載 Net Install 光碟 Iso
檔名:CentOS-5.3-i386-netinstall.iso
義守大學:http://ftp.isu.edu.tw/pub/Linux/CentOS/5.3/isos/i386/CentOS-5.3-i386-netinstall.iso
台中教網:http://ftp.tcc.edu.tw/Linux/CentOS/5.3/isos/i386/CentOS-5.3-i386-netinstall.iso

Configure TCP/IP

這邊很簡單,就是設定網路,關不關 IPv6 都可以。

Choose Installation Method

在此請選擇 HTTP


HTTP 設定


台灣的 mirror 站台很多,可任選一個,由官網 Mirrors List 查詢

以義守大學為例
Web site name: ftp.isu.edu.tw
Directory:/pub/Linux/CentOS/5.3/os/i386/

以台中教網為例
Web site name: ftp.tcc.edu.tw
Directory:/Linux/CentOS/5.3/os/i386/

開始安裝 - 成功畫面

當開始取得 img 時,會出現以下畫面



注意事項:
  1. 我第一次安裝時,卡在網路設定錯誤,但由於沒有錯誤訊息,一直以為是鏡射站台輸入有誤。當網路設定未成功時,畫面會一直停住,但成功時,則是會很快(1-3 秒)載入安裝方法的選擇頁面,可由此判斷網路是否設定成功。
  2. CentOS 5.3 安裝時,記憶體至少要大於 256MB,大約 384 MB以上,我使用 256 MB 安裝會一直失敗,由官網的討論區確認,這個情形好像只有 CentOS 5.3 才有。
  3. 在輸入 HTTP Setup,可輸入相對路徑,如:CentOS/5.3/os/i386,理論上,系統會自動搜尋站台。

2008年10月30日 星期四

ps 指令的範例蒐集

行程 (process) 的意義 ,已談過何謂行程並簡介 ps 這個指令。
現在我想要做的不是深入探討 ps 指令的意義,而是蒐集常用 ps 指令串,列出提及的旗標,
這將方便我快速查詢目前的行程狀態。

一般旗標:
-A:顯示所有程序
-e:顯示所有程序
T: 顯示現行終端本身的所有程序
a: 顯示現行終端本身的所有程序,包括其他使用者
x: 顯示所有程序,不以終端來區分。
輸出格式規劃:
-f:全格式的顯示。
-l:較長、較詳細的將該 PID 的的資訊列出。
j:工作的格式 (jobs format)。
u:以使用者導向顯示。
f:以 ASCII 字符顯示程序的樹狀結構,以表示程序間的關係

注意:
ps 指令支援多種作樣系統,故旗標相當多元,有沒有 - 號,代表意義完全不同
,部分作業系統可相容兩種顯示,但一般學習 ps 指令還是得分辨有沒有 - 的差異。

範例一:最常用顯示詳細行程狀態

bang@linuxdiary:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1692 552 ? S Sep30 0:01 init [5]
root 2 0.0 0.0 0 0 ? S Sep30 0:00 [migration/0]
範例二:次常用顯示所有行程狀態
bang@linuxdiary:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Sep30 ? 00:00:01 init [5]
root 2 1 0 Sep30 ? 00:00:00 [migration/0]
範例三:顯示某個指令行程狀態
bang@linuxdiary:~$ ps -fC httpd
UID PID PPID C STIME TTY TIME CMD
root 26990 1 0 Oct25 ? 00:00:00 /usr/sbin/httpd
範例四:找出某兩個服務有關行程
bang@linuxdiary:~$ ps aux | egrep 'cron|syslog'
root 3270 0.0 0.0 1604 608 ? Ss Sep30 1:51 syslogd -m 0
root 3761 0.0 0.0 4624 1044 ? Ss Sep30 0:07 crond
root 14312 0.0 0.0 5216 1344 ? S 04:00 0:00 crond
root 20013 0.0 0.0 3732 716 pts/1 S+ 12:07 0:00 egrep cron|syslog
範例五:列出 CPU 使用率最高的 10 行程
bang@linuxdiary:~$ ps aux | head -1 ; ps aux | sort -k3rn | head -10
範例六:列出記憶體使用率最高的 10 行程
bang@linuxdiary:~$ ps aux | head -1 ; ps aux | sort -k4rn | head -10
範例七:另一種列出記憶體使用率最高的 10 行程,他是利用排列 SZ (記憶體使用量)
bang@linuxdiary:~$ ps -elf | head -1 ; ps -elf | sort -k10rn | head -10
範例八:列出行程樹
bang@linuxdiary:~$ ps auxf

2008年10月1日 星期三

學習使用 Logwatch (日誌檢視系統)

每天檢視日誌是系統管理員的工作,但就算是老練的網管一個個日誌檔的檢視,也要解讀老半天,使用 Logwatch 將幫助你更有效的檢視日誌。它主要用途是收集系統上的日誌資料,以淺顯易懂的方式表達,並 Email 給系統管理員,由於它已安裝在 Linux 中,基本上你只需要知道如何配置及使用,以下節錄 Logwatch 內容片段。
--------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
108G 68G 35G 67% /
/dev/hda1 99M 26M 69M 28% /boot
---------------------- Disk Space End -------------------------

大略在 Logwatch 7 之後的版本,設定檔被移至 /etc/logwatch/conf/ 目錄下
,其中包含 ignore.conf,logfiles,logwatch.conf,override.conf,services 等檔案。
且都是空的檔案與資料夾,表示一切設定為預設值。而預設的範例設定檔則放置於
/usr/share/logwatch/default.conf,你可以參考此檔案的預設設定,而將它改寫至 /etc/logwatch/logwatch.conf 中。

以下我們用問答的方式來介紹 Logwatch 常用功能與常見問題。

問題一:將日誌寄給誰,由誰寄出

我們可以在 /etc/logwatch/logwatch.conf 中,設定 Logwatch 將日誌資料寄到哪個信箱,以及由誰寄出。

#寄給誰

MailTo = admin@aaa.com

#由誰寄出

MailFrom = admin@aaa.com

問題二:如何移除不想分析的服務

有些服務不是那麼重要,移除後可以減少日誌郵件寄出的大小,Logwatch 預設為掃描所有的服務,參數為 All,所花的時間是最多,為了節省時間,可以把不需要分析的移除,以下為範例。

# The 'Service' option expects either the name of a filter

# (in /usr/share/logwatch/scripts/services/*) or 'All'.

# The default service(s) to report on. This should be left as All for most people.

Service = -audit

Service = -cisco

Service = -http

Service = -samba

Service = -postfix

問題三:省略寄信步驟,直接列出昨天的日誌資訊

[root@lamp ~]# logwatch --print

問題四:單獨查看某個服務 (如 clamav )

[root@lamp ~]# logwatch --service clamav --print

問題五:剛剛修改 logwatch config 設定,想馬上知道結果

修改 range 旗標,將其目標縮小至今天。

[root@lamp ~]#logwatch --service clam-update --range Today --print

問題六:如何移除警告 Warning: Large mailbox: root

Large Mailbox threshold: 40MB (41943040 bytes)
當收到的 Log 其中個人郵件超過 40MB 就會被記錄,可以根據以下說明修改限制大小。
在 /etc/logwatch/conf/servicessendmail-largeboxes.conf 中

  # Mailbox size threshold

# can add units KB, MB, GB, TB

# can set to 0 to report spool files being created where they shouldn't

sendmail_largeboxes_size = 40MB

# 改為希望的大小就可以了。

2008年9月1日 星期一

在 CentOS 5 安裝 MRTG

1.安裝 snmp 與 MRTG

bang@linuxdiary:~$ yum -y install net-snmp mrtg net-snmp-utils

說明:安裝 net-snmp-utils 是為了使用 snmpwalk。

2.設定 snmp

先備分一份設定檔

bang@linuxdiary:~$ cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

編輯設定檔 /etc/snmp/snmpd.conf
在 snmpd.conf 有好幾段範例,請註解第一段範例,使用者由第二個範例修改。
在第二段範例設定一開始你可以看到

# Here is a commented out example configuration that allows less
# restrictive access.

你需要修改的地方只有 community string,其餘請依序移除註解。

a.設定 community string

#       sec.name  source          community
com2sec local localhost hplus

說明:hplus 即為 community string

b. Map Group name

#       groupName      securityModel securityName
#group MyRWGroup any local

說明:移除紅色 #

c. 設定檢視權限

#           incl/excl subtree                          mask
#view all included .1 80

說明:移除紅色 #


d. 最後,讓群組可以唯讀方式檢視系統

#                context sec.model sec.level prefix read   write  notif
#access MyRWGroup "" any noauth 0 all all all

說明:移除紅色 #

e.啟動 SNMP

bang@linuxdiary:~$ /etc/rc.d/init.d/snmpd start

f.測試 SNMP

bang@linuxdiary:~$ snmpwalk -v 1 localhost -c hplus

若 snmp 安裝完成,會顯示一大堆 snmp 回傳訊息,以下節錄一小段

SNMPv2-MIB::sysDescr.0 = STRING: Linux www.hundredplus.com 2.6.15-1.2054_FC5 #1 Tue Mar 14 15:48:33 EST 2006 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2289589) 6:21:35.89
SNMPv2-MIB::sysContact.0 = STRING: Root (configure /etc/snmp/snmp.local.conf)

g.防火牆

如果不是觀察本機端 SNMP,請記得對方要開啟 UDP PROT 161

3.設定 MRTG

架構說明

觀察對象的 Community String:hplus
輸出設定目錄:/etc/mrtg/
輸出網頁目錄:/opt/lampp/htdocs/mrtg/
目的:建立主機流量圖

a.產生 cfg 檔案
執行以下命令

bang@linuxdiary:~$ cfgmaker --global 'WorkDir: /opt/lampp/htdocs/mrtg' \
--global 'Options[_]: growright' \
--output /etc/mrtg/network.cfg \
hplus@localhost

說明:更多 cfgmaker 設定請參考
http://mrtg.cs.pu.edu.tw/doc/cfgmaker.en.html

b.執行 mrtg

bang@linuxdiary:~$ env LANG=C /usr/bin/mrtg /etc/mrtg/ network.cfg

說明:會出現多行警告訊息如下

Rateup WARNING: /usr/bin/rateup Can't remove localhost_2.old updating log file

請重複執行命令,直到警告消失為止

c.產生網頁

bang@linuxdiary:~$ indexmaker /etc/mrtg/network.cfg > /opt/lampp/htdocs/mrtg/network.html

說明:輸出的網頁只是一種顯示方式,可依據喜好編輯網頁。

e.檢視網頁是否建立成功

http://localhost/mrtg

你應該要看到以下圖片

f.自動排程

編輯 /etc/cron.d/mrtg ,加入已下一行

*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/network.cfg

說明:每五分鐘執行一次,需重新啟動 crond

bang@linuxdiary:~$ /etc/rc.d/init.d/crond restart

4.其他觀察指標

下載 mrtg.zip,利用現成範例檔案,完成其他觀察指標,以記憶體為例,解開壓縮檔後,上傳 mem.cfg 至 /etc/mrtg,並編輯

Target[freemem]: .1.3.6.1.4.1.2021.4.11.0&.1.3.6.1.4.1.2021.4.11.0: hplus@localhost
Title[freemem]: Free Memory
MaxBytes[freemem]: 10000000
kMG[freemem]: k,M
YLegend[freemem]: bytes
ShortLegend[freemem]: bytes
PageTop[freemem]: Free memory, not including swap, in bytes
Legend1[freemem]: Free memory, not including swap, in bytes
LegendI[freemem]: Free Memory:
LegendO[freemem]:
Options[freemem]: nopercent,growright,gauge,noinfo
WorkDir:/opt/lampp/htdocs/mrtg/
Language:big5

編輯檔案時,需確認 Community String@觀察 IP,輸出網頁目錄是否正確。
完成後,執行回到之前 設定 MRTG介紹,重複執行 b,c,e,f 動作即可。

同理依序上傳並編輯各個檔案,包含

AttemptFails.cfg
連線嘗試失敗
cpu_act.cfg
CPU 負載率
cpu_idle.cfg
CPU 閒置率
cpu_usr.cfg
CPU 使用者與系統使用率
dsk.cfg
磁碟使用率
estabcons.cfg
目前連線數
hrStorage.cfg
磁碟目前用量
mem.cfg
記憶體使用率
newconn.cfg
新建立連線數

5.監控硬碟項,要注意的地方

a.監控硬碟必須先知道我們掛載的情況

輸入命令

bang@linuxdiary:~$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
471016352 14887036 431817100 4% /
/dev/sda1 101086 10960 84907 12% /boot
tmpfs 1037820 0 1037820 0% /dev/shm

利用以上資訊,編輯 snmp.conf

b.然後在 snmp.conf 指定硬碟

開啟 /etc/snmp.conf`,尋找 # disk checks
你可以看到一些設定範例,可將 df 所得資訊,插入以下兩行

disk / 471016352       #代表第一個要觀察的分割區

disk /boot 101086 #代表第二個要觀察的分割區

c.於/etc/mrtg 編輯 dsk.cfg,內容如下

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[kontor.root]:dskPercent.1&dskPercent.2:MY_SRTING@localhost
MaxBytes[kontor.root]: 100
Title[kontor.root]: DISK USAGE
PageTop[kontor.root]: DISK / and /boot Usage %
Unscaled[kontor.root]: ymwd
ShortLegend[kontor.root]: %
YLegend[kontor.root]: DISK Utilization
Legend1[kontor.root]: Root disk
Legend2[kontor.root]: /boot disk
Legend3[kontor.root]:
Legend4[kontor.root]:
LegendI[kontor.root]: Root disk
LegendO[kontor.root]: /boot disk
Options[kontor.root]: growright,gauge,nopercent
WorkDir:/opt/lampp/htdocs/mrtg

編輯檔案時,只需確認 Community String,觀察 IP,輸出網頁目錄是否正確。
完成後,執行 設定 MRTG:b,c,e,f 動作即可。

6.編輯 index.html

這是最後結果,可視情況要不要作,當所有範例檔都修改並上傳完成,可根據範例包中 index.html,
修改連結與圖片正確的位址,即完成所有安裝。

範例

<div>
<a href="freemem.html"><img border="1" alt="freemem Traffic Graph" src="freemem-day.png"></a><br>
<small><!--#flastmod file="kontor.root.html" --></small>
</div>

2008年5月14日 星期三

如何知道現在的 Distribution

Distribution 不知道該怎麼翻譯,通常我會叫他「發佈」或「發行」,指的是各個軟體商或社群利用不同版本的核心,自行組裝各種套件,客製化後的各種不同 Linux 版本,如 Slackware、Red Hat、Mandriva、Debian、Ubuntu 等。
隨著發行版本越多,個人手邊安裝的系統也越多,加上版本號不斷更新,常常遊走不同版本之間的人難免會錯亂,現在是第幾版?哪一個 Distribution?核心是多少 ...
以下整理如何解決這些問題:

  • 從開機紀錄著手
    dmesg 可以將開機紀錄列印出來,/var/log/dmesg 也記錄著相同資料。
    bang@linuxdiary:~$ dmesg | head -1

    Linux version 2.6.12-1.1381_FC3smp (bhcompile@porky.build.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Fri Oct 21 04:03:26 EDT 2005

  • 利用 /proc/version
    這裡的結果與 dmesg 顯示的結果相同
    bang@linuxdiary:~$ cat /proc/version

    Linux version 2.6.12-1.1381_FC3smp (bhcompile@porky.build.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Fri Oct 21 04:03:26 EDT 2005

  • 利用 /etc/issue
    這個方式應該是最接近標題問題的正確解答
    bang@linuxdiary:~$ cat /etc/issue

    Fedora Core release 3 (Heidelberg)
    Kernel \r on an \m
  • 如何查詢核心版本
    這是 LPI1 的基本考題
    bang@linuxdiary:~$ uname -a

    Linux hundredplus.com 2.6.12-1.1381_FC3smp #1 SMP Fri Oct 21 04:03:26 EDT 2005 i686 i686 i386 GNU/Linux