2.8. 將​​​程​​​序​​​移​​​動​​​至​​​控​​​制​​​群​​​組​​​中​​​

您​​​可​​​透​​​過​​​執​​​行​​​ cgclassify 指​​​令​​​來​​​將​​​程​​​序​​​移​​​至​​​控​​​制​​​群​​​組​​​中​​​:
~]# cgclassify -g cpu,memory:group1 1701
cgclassify 的​​​語​​​法​​​為​​​:cgclassify -g subsystem:path_to_cgroup pidlist,而​​​:
  • subsystem(子​​​系​​​統​​​)代​​​表​​​一​​​個​​​逗​​​號​​​區​​​隔​​​開​​​的​​​子​​​系​​​統​​​清​​​單​​​,* 以​​​啟​​​動​​​與​​​所​​​有​​​可​​​用​​​子​​​系​​​統​​​相​​​聯​​​的​​​階​​​層​​​中​​​的​​​程​​​序​​​。​​​請​​​注​​​意​​​,若​​​相​​​同​​​名​​​稱​​​的​​​控​​​制​​​群​​​組​​​存​​​在​​​多​​​重​​​階​​​層​​​中​​​,-g 選​​​項​​​便​​​會​​​移​​​動​​​各​​​個​​​這​​​些​​​群​​​組​​​中​​​的​​​程​​​序​​​。​​​請​​​確​​​認​​​控​​​制​​​群​​​組​​​存​​​在​​​您​​​在​​​此​​​所​​​指​​​定​​​的​​​子​​​系​​​統​​​的​​​各​​​個​​​階​​​層​​​中​​​。​​​
  • path_to_cgroup 代​​​表​​​階​​​層​​​中​​​的​​​控​​​制​​​群​​​組​​​之​​​路​​​徑​​​
  • pid 清​​​單​​​代​​​表​​​以​​​空​​​格​​​隔​​​開​​​的​​​ process identifier(PID)清​​​單​​​
您​​​亦​​​可​​​在​​​ pid 之​​​前​​​附​​​加​​​一​​​個​​​ --sticky 選​​​項​​​,以​​​保​​​留​​​相​​​同​​​控​​​制​​​群​​​組​​​中​​​的​​​任​​​何​​​子​​​程​​​序​​​。​​​若​​​您​​​不​​​設​​​置​​​此​​​選​​​項​​​,並​​​且​​​ cgred daemon 正​​​在​​​執​​​行​​​的​​​話​​​,子​​​程​​​序​​​將​​​會​​​被​​​根​​​據​​​ /etc/cgrules.conf 中​​​的​​​設​​​定​​​,分​​​配​​​給​​​控​​​制​​​群​​​組​​​。​​​然​​​而​​​,程​​​序​​​本​​​身​​​將​​​會​​​保​​​留​​​在​​​您​​​所​​​啟​​​動​​​該​​​程​​​序​​​的​​​控​​​制​​​群​​​組​​​中​​​。​​​
透​​​過​​​使​​​用​​​ cgclassify,您​​​能​​​夠​​​同​​​時​​​地​​​移​​​動​​​多​​​項​​​程​​​序​​​。​​​比​​​方​​​說​​​,這​​​項​​​指​​​令​​​可​​​將​​​ PID 為​​​ 1701 以​​​及​​​ 1138 的​​​程​​​序​​​移​​​至​​​控​​​制​​​群​​​組​​​ group1/ 中​​​:
~]# cgclassify -g cpu,memory:group1 1701 1138
請​​​注​​​意​​​,欲​​​移​​​動​​​的​​​ PID 將​​​以​​​空​​​格​​​區​​​隔​​​開​​​來​​​,並​​​且​​​已​​​指​​​定​​​的​​​群​​​組​​​應​​​位​​​於​​​不​​​同​​​的​​​階​​​層​​​中​​​。​​​

額​​​外​​​方​​​式​​​

若​​​要​​​直​​​接​​​將​​​一​​​項​​​程​​​序​​​移​​​至​​​控​​​制​​​群​​​組​​​中​​​,請​​​將​​​它​​​的​​​ PID 寫​​​入​​​控​​​制​​​群​​​組​​​的​​​ tasks 檔​​​案​​​中​​​。​​​比​​​方​​​說​​​,若​​​要​​​將​​​ PID 為​​​ 1701 的​​​程​​​序​​​移​​​至​​​位​​​於​​​ /cgroup/lab1/group1/ 的​​​控​​​制​​​群​​​組​​​中​​​:
~]# echo 1701 > /cgroup/lab1/group1/tasks

2.8.1. cgred Daemon

Cgred 是​​​個​​​會​​​根​​​據​​​設​​​定​​​於​​​ /etc/cgrules.conf 檔​​​案​​​中​​​的​​​參​​​數​​​,來​​​將​​​工​​​作​​​移​​​至​​​控​​​制​​​群​​​組​​​中​​​的​​​ daemon。​​​/etc/cgrules.conf 檔​​​案​​​中​​​的​​​項​​​目​​​能​​​夠​​​是​​​以​​​下​​​兩​​​種​​​格​​​式​​​之​​​一​​​:
  • 使​​​用​​​者​​​ 階​​​層​​​ 控​​​制​​​群​​​組​​​
  • 使​​​用​​​者​​​:指​​​令​​​ 階​​​層​​​ 控​​​制​​​群​​​組​​​
例​​​如​​​:
maria			devices		/usergroup/staff
此​​​項​​​目​​​指​​​定​​​了​​​任​​​何​​​屬​​​於​​​使​​​用​​​者​​​ maria 的​​​程​​​序​​​將​​​根​​​據​​​指​​​定​​​於​​​ /usergroup/staff 控​​​制​​​群​​​組​​​中​​​的​​​參​​​數​​​,存​​​取​​​裝​​​置​​​子​​​系​​​統​​​。​​​若​​​要​​​相​​​聯​​​特​​​定​​​指​​​令​​​與​​​特​​​定​​​控​​​制​​​群​​​組​​​,請​​​如​​​下​​​附​​​加​​​command參​​​數​​​:
maria:ftp		devices		/usergroup/staff/ftp
項​​​目​​​現​​​在​​​指​​​定​​​了​​​當​​​名​​​稱​​​為​​​ maria 的​​​使​​​用​​​者​​​使​​​用​​​了​​​ ftp 指​​​令​​​時​​​,程​​​序​​​會​​​自​​​動​​​地​​​移​​​至​​​包​​​含​​​了​​​ devices 子​​​系​​​統​​​的​​​階​​​層​​​中​​​的​​​ /usergroup/staff/ftp 控​​​制​​​群​​​組​​​。​​​然​​​而​​​,請​​​注​​​意​​​,daemon 只​​​會​​​在​​​適​​​當​​​的​​​條​​​件​​​滿​​​足​​​後​​​,才​​​會​​​將​​​程​​​序​​​移​​​至​​​控​​​制​​​群​​​組​​​。​​​因​​​此​​​,ftp 程​​​序​​​可​​​能​​​會​​​在​​​錯​​​誤​​​的​​​群​​​組​​​中​​​,短​​​暫​​​執​​​行​​​。​​​此​​​外​​​,若​​​該​​​程​​​序​​​在​​​錯​​​誤​​​的​​​群​​​組​​​中​​​,快​​​速​​​地​​​衍​​​生​​​了​​​子​​​程​​​序​​​,這​​​些​​​子​​​程​​​序​​​將​​​可​​​能​​​不​​​會​​​被​​​移​​​動​​​。​​​
/etc/cgrules.conf 檔​​​案​​​中​​​的​​​項​​​目​​​可​​​包​​​含​​​下​​​列​​​額​​​外​​​標​​​記​​​法​​​:
  • @ —​​​ 當​​​放​​​置​​​在​​​使​​​用​​​者​​​之​​​前​​​,便​​​代​​​表​​​群​​​組​​​,而​​​非​​​各​​​別​​​的​​​使​​​用​​​者​​​。​​​比​​​方​​​說​​​,@admins 代​​​表​​​ admins 群​​​組​​​中​​​的​​​所​​​有​​​使​​​用​​​者​​​。​​​
  • * —​​​ 代​​​表​​​了​​​「​​​全​​​部​​​」​​​。​​​例​​​如​​​,子​​​系​​​統​​​欄​​​位​​​中​​​的​​​ * 代​​​表​​​了​​​所​​​有​​​的​​​子​​​系​​​統​​​。​​​
  • % —​​​ 代​​​表​​​了​​​一​​​個​​​與​​​上​​​面​​​一​​​行​​​中​​​的​​​項​​​目​​​相​​​同​​​的​​​項​​​目​​​。​​​例​​​如​​​:
    @adminstaff		devices		/admingroup
    @labstaff		%		%