从全局区域获取和设置非全局区域信息
除了使用 zonecfg、zoneadm、zonename 和 zlogin 之外,多种标准系统命令已经过修改,以便从全局区域查看或修改区域信息。
进程控制
ps 命令现在具有格式选项 -o zone 和 -o zoneid,用于输出进程的区域名称或区域 ID。然后,可以使用 grep 工具查找区域名称或区域 ID,以获取指定区域中相应进程的列表:
/bin/ps -efo user,zone,pid,ppid,c,stime,tty,time,comm |grep myzone
root myzone 18386 1 0 12:45:24 ? 00:00 /usr/sbin/syslogd
root myzone 18527 1 0 12:47:04 ? 00:00 /usr/lib/ssh/sshd
root myzone 18630 18527 0 13:38:26 ? 00:03 /usr/lib/ssh/sshd
root myzone 18300 1 0 12:45:22 ? 00:00 init
root myzone 18512 1 0 12:45:33 ? 00:01 /usr/sfw/sbin/snmpd
root myzone 18399 1 0 12:45:24 ? 00:00 /usr/sbin/cron
root myzone 18638 18634 0 13:38:31 pts/2 00:00 -sh
root myzone 18523 18300 0 12:47:03 ? 00:00 /usr/lib/saf/sac
root myzone 18401 1 0 12:45:25 ? 00:00 /usr/lib/autofs/automountd
daemon myzone 18324 1 0 12:45:23 ? 00:00 /usr/lib/crypto/kcfd
root myzone 18656 18638 0 13:44:26 pts/2 00:00 tcsh
daemon myzone 18349 1 0 12:45:23 ? 00:00 /usr/sbin/rpcbind
root myzone 18400 1 0 12:45:24 ? 00:00 /usr/sbin/nscd
root myzone 18402 1 0 12:45:25 ? 00:00 /usr/sbin/inetd
smmsp myzone 18435 1 0 12:45:29 ? 00:00 /usr/lib/sendmail
root myzone 18434 1 0 12:45:29 ? 00:00 /usr/lib/sendmail
root myzone 18442 1 0 12:45:29 ? 00:00 /usr/lib/utmpd
root myzone 18297 1 0 12:45:09 ? 00:00 zsched
root myzone 18618 18300 0 13:37:58 zoneconsole \
00:00 /usr/lib/saf/ttymon
root myzone 18496 1 0 12:45:31 ? 00:00 /usr/dt/bin/dtlogin
root myzone 18526 18523 0 12:47:03 ? 00:00 /usr/lib/saf/ttymon
许多命令已得到增强,可以按区域对其输出的信息进行过滤,或在其输入中包括某个进程所属的区域。ipcs、pgrep、pkill、ptree 和 prstat 命令现在都包含一个 -z 标志,用于指定区域。此外,prstat 的 -Z 标志不但可以列出所有进程,还可以按区域 ID 列出摘要。这有助于快速确定使用资源最多的区域。Truss 程序也已经过修改,可以识别特定于区域的调用,但仍不能识别区域。
在 Solaris OS 中,可以使用 coreadm 来设置核心转储文件名称模式。该模式现在在区域名称中加入了 %z。例如,如果在全局区域中将核心转储文件名称模式设置为 /var/core/core.%f.%p.%z,则在区域 myzone 中运行的 PID 为 123 的名为 foo 的程序的核心转储文件为:/var/core/core.foo.123.myzone。区域管理员还可以在非全局区域中运行 coreadm,以控制该特定区域的设置。
文件系统
如果从全局区域运行带 -Z 标志的 df,可以显示所有区域中的挂载。缺省情况下,df 只显示当前区域内的挂载。
df -Z
/ (/dev/dsk/c0t1d0s0 ): 1881482 blocks 247016 files
/devices (/devices ): 0 blocks 0 files
/usr (/dev/dsk/c0t1d0s3 ): 859490 blocks 271499 files
/proc (proc ): 0 blocks 1837 files
/etc/mnttab (mnttab ): 0 blocks 0 files
/dev/fd (fd ): 0 blocks 0 files
/var (/dev/dsk/c0t1d0s4 ): 1889810 blocks 239530 files
/var/run (swap ): 2111168 blocks 15280 files
/tmp (swap ): 2111168 blocks 15280 files
/zones (/dev/dsk/c0t1d0s5 ): 60468666 blocks 3681959 files
/zones/myzone/root/dev(/zones/myzone/dev ): 60468666 blocks 3681959 files
/zones/myzone/root/lib(/lib ): 1881482 blocks 247016 files
/zones/myzone/root/opt/sfw(/opt/sfw ): 60468666 blocks 3681959 files
/zones/myzone/root/platform(/platform ): 1881482 blocks 247016 files
/zones/myzone/root/sbin(/sbin ): 1881482 blocks 247016 files
/zones/myzone/root/usr(/usr ): 859490 blocks 271499 files
/zones/myzone/root/usr/local(/data ): 1881482 blocks 247016 files
/zones/myzone/root/proc(proc ): 0 blocks 1837 files
/zones/myzone/root/etc/mnttab(mnttab ): 0 blocks 0 files
/zones/myzone/root/dev/fd(fd ): 0 blocks 0 files
/zones/myzone/root/var/run(swap ): 2111168 blocks 15280 files
/zones/myzone/root/tmp(swap ): 2111168 blocks 15280 files
联网
ifconfig 实用程序已经过修改,以便根据区域粒度配置和查看接口,但是,接口的检测或取消检测只能通过全局区域进行。要通过全局区域将一个 IP 接口放入某个区域,请执行以下操作:
ifconfig <interface> zone {<name> | <number>}
ifconfig hme0:3 plumb 192.168.1.8 netmask 255.255.255.0 zone myzone up
要在全局区域中只输出全局区域的 IP 接口列表,请使用 ifconfig -aZ。使用 ifconfig -a 可以显示所有区域的网络接口。
ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
inet 192.168.1.7 netmask ff000000
lo0:1: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
zone myzone
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
ether 8:0:20:9e:b5:40
hme0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
zone myzone
inet 192.168.1.7 netmask ffffff00 broadcast 192.168.1.255
ifconfig -aZ
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
inet 192.168.1.7 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
ether 8:0:20:9e:b5:40
记帐
使用扩展记帐 (exacct) 时,每个区域都是单独配置的。记录同时写入全局区域的记帐文件和单个区域的记帐文件。任务和进程记帐记录现在都有一个新字段,名为 zonename。这就可以确定进程或任务所属的区域。