Solaris 一般桌上管理系統環境:進階使用者和系統管理員指南

第 2章 配置階段作業管理者

階段作業管理者負責啟動桌上管理系統並自動儲存與回復執行應用程式、色彩、字型、滑鼠行為、音量與鍵盤按鍵。

使用階段作業管理者,您可以:

什麼是階段作業?

階段作業是呈現在使用者的桌上管理系統上的應用程式、設定值與來源。階段作業管理是一組可以使階段作業管理者能夠儲存與回復使用者的階段作業的習慣用法與通信協定。使用者能夠登入系統,並於使用者登出時以執行應用程式、設定值與來源的相同組別來呈現。當使用者第一次登入桌上管理系統時,會載入內定起始階段作業。之後,階段作業管理者會支援目前與主階段作業的觀念。

起始階段作業

當使用者第一次登入桌上管理系統時,階段作業管理者將會使用系統內定值來產生使用者的起始階段作業。按內定,將會啟動檔案管理者與桌上管理系統簡介、輔助說明內容。

目前階段作業

使用者正在執行的階段作業永遠都會被視為目前階段作業,不論是登入時從儲存的主階段作業回復、儲存的目前階段作業或是系統內定起始階段作業。根據使用者的式樣管理者啟動設定值,當使用者結束階段作業時,階段作業管理者會自動儲存目前階段作業。當使用者下次登入桌上管理系統時,階段作業管理者會重新啟動之前儲存的目前階段作業,表示桌上管理系統將會回復到與使用者上次登出時相同的狀態。

主階段作業

您也可以讓桌上管理系統每次在使用者登入時就回復到相同的狀態,不論使用者登出時的狀態如何。使用者可以儲存目前階段作業的狀態,然後使用式樣管理者啟動設定值,讓階段作業管理者每次在使用者登入時就啟動該階段作業。

顯示特定的階段作業

如果要執行特定顯示器的特定階段作業,使用者可以建立顯示特定的階段作業。如果要如此作,使用者可以將 HomeDirectory/.dt/sessions 目錄複製到顯示是真實的 HomeDirectory/.dt/display,不合格的主機名稱(例如,pablo:0 是有效的,pablo.gato.com:0unix:0 則無效)。當使用者登入顯示器 pablo:0 時,階段作業管理者將會啟動該顯示特定的階段作業。

啟動階段作業

階段作業管理者是經由 /usr/dt/bin/Xsession 啟動的。當使用者使用登入管理者登入時,Xsession 會因內定而啟動。

使用者可以選擇性地使用傳統的字元模式(getty)登入來登入,並且使用啟動 X 伺服器的工具人工啟動階段作業管理者,例如 xinit。例如: xinit /usr/dt/bin/Xsession.

當階段作業啟動時

當階段作業管理者啟動時,要經過下列步驟以啟動使用者的階段作業:

  1. 搜尋 HomeDirectory/.dtprofile 指令集

  2. 搜尋 Xsession.d 指令集

  3. 顯示歡迎訊息

  4. 設定桌上管理系統搜尋路徑

  5. 收集可供使用的應用程式

  6. 選擇性地搜尋 HomeDirectory/.profileHomeDirectory/.login

  7. 啟動 ToolTalkTM 訊息常駐程式

  8. 載入階段作業來源

  9. 啟動色彩伺服器

  10. 啟動工作區管理者

  11. 啟動階段作業應用程式

    下列區段描述以上所列出的步驟。

搜尋 .dtprofile 指令集

在階段作業啟動時,Xsession 指令集會搜尋使用者的 HomeDirectory/.dtprofile 指令集。HomeDirectory/.dtprofile 指令集是讓使用者能夠設定其階段作業環境變數的 /bin/sh/bin/ksh 指令集。有關設定環境變數更多的資訊,請參閱 "其它的階段作業啟動自訂 "

如果 HomeDirectory/.dtprofile 指令集不存在,例如當使用者正第一次登入桌上管理系統時,Xsession 將會複製桌上管理系統內定 sys.dtprofile HomeDirectory/.dtprofile

桌上管理系統內定為 /usr/dt/config/sys.dtprofile。如果要自訂 sys.dtprofile 指令集,請從 /usr/dt/configsys.dtprofile 複製到 /etc/dt/config 並編輯新檔案。

找出 Xsession.d 指令集來源

在搜尋 HomeDirectory/.dtprofile 指令集之後,Xsession 指令集會搜尋 Xsession.d 指令集。這些指令集是用於設定其它的環境變數並啟動使用者的階段作業選擇性常駐程式。內定的 Xsession.d 指令集為:

0010.dtpaths-文件可自訂的桌上管理系統搜尋路徑

0020.dtims-啟動選擇性的輸入方法伺服器

0030.dttmpdir-建立每個使用者、每個階段作業的暫存目錄

0040.xmbind-設定 $XMBINDDIR 為桌上管理系統內定

Xsession.d 中可能有其它廠商特定的指令集。

Xsession 會先搜尋 /etc/dt/config/Xsession.d目錄中的所有檔案,接著才搜尋 /usr/dt/config/Xsession.d 目錄中的檔案。

桌上管理系統內定 Xsession.d 指令集是位於 /usr/dt/config/Xsession.d 目錄中。如果要自訂 Xsession.d 指令集,請從 /usr/dt/config/Xsession.d 將指令集複製到 /etc/dt/config/Xsession.d 並編輯新檔案。您必須有執行許可 權才能執行此工作。

同時,如果要使 Xsession 自動搜尋您自己的指令集,請將其複製到 /etc/dt/config/Xsession.d


註解 -

當您修改或建立 Xsession.d 指令集時,請確定您發出的任何前景指令持續時間是短的,因為指令所花費的時間將會直接影響階段作業啟動時間。如果前景指令未結束,階段作業啟動將會停頓。您想要繼續執行階段作業持續時間的 Xsession.d 指令集中執行的指令應在背景中執行。


顯示歡迎訊息

在搜尋 HomeDirectory/.dtprofileXsession.d 指令集之後,Xsession 顯示蓋住螢幕的歡迎訊息。您可以自訂顯示的歡迎訊息,或完全關閉此訊息。dthello 客戶機是用於顯示此訊息的。

如果要改變訊息文字,請藉由修改 dtstart_hello[0] 變數來變更dthello 選項。

如果要變更 dtstart_hello[0],請建立設定新值的 /etc/dt/config/Xsession.d 指令集。如果要為所有使用者顯示這一天的訊息,請建立可執行的 shksh 指令集,例如 /etc/dt/config/Xsession.d/myvars,並設定 dtstart_hello[0] 如下:

dtstart_hello[0]="/usr/dt/bin/dthello -file /etc/motd&"

同樣地,使用者可以藉由設定 HomeDirectory/.dtprofile 中的dtstart_hello[0] 變更其階段作業的歡迎訊息。

如果要關閉歡迎訊息,請設定 dtstart_hello[0]=" "。

有關 dthello 更多的資訊,請參閱 dthello 線上援助頁。

設定桌上管理系統搜尋路徑

桌上管理系統搜尋路徑是在登入時由 dtsearchpath 所建立的。有兩大類由 dtsearchpath 所使用的環境變數:

輸入變數-數值是由系統管理或一般使用者所設定的整個系統的變數以及個人環境變數。

輸出變數-由 dtsearchpath 建立與指派值的變數。每個變數的 值都是桌上管理系統階段作業的搜尋路徑。

如果要改變 dtsearchpath 的指令行選項,請修改 dtstart_searchpath 變數。如果要變更所有使用者的 dtstart_searchpath 變數,請建立可執行的 shksh 指令集(例如 /etc/dt/config/Xsession.d/myvars),並設定 dtstart_searchpath 如下:

dtstart_searchpath="/usr/dt/bin/dtsearchpath"

使用者同樣地可以藉由設定 HomeDirectory/.dtprofile 中的dtstart_searchpath 只變更其自己的階段作業之 dtsearchpath 選項。

有關 dtsearchpath 的更多資訊,請參閱 第 9章, 桌上管理系統搜尋路徑。有關 dtsearchpath 選項的更多資訊,請參閱 dtsearchpath 線上援助頁。

收集可供使用的應用程式

設定桌上管理系統搜尋路徑之後的下一步就是使用 dtappgather 收集可供使用的應用程式。如果要改變 dtappgather 的指令行選項,請修改 dtstart_appgather 變數。如果要變更所有使用者的 dtstart_appgather 變數,請建立可執行的 shksh 指令集(例如 /etc/dt/config/Xsession.d/myvars),並設定 dtstart_appgather 如下:

dtstart_appgather="/usr/dt/bin/dtappgather &"

使用者同樣地可以藉由設定 HomeDirectory/.dtprofile 中的dtstart_appgather 只變更其自己的階段作業之 dtappgather 選項。

有關 dtappgather 選項的更多資訊,請參閱 dtappgather(4) 線上援助頁。

選擇性地搜尋 .profile 或 .login 指令集

Xsession 能夠搜尋使用者的傳統 HomeDirectory/.profileHomeDirectory/.login 指令集。依照內定值,此能力是取消的。如果要告訴 Xsession 去搜尋 .profile.login 指令集,請設定 DTSOURCEPROFILE正確的

如果要變更所有使用者的 DTSOURCEPROFILE,請建立設定新值的 /etc/dt/config/Xsession.d 指令集。如果要設定所有使用者的 DTSOURCEPROFILE正確的,請建立可執行的 shksh指令集,例如 /etc/dt/config/Xsession.d/myvars,並設定DTSOURCEPROFILE 如下:

DTSOURCEPROFILE=true

使用者同樣地可以藉由在 HomeDirectory/.dtprofile 中 將DTSOURCEPROFILE 設定為 正確的 來變更其自己的階段作業之DTSOURCEPROFILE

啟動 ToolTalk 訊息常駐程式

ToolTalk 訊息常駐程式 ttsession 使獨立的應用程式能夠彼此通信而不需對彼此有直接的認識。應用程式會建立並送出 ToolTalk 訊息以彼此通信。ttsession 在網路上通信以發送訊息。

如果要改變 ttsession 的指令行選項,請修改 dtstart_ttsession 變數。如果要變更所有使用者的 dtstart_ttsession 變數,請建立可執行的 shksh 指令集(例如 /etc/dt/config/Xsession.d/myvars),並設定 dtstart_ttsession 如下:

dtstart_ttsession="/usr/dt/bin/ttsession -s"

使用者同樣地可以藉由在 HomeDirectory/.dtprofile 中設定dtstart_ttsession 來變更其自己的階段作業之 ttsession 選項。

有關 ttsession 選項的更多資訊,請參閱 ttsession 線上援助頁。有關 ttsession 的更多資訊,請參閱 Common Desktop Environment: ToolTalk Messaging Overview

啟動階段作業管理者客戶機

此刻,Xsession會啟動/usr/dt/bin/dtsession,此啟動會使階段作業啟動處理繼續進行 。

載入階段作業來源

階段作業管理者使用 X 伺服器 RESOURCE_MANAGER 屬性以使桌上管理系統來源可供所有的應用程式使用。階段作業管理者載入 RESOURCE_MANAGER 由:

桌上管理系統內定值來源可以在 /usr/dt/config/language/sys.resources 中找到。這些來源將會經由 RESOURCE_MANAGER 屬性供每個使用者的階段作業使用。此檔案不應編輯,因為在後續的桌上管理系統安裝時會將它重寫。

您可以藉由建立 /etc/dt/config/language/sys.resources 增加系統內定值資源。在此檔案中,您可以為所有的桌上管理系統使用者置換內定值來源或指定其它的來源。既然此檔案是在階段作業啟動期間合併到桌上管理系統內定值來源內的,此檔案中應只放入新的或更新的來源規格。此檔案中所指定的來源將會經由 RESOURCE_MANAGER 屬性供每個使用者的階段作業使用。此檔案中所指定的來源對於桌上管理系統內定值來源檔案中所指定的那些 具有優先順序。

使用者可以使用其 HomeDirectory/.Xdefaults 檔案來增加桌上管理系統內定值與整個系統的來源。此檔案中所指定的來源將可經由 RESOURCE_MANAGER 屬性供該使用者的階段作業使用。此檔案中所指定的來源對於桌上管理系統內定值或系統管理者來源檔案中所指定的那些具有優先順序。


註解 -

X 工具箱本身的公用程式指定它將會從 RESOURCE_MANAGER 或從 HomeDirectory/.Xdefaults 其中之一而非兩者載入應用程式的來源。一般而言,這表示會略過使用者的 HomeDirectory/.Xdefaults 檔案。然而,階段作業管理者藉由在如上述的階段作業啟動時將其合併至RESOURCE_MANAGER 內來供應HomeDirectory/.Xdefaults。如果使用者變更 HomeDirectory/.Xdefaults,對新的應用程式而言,要到使用者調用重新載入來源動作時才看得到變更。重新載入來源動作將會指示階段作業管理者重新載入具有內定值、整個系統以及使用者指定的來源之 RESOURCE_MANAGER。此動作會使對整個系統與個人來源檔案所做的變更可供應用程式使用。


有關更多的資訊,請參閱:

啟動色彩伺服器

階段作業管理者作為桌上管理系統的色彩伺服器,並提供以下可用於配置它的 dtsession 來源集。

foregroundColor-控制是否配置前景色彩的像素

dynamicColor-指定是否配置唯讀色彩

shadowPixmaps-指定是要配置頂端陰影或底部陰影的色彩

colorUse-限制色彩配置

writeXrdbColors-指定是否在來源資料庫中放入 *背景*前景 來源

您可以藉由在該檔案中建立 /etc/dt/config/language/sys.resources 與指定色彩伺服器來源來設定所有使用者的色彩伺服器來源。

使用者同樣地可以藉由在 HomeDirectory/.Xdefaults 中指定色彩伺服器來源來設定其自己的階段作業之色彩伺服器來源。

有關設定色彩伺服器來源的更多資訊,請參閱 "管理色彩"

啟動工作區管理者

階段作業管理者負責啟動工作區管理者。依照內定值 /usr/dt/bin/dtwm會啟動。替代視窗管理者可以用 wmStartupCommand 來源來指定。

您可以藉由建立 /etc/dt/config/language/sys.resources 與指定該檔案中具有 Dtsession*wmStartupCommand 來源的視窗管理者之完整路徑名稱及選項來指定替代視窗管理者。

使用者同樣地可以藉由在 HomeDirectory/.Xdefaults 中指定Dtsession*wmStartupCommand 來源來指定其自己的階段作業之替代視窗管理者。

有關視窗管理者的更多資訊,請參閱 第 16章, 自訂工作區管理者

啟動階段作業應用程式

在啟動階段作業時,階段作業管理者將會重新啟動作為部分階段作業儲存的任何應用程式。被視為使用者起始階段作業的應用程式回復之系統內定集可以在/usr/dt/config/language/sys.session 中找到。此檔案不應編輯,因為它將會在後續的桌上管理系統安裝時無條件地重寫。

有關更多的資訊,請參閱 dtsessionfile(4) 線上援助頁。

系統管理者可以藉由將/usr/dt/config/language/sys.session 複製到/etc/dt/config/language/sys.session 並修改後者檔案來取代啟動為使用者起始階段作業的一部份之應用程式集。不像來源檔案,此檔案將會用作桌上管理系統內定檔案的完整取代,因此您可以複製系統內定檔案並作必要的修改。

其它的階段作業啟動自訂

本節涵蓋:

如果要設定環境變數

    如果要設定整個系統的環境變數,請在設定並匯出變數的 /etc/dt/config/Xsession.d 目錄中建立檔案。

例如,如果您建立可執行的 ksh 指令集,/etc/dt/config/Xsession.d/myvars 包含:

	export MYVARIABLE="value"

然後,在下次登入時,變數 MYVARIABLE 將會設定在每個使用者的環境中。

    如果要設定個人環境變數,請在 HomeDirectory/.dtprofile 中設定變數。

例如:

	export MYVARIABLE="value"

下次登入時,在每個使用者的環境中設定變數 MYVARIABLE


註解 -

階段作業管理者不會自動讀取 .profile.login 檔案。然而,可以配置它以使用這些檔案;請參閱 "選擇性地搜尋 .profile 或 .login 指令集"


如果要設定來源

    如果要設定整個系統的來源,請將來源增加至檔案 /etc/dt/config/language/sys.resources。(您可能必須建立此檔案。)


註解 -

.dtprofile 只支援 /bin/sh/bin/ksh 語法。


例如,如果您在 /etc/dt/config/C/sys.resources 中,可以指定:

	AnApplication*resource: 

然後,在下次登入時,來源 AnApplication*resource 將會設定於每個 RESOURCE_MANAGER 屬性中。

    如果要設定個人來源,請將來源增加至檔案 HomeDirectory/.Xdefaults

如果要設定特定顯示器的來源

您可以在系統上設定所有桌上管理系統使用者的特定顯示器來源。而且,使用者可以設定限制為其自己的階段作業之特定顯示器來源。此項設定使您能夠視使用者使用何種顯示器以登入桌上管理系統來指定特定顯示器。

    如果要在系統上設定所有桌上管理系統使用者的特定顯示器來源,請建立指定特定顯示器來源的檔案 /etc/dt/config/language/sys.resources

    如果要設定個人特定顯示器來源,請在 HomeDirectory/.Xdefaults 中指定來源。

    您藉由將這些來源附於 cpp 條件式陳述式中來分割它們。 DISPLAY_displayname 巨集是根據 $DISPLAY 變數的值來定義的。這是藉由轉換所有的 .(句點)與 : (冒號)字元為 _ (底線)、去除任何螢幕規格以及最後將字首 DISPLAY_ 加於結果所完成的。

    例如,:0$DISPLAY 會是 DISPLAY_0,而 blanco.gato.com:0.0$DISPLAY 會是 DISPLAY_blanco_gato_com_0。結果的值可以用作階段作業來源檔案中的一部分 cpp 測試。例如,如果在/etc/dt/config/C/sys.resources 中您指定:

    Myapp*resource: 值
    #ifdef DISPLAY_blanco_gato_com_0  Myapp*resource: specialvalue1  
    #endif
    #ifdef DISPLAY_pablo_gato_com_0  Myapp*resource: specialvalue2  
    #endif

    當使用者登入顯示器 blanco.gato.com:0 來源上時, MyApp*resource 將會設定於 RESOURCE_MANAGERspecialvalue1;當使用者登入pablo.gato.com:0; 時為 specialvalue2 , 而當使用者登入其它顯示器上時

如果要變更起始階段作業的應用程式

您可以指定替代應用程式,將其視為使用者起始階段作業的一部份啟動。

  1. /usr/dt/config/language/sys.session 複製到 /etc/dt/config/language/sys.session。

  2. 修改新的 sys.session 檔案。

    sys.session 中每項登錄的出現如:

    	dtsmcmd -cmd command_and_options
    

    如果要將其它的應用程式視為使用者起始階段作業的一部份啟動,請以完整的路徑名稱指定新的 sys.session 登錄。例如,如果要將/usr/bin/X11/xclock視為使用者起始階段作業的一部份啟動,請增加 xclock 登錄至 /etc/dt/config/C/sys.session

    	#  	# Start up xclock...  	#  	dtsmcmd -cmd "/usr/bin/X11/xclock 
    -digital"

如果要設定特定顯示器的階段作業

使用者可以設定特定顯示器的階段作業以將階段作業調整為特定的顯示器。

    HomeDirectory/.dt/sessions 目錄複製到 HomeDirectory/.dt/顯示器顯示器 為真實的、不合格的主機名稱(pablo:0 是有效的,pablo.gato.com:0unix:0 則不是)。

例如,如果要建立顯示器 pablo.gato.com:0 的特定顯示器階段作業:

cp -r HomeDirectory/.dt/sessions HomeDirectory/.dt/pablo:0

當使用者下次登入顯示器 pablo.gato.com:0 時,階段作業管理者將會啟動該特定顯示器的階段作業。

在階段作業啟動與登出時執行其它指令

當使用者登入其桌上管理系統階段作業時,他們可以指定其它指令被啟動。對於設定未由階段作業管理者儲存的 X 設定值,這是很有用的。例如,使用者可以使用 xsetroot 來自訂root(工作區)指標。另一種用法是啟動無法由階段作業管理者儲存與回復的應用程式。

如果要在階段作業啟動時執行其它的指令

    建立包含指令的檔案 HomeDirectory/.dt/sessions/sessionetc

一般而言,此檔案為指令集且必須有執行許可權。sessionetc 中啟動的處理應於背景中執行。


註解 -

請勿使用 sessionetc 來啟動由階段作業管理者自動回復的客戶機。如此作會造成應用程式的多重副本被啟動。您可能無法立刻看到副本,因為視窗可能相互堆疊。


如果要在登出時執行其它的指令

sessionetc 的姐妹檔案為 sessionexit。使用 sessionexit 以執行不是由階段作業管理者所處理的階段作業結束時的一些作業。

    建立包含指令的檔案 HomeDirectory/.dt/sessions/sessionexit

如同 sessionetc,此檔案通常是具有執行許可權的指令集。

如果要從備份回復階段作業

當階段作業管理者儲存階段作業時,如果使用的是特定顯示器階段作業,階段作業資訊會儲存於 HomeDirectory/.dt/sessions 目錄中或 HomeDirectory/.dt/顯示器目錄中。在這些目錄中,階段作業管理者會建立名為 目前 的子目錄以儲存個別的目前或主階段作業的資訊。在儲存階段作業資訊之前,階段作業管理者會以該名稱製作前階段作業的備份並將其儲存於 current.oldhome.old 中。

  1. 從登入螢幕使用單視窗階段作業或指令行登入來登入。

  2. 將備份階段作業目錄複製到作用中的名稱。例如,如果要回復備份主階段作業:

    	cp -r HomeDirectory/.dt/sessions/home.old 
    \  	HomeDirectory/.dt/sessions/home

    可以用相同的方式回復特定顯示器的階段作業。

如果要調查階段作業啟動的問題

    檢查檔案 HomeDirectory/.dt/startlog

階段作業管理者在此檔案中登錄每個使用者的階段作業啟動進度。

階段作業管理者檔案與目錄