Omitir V�nculos de navegaci�n | |
Salir de la Vista de impresi�n | |
![]() |
Administración de Oracle Solaris: zonas de Oracle Solaris, zonas de Oracle Solaris 10 y gestión de recursos Oracle Solaris 11 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 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 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 exact 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