Navigationslinks überspringen | |
Druckansicht beenden | |
![]() |
SystemAdministrationshandbuch: Oracle Solaris Container - RessourcenAdministration und Solaris Zones Oracle Solaris 10 1/13 Information Library (Deutsch) |
1. Einführung in Solaris 10-RessourcenAdministration
2. Einführung in Projekte und Aufgaben
3. Verwalten von Projekten und Aufgaben (Vorgehen)
4. Einführung in das Extended Accounting
5. Verwalten des Extended Accounting (Vorgehen)
Verwalten des Extended Accounting (Übersicht der Schritte)
Verwenden des Extended Accounting
So aktivieren Sie das Extended Accounting für Prozesse, Aufgaben und Flows
So aktivieren Sie das Extended Accounting mit einem Startskript
So zeigen Sie den Extended Accounting-Status an
So zeigen Sie die verfügbaren Accounting-Ressourcen an
So deaktivieren Sie das Prozess-, Aufgaben- und Flow-Accounting
Verwenden der Perl-Schnittstelle für libexacct
So drucken Sie rekursiv den Inhalt eines exacct-Objekts
So erstellen Sie einen neuen Gruppendatensatz und schreiben ihn in eine Datei
So drucken Sie den Inhalt einer exacct-Datei
Beispiel einer Ausgabe von Sun::Solaris::Exacct::Object->dump()
6. Einführung in die Resource Controls
7. Verwalten von Resource Controls (Vorgehen)
8. Einführung in den Fair Share Scheduler
9. Verwalten des Fair Share Scheduler (Vorgehen)
10. Einführung in die Steuerung des reellen Arbeitsspeichers mithilfe des Resource Capping Daemons
11. Verwalten des Resource Capping Daemons (Vorgehen)
12. Einführung in Resource Pools
13. Erstellen und Verwalten von Resource Pools (Vorgehen)
14. Beispiel für die Konfiguration der RessourcenAdministration
15. Resource Controls in der Solaris Management-Konsole
16. Einführung in Solaris Zones
17. Einführung in die Konfiguration einer nicht-globalen Zone
18. Planen und Konfigurieren von nicht-globalen Zonen (Vorgehen)
19. Einführung in das Installieren, Anhalten, Klonen und Deinstallieren von nicht-globalen Zonen
20. Installieren, Booten, Anhalten, Deinstallieren und Klonen von nicht-globalen Zonen (Vorgehen)
21. Einführung in das Anmeldeverfahren bei einer nicht-globalen Zone
22. Anmelden bei nicht-globalen Zonen (Vorgehen)
23. Verschieben und Migrieren von nicht-globalen Zonen (Vorgehen)
24. Oracle Solaris 10 9/10: Migrieren eines reellen Oracle Solaris-Systems in eine Zone (Aufgaben)
27. Verwaltung der Oracle Solaris-Zonen (Überblick)
28. Verwaltung der Oracle Solaris-Zonen (Aufgaben)
29. Aktualisieren eines Oracle Solaris 10-Systems mit installierten nicht-globalen Zonen
30. Behebung von verschiedenen Problemen mit Oracle Solaris Zones
31. Allgemeine Informationen zu Branded Zones und der Linux Branded Zone
32. Einführung in die Planung der Konfiguration einer lx Branded Zone
33. Konfigurieren einer lx Branded Zone (Vorgehen)
34. Einführung in das Installieren, Booten, Anhalten, Klonen und Deinstallieren von lx Branded Zones
35. Installieren, Booten, Anhalten, Deinstallieren und Klonen von lx Branded Zones (Vorgehen)
36. Anmelden bei lx Branded Zones (Vorgehen)
37. Verschieben und Migrieren von lx Branded Zones (Vorgehen)
38. Verwalten und Ausführen von Anwendungen in lx Branded Zones (Vorgehen)
Mit dem folgenden Code drucken Sie rekursiv den Inhalt eines exacct-Objekts. Diese Eigenschaft wird von der Bibliothek als Funktion Sun::Solaris::Exacct::Object::dump() bereitgestellt. Diese Eigenschaft ist auch über die Convenience-Funktion ea_dump_object() verfügbar.
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); } }
Mit dem folgenden Skript erstellen Sie einen neuen Gruppendatensatz und schreiben ihn in eine Datei namens /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;
Mit dem folgenden Perl-Skript drucken Sie den Inhalt einer exacct-Datei.
#!/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);
Das Folgende ist ein Beispiel für eine Ausgabe, die durch das Ausführen von Sun::Solaris::Exacct::Object->dump() an der Datei erzeugt wird, die unter So erstellen Sie einen neuen Gruppendatensatz und schreiben ihn in eine Datei erstellt wurde.
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