Omitir Vínculos de navegación | |
Salir de la Vista de impresión | |
Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris Oracle Solaris 10 1/13 Information Library (Español) |
1. Introducción a administración de recursos de Solaris 10
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 activar la contabilidad ampliada para procesos, tareas y flujos
Como activar la contabilidad ampliada con una secuencia de comandos de inicio
Cómo mostrar el estado de la contabilidad ampliada
Cómo ver los recursos de cuentas disponibles
Cómo desactivar las cuentas de procesos, tareas y flujos
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
15. Función de control de recursos en Solaris Management Console
16. Introducción a Solaris Zones
17. Configuración de zonas no globales (descripción general)
18. Planificación y configuración de zonas no globales (tareas)
19. Cómo instalar, detener, clonar y desinstalar zonas no globales (descripción general)
20. Cómo instalar, iniciar, detener, desinstalar y clonar zonas no globales (tareas)
21. Inicio de sesión en zonas no globales (descripción general)
22. Registro en zonas no globales (tareas)
23. Movimiento y migración de zonas no globales (tareas)
24. Oracle Solaris 10 9/10: migración de un sistema Oracle Solaris físico a una zona (tareas)
25. Paquetes y parches en un sistema Oracle Solaris con zonas instaladas (descripción general)
27. Administración de zonas de Oracle Solaris (descripción general)
28. Administración de zonas de Oracle Solaris (tareas)
29. Actualización de un sistema Oracle Solaris 10 con zonas no globales instaladas
30. Resolución de problemas relativos a las zonas de Oracle Solaris
31. Zonas con marca y zona con marca Linux
32. Planificación de la configuración de zonas con marca lx (descripción general)
33. Configuración de las zonas con marca lx (tareas)
35. Cómo instalar, iniciar, detener, desinstalar y clonar zonas con marca lx (tareas)
36. Inicio de sesión en zonas con marca lx (tareas)
37. Cómo mover y migrar zonas con marca lx (tareas)
38. Administración y ejecución de aplicaciones en zonas con marca lx (tareas)
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 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