ALTERNATE-DISPLAY Provisions


WINDOWS Overview

Field Groups/Windows:
在『full-screen』模式底下,一個螢幕只會有一個視窗存在,這一個視窗還可以使用『g』切換成4個不同的『field groups(欄位群組)』,而如果使用命令『A』切換成『Alternate-display』模式以後,就會把這四個視窗都顯示在螢幕上,而這四個欄位群組都分別有各自的可組態『summary area』和自己的可組態『task area』如下顯示:

在這個模式底下,最少會只有『summary area』顯示,即使只剩下訊息欄,而最多就是四個分開的視窗,這部份還是要看你命令的組合來決定。

Current Window:
『current』的視窗代表的是目前繫結於『summary area』的視窗,還有到某些命令會一直被導向(directed) task相關的視窗,因為在『alternate-display』模式底下你可以將task顯示給切掉,所以有些命令將會被限制只出現在『current』視窗上面。

COMMANDS for Windows

- | _ :Show/Hide-Window(s) toggles
『-』鍵是『current』視窗的開關,當開啟時,其『task area』將會顯示你用『f』鍵所建立的最小欄位標頭(columns header)。

『_』也會對所有的task做相同的事,換句話來說,它會在目前可視task和你已經切掉的task之間切換,舉個例子來說,如果4個視窗目前都是顯示的話,你按一下『_』會變成所有的視窗都會消失,只留下『summary area』。

* = | + :Equalize-(reinitialize)-Window(s)
『=』鍵會讓『current』視窗的task整個出現。它也會讓『i』,『n』,『u/U』和『o/O』的效果給取消。

『+』鍵也會對所有的視窗做相同的事,會讓四個task視窗都重新出現,並且也會讓你客制的設定保留,除了『i』,『n』,『u/U』和『o/O』的效果外。

* A :Alternate-Display-Mode toggle
這個命令將會快速切換『full screen』和『alternate-display』模式。

* a | w :Next-Window-Forward/Backward
這兩個命令將會切換『current』視窗,會輪流切換命令所針對的窗口。

* g :Choose-Another-Window/Field-Group
系統將會提示請你輸入1~4來代表你的『current』要繫結成那一個『欄位群組』。在『full-screen』模式底下,這個命令當然就是會直接給置換成『current』視窗,而在『alternate-display』模式底下,則就使用『a』或『w』來切換。

G :Change-Window/Field-Group-Name
左上角會有一個反白的目前的視窗名稱,按了『G』以後,系統會提示請你輸入一個新的名字來改變『current』的視窗名字,

SCROLLING a Window

典型的一個task視窗就是會在有限的欄位裡面顯示一堆系統所有tasks和threads。所以有些資訊一定是無法被全部顯示出來,這時候你就必須要使用某一些所謂的『scrolling keys』來垂直,水平的移動,才能顯示被隱藏的資訊們。

下面這些所謂的『scroll』命令都可以在『full-screen』底下使用但是無法在『alternate-display』模式底下且『current』task被切掉的狀況下使用。

Up,PgUp :Scroll-Tasks
『PgUp』向上整個翻一頁,而『Up』則是只向上一筆,直到top整個顯示到『current』的第一筆資料。

Down,PgDn :Scroll-Tasks
『PgDn』向下整個翻一頁,而『Down』則是只向下一筆,直到top整個顯示到『current』的最後一筆資料。

Left,Right :Scroll-Columns
一次平行移動一個欄位。 這邊要注意一點,有些欄位並不是固定欄寬,而且還繫結在其他剩下的螢幕,所以有時候你平行移動時,你會發現一些不可預期的結果。

Home :Jump-to-Home-Position
重新定位到你還沒有移動時的座標。

End :Jump-to-End-Position
重新定位到最右下方。

C :Show-scroll-coordinates toggle
這個命令會顯示一個資訊,讓你知道你目前的座標在那,x軸就是有幾個欄位(會因為你位移而調整),y軸就是有幾個task如下顯示:

scroll coordinates: y = n/n (tasks), x = n/n (fields)
scroll coordinates: y = n/n (tasks), x = n/n (fields) + nn

y = n/n (tasks)
第一個n當然就代表的是目前第幾個task,而第二個n就是目前自動更新的task總數。

x = n/n (fields)
第一個n代表的是目前第幾的欄位,而第二個n就是目前欄位的總數,這個欄位就像之前說過得,可以由『f』來控制。

SEARCHING in a Window

在top裡面你也可以使用一些命令來搜尋一些特定的資訊,如下顯示:

L :Locate-a-string
用這個命令可以搜尋目前『current』視窗裡的關鍵字(case-sensitive)。搜尋條件並沒有限制在只有單一欄位,意思是你的搜尋條件也可以跨欄位搜尋。如果沒有輸入字串就直接按『Enter』的話,就會直接取消『&』的效果,直到你再次搜尋。

& :Locate-next
假設你已經有搜尋成功過一次的話,按『&』則top將會尋找下一個相同的關鍵字。

匹配字串的可取得會被底下這幾個因素給影響:

  • 視窗中水平和垂直滾動。
  • 『c』,程式名和CMD之間的切換。
  • 排序欄位的選定。

上面這些所謂的『scroll』命令都可以在『full-screen』底下使用但是無法在『alternate-display』模式底下且『current』task被切掉的狀況下使用。每當你在top裡面搜尋的話,系統都會自動的將『highlighting』給關掉以防止一些跳脫字元的影響。這些效果會在你用空字串去搜尋時,在次出現。

FILTERING in a Window

在top裡面你可以使用『Other Filter』的功能來篩選哪些tasks要顯示在『current』視窗之中。建立一個filter需要

  1. 『一個field 名稱』, 2.『一個運算子(operator)』, 3.『還有一個選擇的值來代表最小值』。

這個功能可以說是top裡面最複雜的行為,當你出錯時,記得使用『command recall』,也記得使用『Up』和『Down』鍵或是相關鍵來輸入。

Filter Basics

  • 欄位名稱是『case sensitive』並且拼寫要和header一樣。
  • 『selection values』必須不包含完全的顯示欄位。
  • 『selection』是『case insensitive』。
  • 預設是『inclusion』,如果前面加上『!』則代表『exclusions』。
  • 一個task視窗裡面可以被套用多個選取標準。
  • 『inclusion』和『exclusion』標準可以被同步使用。
  • 『1 equality』和『2 relational』濾鏡可以被混用。
  • 各個task視窗都會維護各自的濾鏡。

如果一個欄位沒有被開啟,或是沒有在視窗內,則你的標準就沒辦法影響到這個視窗。

Keyboard Summary

o :Other-Filter (lower case)
建立一個不區分大小寫的濾鏡。

O :Other-Filter (upper case)
建立一個區分大小寫的濾鏡。

^O :Show-Active-Filters (Ctrl key + 'o')
這個命令可以顯示在『current』視窗中哪些濾鏡是處於active的狀態。

= :Reset-Filtering in current window
這個命令會清除所有在『current』視窗的塞選內容。

+ :Reset-Filtering in all windows
假設你在『alternate-display』模式的話,這個命令會清除所有視窗的塞選內容。

Input Requirements

當使用『Other-Filter』功能時,你提供的資料有兩種格式,而其中有三種是必要的資訊,還有一個是選擇性的:

   #1           #2  #3              ( required )
   Field-Name   ?   include-if-value
!  Field-Name   ?   exclude-if-value
   #4                                  ( optional )

項目『#1』,『#3』和『#4』就如同字面上的意思,代表欄位名稱,包含/不包含,選擇性條件,而『#2』則必須是『=』,『 > 』或是『 < 』之一。

『=』只要有部份批配的話就可以了,這樣可以降低你的『if-value』的成本。而『 > 』或是『 < 』則將會使用字串比對,連數字欄位也是會用字串比對,成本會比較高。

舉個最簡單的搜尋條件來說,我要搜尋命令裡面,所有有關java的關鍵字,大小寫有別,則就應該按『O』,然後輸入底下條件以後按『ENTER』就好:

COMMAND=java

這些塞選的機制是為了預設欄位和其同質性的資料所設計的,所以當有些欄位的內容格式被修改,而其他的欄位內容未被調整的話,其同質性就會被破壞。意思是如果你已經建立了一個相關的濾鏡,並且你又改了預設的『數字』或是『字元』的話,則你的濾鏡可能會失敗。

舉個例子來說,如果你的塞選條件是用『MiB』為單位,但是你之前已經修改過memory的單位為『GiB』的話,字串比對當然會找不到。

Potential Problems

[GROUP]
底下這兩個case將會產生一樣的結果,又或者是因為你喚起的命令不一樣會造成第二個會沒東西(如果是用『O』的話):

GROUP=root        
GROUP=ROOT

[RES]
RES的搜尋條件也會因為你的記憶體顯示單位不同會有狀況,否則底下這兩個搜尋條件應該要產生一樣的結果才對(只有在單位都是『KiB』的狀況下):

RES>9999          
!RES<10000

[nMin]
nMin的條件也會因為單位不同而出錯,因為這個欄位最多只會顯示4個數字,所以當你每個單位的數值都大於『9999』時,就會向上轉換了,舉個例子來說,底下這個搜尋條件永遠都會是空的:

nMin>9999

Potential Solutions

上面講了三個潛在性的問題,這邊到是要講一下幾個相關的解法。有時候單引號『’』會用在如果你的搜尋內容有空白字符的條件下。但是如果你將其用在『if-values』的狀況之下的話,你會發現什麼都找不到。

[nTH]
假設nTH欄位有顯示的話,則第一個濾鏡將會只有『multi-threaded processes』會顯示。並且也會提醒我們後面是否有空白字符,而第二個則是會跟第一個條件一樣,但是你會發現條件比較簡單一點,也少打一點字。

!nTH=' 1 '                
nTH>1

[Forest View]
如果你有啟動『Forest View』並且『COMMAND』欄位有顯示的話,則底下這個條件會有效的收起你的子行程,這樣就只會只顯示三層而已。

!COMMAND='       `- '     ( ' for clarity only )

[ ^O]
最後兩個條件明顯的就是為了使用在『status request key(^O)』上面。在現實中通常是每個搜尋條件都會分別送出,但是偶爾也會有些意外,像是最後這兩個例子。第一個PR的例子顯示了連續兩個條件,以防止顯示到負的值。第二個例子注意一下字尾是空白字符,所以這個case的話,nMin就可以達到上面所提到的『9999』問題了。

'PR>20' + '!PR=-'         ( 2 for right result )
'!nMin=0 ' + '!nMin=1 ' + '!nMin=2 ' + '!nMin=3 ' 
...

results matching ""

    No results matching ""