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

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