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

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