| Omitir Vínculos de navegación | |
| Salir de la Vista de impresión | |
|
Administración de Oracle Solaris 11.1: zonas de Oracle Solaris, zonas de Oracle Solaris 10 y gestión de recursos Oracle Solaris 11.1 Information Library (Español) |
Parte I Gestión de recursos de Oracle Solaris
1. Introducción a la gestión de recursos
2. Proyectos y tareas (información general)
3. Administración de proyectos y tareas
4. Contabilidad ampliada (descripción general)
5. Administración de contabilidad ampliada (tareas)
Administración de la función de contabilidad ampliada (mapa de tareas)
Uso de funciones de cuentas extendidas
Cómo mostrar el estado de la contabilidad ampliada
Cómo ver los recursos de cuentas disponibles
Cómo desactivar la contabilidad de procesos, tareas, flujos y gestión de redes
Uso de la interfaz de Perl para libexacct
Cómo imprimir de forma recurrente el contenido de un objeto exacct
Cómo crear un registro de grupo y guardarlo en un archivo
6. Controles de recursos (descripción general)
7. Administración de controles de recursos (tareas)
8. Programador de reparto justo (descripción general)
9. Administración del programador de reparto justo (tareas)
10. Control de memoria física utilizando el daemon de límite de recursos (descripción general)
11. Administración del daemon de límite de recursos (tareas)
12. Agrupaciones de recursos (descripción general)
13. Creación y administración de agrupaciones de recursos (tareas)
14. Ejemplo de configuración de administración de recursos
Parte II Zonas de Oracle Solaris
15. Introducción a Zonas de Oracle Solaris
16. Configuración de zonas no globales (descripción general)
17. Planificación y configuración de zonas no globales (tareas)
19. Cómo instalar, iniciar, cerrar, detener, desinstalar y clonar zonas no globales (tareas)
20. Inicio de sesión en zonas no globales (descripción general)
21. Registro en zonas no globales (tareas)
22. Acerca de migraciones de zonas y la herramienta zonep2vchk
23. Migración de sistemas Oracle Solaris y migración de zonas no globales (tareas)
25. Administración de zonas de Oracle Solaris (descripción general)
26. Administración de zonas de Oracle Solaris (tareas)
27. Configuración y administración de zonas inmutables
28. Resolución de problemas relativos a las zonas de Oracle Solaris
Parte III Zonas de Oracle Solaris 10
29. Introducción a las zonas de Oracle Solaris 10
30. Evaluación de un sistema Oracle Solaris 10 y creación de un archivo
32. Configuración de la zona con marca solaris10
33. Instalación de zona con marca solaris10
34. Inicio de una zona, inicio de sesión y migración de zona
Utilice el código siguiente para imprimir de forma recurrente el contenido de un objeto exacct. Tenga en cuenta que esta función la proporciona la biblioteca como función de Sun::Solaris::Exacct::Object::dump(). Esta función también está disponible mediante la función de conveniencia ea_dump_object().
sub dump_object
{
my ($obj, $indent) = @_;
my $istr = ' ' x $indent;
#
# Retrieve the catalog tag. Because we are
# doing this in an array context, the
# catalog tag will be returned as a (type, catalog, id)
# triplet, where each member of the triplet will behave as
# an integer or a string, depending on context.
# If instead this next line provided a scalar context, e.g.
# my $cat = $obj->catalog()->value();
# then $cat would be set to the integer value of the
# catalog tag.
#
my @cat = $obj->catalog()->value();
#
# If the object is a plain item
#
if ($obj->type() == &EO_ITEM) {
#
# Note: The '%s' formats provide s string context, so
# the components of the catalog tag will be displayed
# as the symbolic values. If we changed the '%s'
# formats to '%d', the numeric value of the components
# would be displayed.
#
printf("%sITEM\n%s Catalog = %s|%s|%s\n",
$istr, $istr, @cat);
$indent++;
#
# Retrieve the value of the item. If the item contains
# in turn a nested exacct object (i.e., an item or
# group),then the value method will return a reference
# to the appropriate sort of perl object
# (Exacct::Object::Item or Exacct::Object::Group).
# We could of course figure out that the item contained
# a nested item orgroup by examining the catalog tag in
# @cat and looking for a type of EXT_EXACCT_OBJECT or
# EXT_GROUP.
#
my $val = $obj->value();
if (ref($val)) {
# If it is a nested object, recurse to dump it.
dump_object($val, $indent);
} else {
# Otherwise it is just a 'plain' value, so
# display it.
printf("%s Value = %s\n", $istr, $val);
}
#
# Otherwise we know we are dealing with a group. Groups
# represent contents as a perl list or array (depending on
# context), so we can process the contents of the group
# with a 'foreach' loop, which provides a list context.
# In a list context the value method returns the content
# of the group as a perl list, which is the quickest
# mechanism, but doesn't allow the group to be modified.
# If we wanted to modify the contents of the group we could
# do so like this:
# my $grp = $obj->value(); # Returns an array reference
# $grp->[0] = $newitem;
# but accessing the group elements this way is much slower.
#
} else {
printf("%sGROUP\n%s Catalog = %s|%s|%s\n",
$istr, $istr, @cat);
$indent++;
# 'foreach' provides a list context.
foreach my $val ($obj->value()) {
dump_object($val, $indent);
}
printf("%sENDGROUP\n", $istr);
}
}
Utilice esta secuencia de comandos para crear un registro de grupos y guardarlo en un archivo denominado /tmp/exacct.
#!/usr/bin/perl
use strict;
use warnings;
use Sun::Solaris::Exacct qw(:EXACCT_ALL);
# Prototype list of catalog tags and values.
my @items = (
[ &EXT_STRING | &EXC_DEFAULT | &EXD_CREATOR => "me" ],
[ &EXT_UINT32 | &EXC_DEFAULT | &EXD_PROC_PID => $$ ],
[ &EXT_UINT32 | &EXC_DEFAULT | &EXD_PROC_UID => $< ],
[ &EXT_UINT32 | &EXC_DEFAULT | &EXD_PROC_GID => $( ],
[ &EXT_STRING | &EXC_DEFAULT | &EXD_PROC_COMMAND => "/bin/rec" ],
);
# Create a new group catalog object.
my $cat = ea_new_catalog(&EXT_GROUP | &EXC_DEFAULT | &EXD_NONE)
# Create a new Group object and retrieve its data array.
my $group = ea_new_group($cat);
my $ary = $group->value();
# Push the new Items onto the Group array.
foreach my $v (@items) {
push(@$ary, ea_new_item(ea_new_catalog($v->[0]), $v->[1]));
}
# Open the exacct file, write the record & close.
my $f = ea_new_file('/tmp/exacct', &O_RDWR | &O_CREAT | &O_TRUNC)
|| die("create /tmp/exacct failed: ", ea_error_str(), "\n");
$f->write($group);
$f = undef;
Utilice la siguiente secuencia de comandos Perl para imprimir el contenido de un archivo exacct.
#!/usr/bin/perl
use strict;
use warnings;
use Sun::Solaris::Exacct qw(:EXACCT_ALL);
die("Usage is dumpexacct <exacct file>\n") unless (@ARGV == 1);
# Open the exacct file and display the header information.
my $ef = ea_new_file($ARGV[0], &O_RDONLY) || die(error_str());
printf("Creator: %s\n", $ef->creator());
printf("Hostname: %s\n\n", $ef->hostname());
# Dump the file contents
while (my $obj = $ef->get()) {
ea_dump_object($obj);
}
# Report any errors
if (ea_error() != EXR_OK && ea_error() != EXR_EOF) {
printf("\nERROR: %s\n", ea_error_str());
exit(1);
}
exit(0);
A continuación se incluye un ejemplo de salida al ejecutar Sun::Solaris::Exacct::Object->dump() en el archivo creado en Cómo crear un registro de grupo y guardarlo en un archivo.
Creator: root
Hostname: localhost
GROUP
Catalog = EXT_GROUP|EXC_DEFAULT|EXD_NONE
ITEM
Catalog = EXT_STRING|EXC_DEFAULT|EXD_CREATOR
Value = me
ITEM
Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PID
Value = 845523
ITEM
Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_UID
Value = 37845
ITEM
Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_GID
Value = 10
ITEM
Catalog = EXT_STRING|EXC_DEFAULT|EXD_PROC_COMMAND
Value = /bin/rec
ENDGROUP