FILES


SYSTEM Configuration File

這個文件會影響一般使用者"help"的版本。更重要的是,這個文件會影響一般使用者的權限,像是一般使用者就不能使用底下三個指令

k 刪除一個task
r renice一個task
d or s 改變delay/sleep的間隔

這個系統組態檔並不是由top所建立的,反之,你必須手動的去建立這個檔案,並且將其放在路徑『/etc/』底下,他的名字也必須是『toprc』,前面不能有『.』,總而言之,路徑加檔案名稱就要是『/etc/toprc』就對了。

而內容,就必須只能兩行,底下給個例子:

s        # line 1: 'secure' mode switch
5.0      # line 2: 'delay'  interval in seconds

PERSONAL Configuration File

這個檔案名稱的格式會像是『’$HOME/.your-name-4-top' + 'rc’』,然後使用『W』命令來建立或更新它。

這個檔案一般的格式會像底下這樣:

global   # line  1: the program name/alias notation
"      # line  2: id,altscr,irixps,delay,curwin
per ea   # line  a: winname,fieldscur
window   # line  b: winflags,sortindx,maxtasks
"      # line  c: summclr,msgsclr,headclr,taskclr
global   # line 15: fixed-width incr
"      # any remaining lines are devoted to the
"      # generalized 'inspect' provisions
"      # discussed below

如果變數『$HOME』沒有設定的話,則top將會嘗試著將這個組態檔寫到目前的資料子夾中。

ADDING INSPECT Entries

如果使用top的『inspect entries』的話,你就必須要在top的『個人組態檔』後面加入相關的『entries』,這樣子的entries會簡單的在一個分離視窗上,反應出要被讀取的檔案或是要被執行的命令的pipeline。

如果你不清楚你的top rcfile的位置或名字的話,可以直接用命令『W』來寫入組態,并觀察一下系統訊息就會知道了。

『Inspect entries』可以使用一個『redirected echo』來增加或是藉由編輯其組態檔。只是你用『redirected echo』的方式要很小心,不然可能會毀了整個組態檔。

跟一般的script一樣,『Inspect entries』前面有個『#』的話代表註解,整段會被忽略。否則的話,正常來講應該會包含三個元素,每個都是用『tab(兩個’\t’)』來隔開:

.type: 可以是『’file’』或是『’pipe’』。
.name: 在螢幕上顯示的選擇。
.fmts: 代表路徑或是命令的字串。

上面『.type』的類型是不變的,『file』的類型將會使用『fopen』來存取,而且一定要在『.fmts』裡面的元素參考到一個檔案。如果『.type』的類型為『pipe』的話,將會使用『popen』來存取,而『.fmts』元素將會包含許多的『pipelined』命令。

如果『file』或是『pipeline』在你的『.fmts』裡面代表的是特殊的PID的輸入或是接收的話,則這個字串的格式就必須包含『%d』,就像是底下這個case一樣:

.fmts=  /proc/%d/numa_maps
.fmts=  lsof -P -p %d

對於『pipe』的類型的『entries』,你也許會想要將『stderr』給導到『stdout』,作法的話可以如下:

.fmts=  pmap -x %d 2>&1

底下是幾個簡單的case,第一個entry因為註解的關係會被忽略掉,而為了清楚區別,所以這邊每一行多加了一個所謂的pseudo tab『^I』,並且前後都會有一個空白字符,但是正常的tab是沒有這些東西的。

# pipe ^I Sockets ^I lsof -n -P -i 2>&1
pipe ^I Open Files ^I lsof -P -p %d 2>&1
file ^I NUMA Info ^I /proc/%d/numa_maps
pipe ^I Log ^I tail -n100 /var/log/syslog | sort -Mr

除了上面的那幾種個是以外,底下這幾個例子也可以達到類似的效果,假設你的rcfile是『.toprc』的話。然而,因為有嵌入『tab』的關係,所以這些行都必須要前置『/bin/echo -e』,不能只是呼叫『echo』,因為這樣才會允許『backslach』的效果。

"pipe\tOpen Files\tlsof -P -p %d 2>&1" >> ~/.toprc
"file\tNUMA Info\t/proc/%d/numa_maps" >> ~/.toprc
"pipe\tLog\ttail -n200 /var/log/syslog | sort -Mr" >> ~/.toprc

如果在任何你建立的『inspect entry』輸出有任何不可列印的字元的話,則將會以『^C』或是『FF』的形式呈現。並且也會呈現在『tab』的字元上,會直接顯示『^I』。

results matching ""

    No results matching ""