Solaris container - Project and Task
来源:互联网 发布:打开vs2012的数据库 编辑:程序博客网 时间:2024/06/05 05:25
1. 系统如何确定用户的缺省项目?
要登录到系统,必须为用户指定一个缺省项目。即使用户不在缺省项目中指定的用户或组列表中,此用户仍会自动成为该项目的成员。根据getdefaultproj()库函数逻辑,系统按顺序执行以下步骤,以确定用户的缺省项目:
1) 如果用户在 /etc/user_attr 扩展用户属性数据库中为某个条目定义了 project 属性,则 project 属性的值即为缺省项目。
2) 如果 project 数据库中存在名为 user.user-id 的项目,则此项目即为缺省项目。
3) 如果 project 数据库中存在名为 group.group-name 的项目,其中 group-name 是在 passwd 文件中指定的用户缺省组的名称,则此项目即为缺省项目。
4) 如果 project 数据库中存在特殊的项目 default,则此项目即为缺省项目。
2. 项目,任务和进程的关系
3. 查看系统中的project和task信息:
ps: 使用带有 -o 选项的 ps 命令可显示任务和项目 ID。
-bash-3.00# ps -o user,pid,uid,projid,taskid
USER PID UID PROJID TASKID
root 29506 0 1 80
root 29511 0 1 80
id: 使用带有 -p 选项的 id 命令可列显当前的项目 ID,以及用户和组 ID。如果提供了 user 操作数,则还会列显与该用户的正常登录相关联的项目:
-bash-3.00# id -p
uid=0(root) gid=0(root) projid=1(user.root)
pgrep, pkill: 将进程与特定列表中的项目ID进行匹配,带有 -J 选项的 pgrep 和 pkill 命令:
# pgrep -J projidlist
# pkill -J projidlist
将进程与特定列表中的任务ID进行匹配,带有 -T 选项的 pgrep 和 pkill 命令:
# pgrep -T taskidlist
# pkill -T taskidlist
prstat:
-bash-3.00# prstat -J
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
7941 root 114M 36M sleep 59 0 0:00:14 0.1% java/18
29514 root 4908K 2996K cpu1 49 0 0:00:00 0.1% prstat/1
7699 root 111M 26M sleep 59 0 0:00:07 0.1% mixer_applet2/1
18054 root 111M 26M sleep 59 0 0:00:07 0.1% mixer_applet2/1
2999 noaccess 93M 65M sleep 59 0 0:00:18 0.1% java/26
6363 root 69M 55M sleep 59 0 0:00:15 0.1% java/21
1981 root 14M 11M sleep 59 0 0:00:30 0.1% Xvnc/1
29441 root 97M 22M sleep 59 0 0:00:10 0.0% gnome-terminal/2
7628 root 78M 57M sleep 59 0 0:00:16 0.0% java/28
23362 root 179M 72M sleep 59 0 0:00:25 0.0% firefox-bin/7
29506 root 3232K 1996K sleep 49 0 0:00:00 0.0% bash/1
17734 root 112M 27M sleep 59 0 0:00:01 0.0% gnome-panel/1
1672 root 2588K 1156K sleep 59 0 0:00:00 0.0% in.routed/1
2563 root 48M 31M sleep 59 0 0:00:09 0.0% Xorg/1
1762 root 6620K 3172K sleep 59 0 0:00:00 0.0% nscd/26
9 root 11M 9608K sleep 59 0 0:00:14 0.0% svc.configd/19
1502 root 3084K 1624K sleep 59 0 0:00:00 0.0% hald-runner/1
2558 root 10M 3884K sleep 59 0 0:00:00 0.0% dtlogin/1
29443 root 2908K 1924K sleep 59 0 0:00:00 0.0% bash/1
115 root 1580K 1060K sleep 59 0 0:00:00 0.0% powerd/3
102 root 3240K 1852K sleep 59 0 0:00:00 0.0% picld/3
29442 root 1952K 1064K sleep 59 0 0:00:00 0.0% gnome-pty-helpe/1
1376 root 3144K 1328K sleep 59 0 0:00:00 0.0% cron/1
98 daemon 8796K 4132K sleep 59 0 0:00:00 0.0% kcfd/3
PROJID NPROC SWAP RSS MEMORY TIME CPU PROJECT
1 64 311M 516M 25% 0:01:34 0.5% user.root
0 48 208M 194M 9.5% 0:01:44 0.2% system
3 2 1488K 4748K 0.2% 0:00:00 0.0% default
Total: 114 processes, 337 lwps, load averages: 0.03, 0.04, 0.06
cron 命令将发出 settaskid,以确保每个 cron、at 和 batch 作业都是在单独的任务中执行,并对提交用户使用了适当的缺省项目。at 和 batch 命令也会捕获当前项目 ID,以确保在运行 at 作业时恢复项目 ID。su 命令通过创建新任务加入目标用户的缺省项目,作为模拟登录的一部分。
4. 添加,删除一个project
添加名为 booksite 的项目。将该项目指定给名为 mark 的用户,同时指定项目 ID 号 4113。
-bash-3.00# projadd -U user -p 4113 build
-bash-3.00# projmod -c 'opensolaris build user' build
-bash-3.00# 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:
build
projid : 4113
comment: "opensolaris build user"
users : user
groups : (none)
attribs:
-bash-3.00# projdel build
-bash-3.00# 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:
5.在指定的project中创建新任务
系统中为user用户创建了build project,现在需要在build中以user用户创建一个task:
以user的身份登陆,并运行如下命令:
-bash-3.00$ id -p
uid=65535(user) gid=1(other) projid=3(default)
-bash-3.00$ projects
default build
-bash-3.00$ newtask -v -p build
94
bash-3.00$ id -p
uid=65535(user) gid=1(other) projid=100(build)
bash-3.00$ prstat -J
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
29600 user 6004K 3480K cpu0 59 0 0:00:00 0.3% prstat/1
7941 root 114M 36M sleep 59 0 0:00:17 0.1% java/18
18054 root 111M 26M sleep 59 0 0:00:10 0.1% mixer_applet2/1
7699 root 111M 26M sleep 59 0 0:00:10 0.1% mixer_applet2/1
6363 root 69M 55M sleep 59 0 0:00:18 0.1% java/21
2999 noaccess 93M 65M sleep 59 0 0:00:20 0.1% java/26
7628 root 78M 57M sleep 59 0 0:00:18 0.0% java/28
23362 root 179M 72M sleep 59 0 0:00:26 0.0% firefox-bin/7
1981 root 14M 11M sleep 59 0 0:00:32 0.0% Xvnc/1
20129 root 6432K 4260K sleep 59 0 0:00:00 0.0% xscreensaver/1
29596 user 3228K 1980K sleep 59 0 0:00:00 0.0% bash/1
29441 root 97M 22M sleep 59 0 0:00:11 0.0% gnome-terminal/2
17734 root 112M 27M sleep 59 0 0:00:02 0.0% gnome-panel/1
1762 root 6620K 3192K sleep 59 0 0:00:00 0.0% nscd/26
1502 root 3084K 1624K sleep 59 0 0:00:00 0.0% hald-runner/1
2558 root 10M 3884K sleep 59 0 0:00:00 0.0% dtlogin/1
29443 root 2908K 1928K sleep 59 0 0:00:00 0.0% bash/1
115 root 1580K 1060K sleep 59 0 0:00:00 0.0% powerd/3
102 root 3240K 1852K sleep 59 0 0:00:00 0.0% picld/3
29442 root 1952K 1064K sleep 59 0 0:00:00 0.0% gnome-pty-helpe/1
1376 root 3152K 1336K sleep 59 0 0:00:00 0.0% cron/1
98 daemon 8796K 4132K sleep 59 0 0:00:00 0.0% kcfd/3
90 root 5640K 2300K sleep 59 0 0:00:00 0.0% syseventd/15
17265 root 3296K 1064K sleep 59 0 0:00:00 0.0% ssh-agent/1
PROJID NPROC SWAP RSS MEMORY TIME CPU PROJECT
1 62 309M 514M 25% 0:01:50 0.4% user.root
100 2 2420K 5504K 0.3% 0:00:00 0.3% build
0 48 208M 194M 9.5% 0:01:50 0.1% system
3 2 1488K 4756K 0.2% 0:00:00 0.0% default
6.将运行的进程移至新任务
查看当前shell所在的project。
-bash-3.00$ id -p
uid=65535(user) gid=1(other) projid=3(default)
用户从属的project。
-bash-3.00$ projects
default build
创建进程。
-bash-3.00$ sleep 1200 &
[1] 29624
获得进程号。
-bash-3.00$ pgrep sleep
29624
创建新任务,并将进程29624放在该任务中。
-bash-3.00$ newtask -v -p build -c 29624
95
当前shell仍然在default project中。
-bash-3.00$ id -p
uid=65535(user) gid=1(other) projid=3(default)
-bash-3.00$ projects
default build
验证进程已经移至新的task中。
-bash-3.00$ pgrep -T 95
29624
7.改变项目的属性
如何向项目中添加属性值
可以使用带有 -a 和 -K 选项的 projmod 命令将值添加到项目属性中。如果属性不存在,则会创建一个。
1).成为超级用户或承担等效角色。
2).在项目 myproject 中添加无属性值的资源控制属性 task.max-lwps。加入项目的任务只有系统属性值。
# projmod -a -K task.max-lwps myproject
3).然后可以向 myproject 项目中的 task.max-lwps 添加值。此值包含权限级别、阈值以及与达到阈值关联的操作。
# projmod -a -K "task.max-lwps=(priv,100,deny)" myproject
4).由于资源控制属性可以具有多个值,因此可以使用同一个选项将其他值添加到现有的值列表中。
# projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject
用逗号分隔多个值。现在 task.max-lwps 条目应为:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
如何从项目中删除属性值
此过程假设具有以下值:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
1).成为超级用户或承担等效角色。
2).要从项目 myproject 的资源控制属性 task.max-lwps 中删除属性值,请使用带有 -r 和 -K 选项的 projmod 命令。
# projmod -r -K "task.max-lwps=(priv,100,deny)" myproject
如果 task.max-lwps 具有多个值,例如:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
则会删除第一个匹配的值。结果将为:
task.max-lwps=(priv,1000,signal=KILL)
如何从项目中删除资源控制属性
要删除项目 myproject 中的资源控制属性 task.max-lwps,请使用带有 -r 和 -K 选项的 projmod 命令。
1).成为超级用户或承担等效角色。
2).从项目 myproject 中删除属性 task.max-lwps 及其所有值:
# projmod -r -K task.max-lwps myproject
如何替换项目的属性和属性值
要替换项目 myproject 中属性 task.max-lwps 的值,请使用带有 -s 和 -K 选项的 projmod 命令。如果属性不存在,则会创建一个。
1.成为超级用户或承担等效角色。
2.使用所示的新值替换当前的 task.max-lwps 值:
# projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject
结果为:
task.max-lwps=(priv,100,none),(priv,120,deny)
如何删除资源控制属性的现有值
1).成为超级用户或承担等效角色。
2).要从项目 myproject 中删除 task.max-lwps 的当前值,请键入:
# projmod -s -K task.max-lwps myproject
- Solaris container - Project and Task
- SSIS 组件使用 Foreach Loop Container and Execute SQL Task
- Solaris Container 演示
- Solaris container – Extended Accounting
- Solaris container – Resource Management
- 不看死不瞑目的文档 :Solaris container - Container Example
- 不看死不瞑目的文档 :Solaris container - Solaris Zone
- 不看死不瞑目的文档 :Solaris container - Solaris Zone Example
- 不看死不瞑目的文档 :Solaris container - Introduction
- VCF Component and Container
- Kubernetes and Container Operations
- Presentational and Container Components
- Gradle 中的 Task 跟 Project
- Geronimo project for populate J2EE container
- Attractiveness and task execution
- Activity Affinity and task
- Task and Back Stack
- JAVA Timer and task
- SQL去除某字段重复记录
- 木马免杀原理详解
- UML:业务用例
- 如何使IE不打印链接地址!
- C# winform 中 MD5 加密
- Solaris container - Project and Task
- 初学线程
- 在 C# 中实现 Singleton
- C#实现目标路径下文件递归的类
- linux u盘
- 一个简单的通讯录程序
- log4j使用步骤
- 如何在屏幕上画虚线矩形框?
- Excel应用评论