熟悉Solaris 10 項(xiàng)目和任務(wù)管理
原創(chuàng)【51CTO原創(chuàng)】
一、項(xiàng)目(Projects)和任務(wù)(Tasks)簡(jiǎn)介
為了優(yōu)化系統(tǒng)服務(wù),有時(shí)需要對(duì)運(yùn)行的系統(tǒng)進(jìn)行工作量分析。無(wú)論是單獨(dú)對(duì)從進(jìn)程方面還是從用戶(hù)方面來(lái)說(shuō),獲得這些信息是困難的。在Solaris中,有兩種工具來(lái)分析工作量:項(xiàng)目和任務(wù)。項(xiàng)目對(duì)有關(guān)工作提供網(wǎng)絡(luò)背景方面的管理。任務(wù)提供程序組方面的管理。基于項(xiàng)目和任務(wù)管理機(jī)制,運(yùn)行的程序可以被標(biāo)準(zhǔn)的Solaris命令所管理。項(xiàng)目用于組織和管理物理系統(tǒng)資源集合。在實(shí)現(xiàn)全面服務(wù)器整合計(jì)劃時(shí),項(xiàng)目很有用。項(xiàng)目提供下列功能:
為應(yīng)用程序設(shè)置最小CPU資源和內(nèi)存容量,從而平衡系統(tǒng)資源。
每個(gè)應(yīng)用程序均可獲得為其項(xiàng)目設(shè)置的最小CPU資源和內(nèi)存容量(可選)。例如:基于應(yīng)用程序的項(xiàng)目允許你為網(wǎng)絡(luò)上運(yùn)行的所有應(yīng)用程序建立最小CPU資源和內(nèi)存容量。當(dāng)同一臺(tái)主機(jī)上有多個(gè)項(xiàng)目處于活動(dòng)狀態(tài)時(shí),由于每個(gè)應(yīng)用程序均位于其各自的項(xiàng)目?jī)?nèi),從而減少了系統(tǒng)資源的爭(zhēng)用現(xiàn)象。在這種情況下,為每個(gè)項(xiàng)目設(shè)置的資源限制是由該主機(jī)上的Solaris內(nèi)核實(shí)施的。
跟蹤數(shù)據(jù)中心內(nèi)的資源使用情況。
跟蹤項(xiàng)目當(dāng)前使用的資源總量,還會(huì)跟蹤項(xiàng)目成員使用的資源量。盡管多個(gè)用戶(hù)和組可能同屬于一個(gè)或多個(gè)項(xiàng)目,但必須為每個(gè)Solaris用戶(hù)指定一個(gè)默認(rèn)項(xiàng)目。Solaris用戶(hù)啟動(dòng)的進(jìn)程可以綁定到該用戶(hù)所屬的任何項(xiàng)目。項(xiàng)目通過(guò)使用項(xiàng)目成員和資源池來(lái)跟蹤與控制應(yīng)用程序的資源消耗。
二、項(xiàng)目和容器的關(guān)系
項(xiàng)目就是與主機(jī)相關(guān)聯(lián)的容器。與主機(jī)關(guān)聯(lián)后,項(xiàng)目將處于活動(dòng)狀態(tài),并且也設(shè)置了屬于它自己的資源。容器可以作為多個(gè)項(xiàng)目模板。反過(guò)來(lái),每個(gè)項(xiàng)目都具有與其關(guān)聯(lián)的容器。該關(guān)聯(lián)容器將這些項(xiàng)目的共同屬性存儲(chǔ)在一個(gè)中心位置,當(dāng)創(chuàng)建新項(xiàng)目時(shí),可以參照這些共同屬性創(chuàng)建。
三、項(xiàng)目、任務(wù)和進(jìn)程的關(guān)系
每次成功登錄到項(xiàng)目中都會(huì)創(chuàng)建一個(gè)新的包含登錄進(jìn)程的任務(wù)。任務(wù)是工作中的進(jìn)程的集體表現(xiàn)。每個(gè)任務(wù)都被自動(dòng)授予一個(gè)任務(wù)ID。每個(gè)進(jìn)程都是一個(gè)任務(wù)的成員,每個(gè)任務(wù)都與一個(gè)項(xiàng)目相關(guān)聯(lián)。此之者的關(guān)系如圖-1 所示。
圖-1項(xiàng)目、任務(wù)和進(jìn)程的關(guān)系
所有對(duì)進(jìn)程組的操作,比如信號(hào)的發(fā)送,任務(wù)都是支持的。你可以將任務(wù)綁定到processor set或者調(diào)度優(yōu)先權(quán)和類(lèi)。
用下面的方法來(lái)創(chuàng)建最終的任務(wù):
使用nwetask和-F選項(xiàng)的命令創(chuàng)建。
所有被項(xiàng)目創(chuàng)建的任務(wù),在使用setproject命令后,就會(huì)具有task_final標(biāo)識(shí)。具有這個(gè)標(biāo)識(shí)說(shuō)明任務(wù)已經(jīng)被創(chuàng)建
在項(xiàng)目數(shù)據(jù)庫(kù)中設(shè)置task.final屬性。
四、Solaris 10 項(xiàng)目相關(guān)參數(shù)
項(xiàng)目標(biāo)志符是用來(lái)鑒別有關(guān)任務(wù)的管理標(biāo)志符。具有工作量標(biāo)志的項(xiàng)目也可以成為用戶(hù)和組的標(biāo)識(shí)。一個(gè)用戶(hù)或組可以屬于一個(gè)或多個(gè)項(xiàng)目,這些項(xiàng)目可以表現(xiàn)屬于它的用戶(hù)或組的工作量。盡管用戶(hù)必須屬于默認(rèn)的項(xiàng)目,但用戶(hù)發(fā)布的程序可以關(guān)聯(lián)任何用戶(hù)所屬于的項(xiàng)目。
1.用戶(hù)默認(rèn)項(xiàng)目(Projects)介紹
當(dāng)?shù)卿浵到y(tǒng)的時(shí)候,用戶(hù)必須被分配一個(gè)項(xiàng)目,用戶(hù)自動(dòng)成為這個(gè)項(xiàng)目組的成員。
如果用戶(hù)項(xiàng)目的屬性是在/etc/user_attr擴(kuò)展用戶(hù)屬性數(shù)據(jù)庫(kù)定義的,那么定義的值就是項(xiàng)目的默認(rèn)屬性。
如果在項(xiàng)目數(shù)據(jù)庫(kù)中,某個(gè)項(xiàng)目下有user.user-id,那么這個(gè)用戶(hù)就是所屬項(xiàng)目成員。
如果在項(xiàng)目數(shù)據(jù)庫(kù)中,某個(gè)項(xiàng)目下有g(shù)roup.group-name,那么這個(gè)用戶(hù)組就是所屬項(xiàng)目成員。
如果在項(xiàng)目數(shù)據(jù)庫(kù)中,某個(gè)項(xiàng)目下有default標(biāo)志,那么這個(gè)項(xiàng)目就是默認(rèn)項(xiàng)目。
2.用useradd, usermod和passmgmt設(shè)置用戶(hù)屬性
可以用下列命令及-k選項(xiàng)在一些本地文件中來(lái)設(shè)置用戶(hù)的屬性:
passmgmt:修改用戶(hù)信息。
useradd:給用戶(hù)設(shè)置默認(rèn)的項(xiàng)目。
usermod:修改用戶(hù)信息。
這些被修改的本地文件是:
/etc/group
/etc/passwd
/etc/project
/etc/shadow
/etc/user_attr
3.項(xiàng)目數(shù)據(jù)庫(kù)介紹
你可以存儲(chǔ)項(xiàng)目數(shù)據(jù)到上面介紹的本地文件、NIS服務(wù)或LDAP服務(wù)中,訪問(wèn)時(shí)都需要權(quán)限模塊(PAM)的認(rèn)證。
4.名稱(chēng)服務(wù)的設(shè)置
項(xiàng)目數(shù)據(jù)庫(kù)的管理支持名稱(chēng)服務(wù)。名稱(chēng)服務(wù)是在/etc/nsswitch.conf中定義的。在默認(rèn)情況下,文件列表是首先被查詢(xún)的。當(dāng)然也可以有其他查詢(xún)次序。下面是默認(rèn)次序:
project: files [nis] [ldap]
5.本地文件/etc/project文件的格式
圖 -2 是默認(rèn)的/etc/project文件的內(nèi)容

圖 -2 默認(rèn)的/etc/project文件的內(nèi)容
這個(gè)/etc/project文件包含一行下列形式的項(xiàng)目信息:
projname:projid:comment:user-list:group-list:attributes
這個(gè)信息定義如下:
projname:項(xiàng)目名稱(chēng)。
projid:在系統(tǒng)中項(xiàng)目惟一的號(hào)碼。
comment:項(xiàng)目的描述。
user-list:用逗號(hào)分隔的屬于這個(gè)項(xiàng)目的用戶(hù)列表。
group-list:用逗號(hào)分隔的屬于這個(gè)項(xiàng)目的用戶(hù)組列表。
attributes:用分號(hào)分隔的name-value對(duì),name是屬性名,value是屬性的值。具體見(jiàn)16.3.3節(jié)。
#p#
五、Solaris 10 項(xiàng)目相關(guān)命令列表
項(xiàng)目和任務(wù)的一些命令如表-1所示。
表-1 項(xiàng)目和任務(wù)的一些命令
命 令 |
描 述 |
projects |
顯示項(xiàng)目成員;從項(xiàng)目數(shù)據(jù)庫(kù)列出項(xiàng)目;打印給出項(xiàng)目的信息;如果沒(méi)給出項(xiàng)目名,就列出所有項(xiàng)目信息;使用-l選項(xiàng)打印詳細(xì)信息 |
newtask |
運(yùn)行Shell或?qū)iT(mén)的命令來(lái)完成新的任務(wù);也可以被用來(lái)改變被任務(wù)或項(xiàng)目綁定的進(jìn)程。使用-F選項(xiàng)可以創(chuàng)建最終的任務(wù) |
useradd |
增加默認(rèn)的項(xiàng)目定義到本地文件 |
userdel |
從本地文件中刪除用戶(hù)賬號(hào) |
usermod |
修改用戶(hù)登錄系統(tǒng)的信息 |
prstat |
使用-J選項(xiàng),顯示當(dāng)前系統(tǒng)項(xiàng)目和程序的各種統(tǒng)計(jì)信息; 使用-T選項(xiàng),顯示當(dāng)前系統(tǒng)任務(wù)和程序的各種統(tǒng)計(jì)信息 |
id |
使用-p選項(xiàng),顯示當(dāng)前項(xiàng)目ID、用戶(hù)和組的ID |
pgrep |
使用-J選項(xiàng),列出當(dāng)前用戶(hù)項(xiàng)目ID 使用-T選項(xiàng),列出當(dāng)前用戶(hù)任務(wù)ID |
pkill |
使用-J選項(xiàng),終結(jié)當(dāng)前ID項(xiàng)目 使用-T選項(xiàng),終結(jié)當(dāng)前ID任務(wù) |
projmod |
修改本地項(xiàng)目信息。也可以通過(guò)編輯/ect/project文件來(lái)達(dá)到修改項(xiàng)目信息的目的 |
projdel |
刪除本地項(xiàng)目信息。也可以通過(guò)編輯/ect/project文件來(lái)達(dá)到刪除項(xiàng)目信息的目的 |
六、Solaris 10 項(xiàng)目相關(guān)命令實(shí)例
1 顯示當(dāng)前用戶(hù)、用戶(hù)組ID、任務(wù)ID
使用id –p 命令選項(xiàng)即可顯示當(dāng)前用戶(hù)、用戶(hù)組ID:
# id -p
uid=0(root) gid=0(root) projid=1(user.root)
2增加一個(gè)名為books項(xiàng)目,項(xiàng)目ID為1443,并授權(quán)項(xiàng)目給cjh用戶(hù)。
# projadd -U cjh -p 4113 books
為這個(gè)books項(xiàng)目增加一些注釋?zhuān)?/FONT>
# projmod -c ‘Books Project’ booksite
檢查項(xiàng)目?jī)?nèi)容:
# projects –l如圖 -3 。
圖-3檢查項(xiàng)目?jī)?nèi)容
從圖-3 可以看到Books Project注釋已經(jīng)添加。
3刪除/etc/project中的項(xiàng)目
# projdel books
同樣,查看項(xiàng)目輸出,發(fā)現(xiàn)books項(xiàng)目已經(jīng)不存在了。
# projects –l
查看cjh用戶(hù)的項(xiàng)目,已經(jīng)變成默認(rèn):
# su – cjh
# projects
default
4創(chuàng)建新的任務(wù)
首先,以目標(biāo)項(xiàng)目(books)的成員身份登錄,在booksite項(xiàng)目中創(chuàng)建新的任務(wù):
machine% newtask -v -p books
16
上面創(chuàng)建的任務(wù)ID為16,并默認(rèn)放置用戶(hù)自己的Shell到這個(gè)任務(wù)中。
5.如何將活動(dòng)進(jìn)程移動(dòng)到新的任務(wù)中
(1)使用pgrep命令,查看book_catalog的進(jìn)程ID:
# pgrep book_catalog
8100
(2)關(guān)聯(lián)這個(gè)進(jìn)程到所屬項(xiàng)目名為booksite的新任務(wù)中:
#newtask -v -p booksite -c 8100
17
(3)列出新任務(wù)中的進(jìn)程ID:
# pgrep -T 17
8100
現(xiàn)在,book_catalog進(jìn)程屬于項(xiàng)目booksite的ID號(hào)為17的新任務(wù)。
總結(jié):本文介紹了項(xiàng)目和任務(wù)的關(guān)系,以及在Solaris 10中,如何使用項(xiàng)目和任務(wù)來(lái)管理、分配資源。
【編輯推薦】