系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

管理项目

Procedure如何定义项目和查看当前项目

此示例说明如何使用 projadd 命令添加项目条目,以及如何使用 projmod 命令修改此条目。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 projects -l 查看系统上缺省的 /etc/project 文件。


    # projects -l
    system:0::::
    user.root:1::::
    noproject:2::::
    default:3::::
    group.staff:10::::system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
  3. 添加名为 booksite 的项目。将该项目指定给名为 mark 的用户,同时指定项目 ID 号 4113


    # projadd -U mark -p 4113 booksite
    
  4. 再次查看 /etc/project 文件。


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    booksite
            projid : 4113
            comment: ""
            users  : mark
            groups : (none)
            attribs: 
  5. 在注释字段中添加描述项目的注释。


    # projmod -c `Book Auction Project' booksite
    
  6. 查看 /etc/project 文件中的更改。


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    booksite
            projid : 4113
            comment: "Book Auction Project"
            users  : mark
            groups : (none)
            attribs: 
另请参见

要将项目、任务和进程绑定到池,请参见设置池属性并绑定到池

Procedure如何从 /etc/project 文件中删除项目

此示例显示如何使用 projdel 命令删除项目。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 projdel 命令删除 booksite 项目。


    # projdel booksite
    
  3. 显示 /etc/project 文件。


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
  4. 以用户 mark 的身份登录并键入 projects 来查看指定给此用户的项目。


    # su - mark
    # projects
    default

如何验证 /etc/project 文件的内容

如果没有给出编辑选项,projmod 命令便会验证 project 文件的内容。

要验证 NIS 映射,请以超级用户的身份登录,并键入以下内容:


# ypcat project | projmod -f —

注 –

ypcat project | projmod -f — 命令尚未实现。


要检查 /etc/project 文件的语法,请键入以下内容:


# projmod -n

如何获取项目成员身份信息

使用带有 -p 标志的 id 命令显示发出调用的进程的当前项目成员身份。


$ id -p
uid=100(mark) gid=1(other) projid=3(default)

Procedure如何创建新任务

  1. 以目标项目 booksite 的成员身份登录。

  2. 使用带有 -v(详细)选项的 newtask 命令在 booksite 项目中创建新任务,以获取系统任务 ID。


    machine% newtask -v -p booksite
    16

    通过执行 newtask,可以在指定项目中创建新任务并将用户的缺省 shell 置于此任务中。

  3. 查看发出调用的进程的当前项目成员身份。


    machine% id -p
    uid=100(mark) gid=1(other) projid=4113(booksite)

    现在该进程成为新项目的成员。

Procedure如何将正在运行的进程移至新任务

此示例显示如何将正在运行的进程与不同的任务和新项目进行关联。要执行此操作,您必须是超级用户,或者是进程属主并且是新项目的成员。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”


    注 –

    如果您是进程属主或新项目成员,则可以跳过此步骤。


  2. 获取 book_catalog 进程的进程 ID。


    # pgrep book_catalog
    	8100
  3. 将进程 8100booksite 项目中的新任务 ID 进行关联。


    # newtask -v -p booksite -c 8100
    	17

    -c 选项指定 newtask 作用于现有的命名进程。

  4. 确认任务到进程 ID 的映射。


    # pgrep -T 17
    	8100