Systemverwaltungshandbuch: Oracle Solaris Container - Ressourcenverwaltung und Solaris Zones

Kapitel 3 Verwalten von Projekten und Aufgaben (Vorgehen)

In diesem Kapitel wird beschrieben, wie die Leistungsmerkmale Projekt und Aufgabe der Solaris-Ressourcenverwaltung verwendet werden.

In diesem Kapitel werden folgende Themen behandelt.

Eine allgemeine Einführung in die Leistungsmerkmale Projekte und Aufgaben finden Sie in Kapitel 2Einführung in Projekte und Aufgaben.


Hinweis –

Wenn Sie diese Funktionen auf einem Solaris-System mit installierten Zonen verwenden, sind über die Systemaufruf-Schnittstellen, die Prozess-IDs akzeptieren, nur Prozesse in der gleichen Zone sichtbar (wenn diese Befehle in einer nicht-globalen Zone ausgeführt werden).


Verwalten von Projekten und Aufgaben (Übersicht der Schritte)

Aufgabe 

Beschreibung 

Siehe 

Anzeigen von Beispielen für Befehle und Optionen, die mit Projekten und Aufgaben verwendet werden können. 

Anzeigen von Aufgaben- und Projekt-IDs, Anzeigen von verschiedenen Statistiken zu Prozessen und Projekten, die aktuell auf dem System ausgeführt werden. 

Beispiele für Befehle und Befehlsoptionen

Definieren eines Projekts. 

Hinzufügen eines Projekteintrags zur Datei /etc/project und Ändern der Werte für diesen Eintrag.

So definieren Sie ein Projekt und zeigen das aktuelle Projekt an

Löschen eines Projekts. 

Entfernen eines Projekteintrags aus der Datei /etc/project.

So löschen Sie ein Projekt aus der Datei /etc/project

Validieren der project-Datei oder der Projektdatenbank.

Überprüfen der Syntax der Datei /etc/project oder Sicherstellen der Eindeutigkeit des Projektnamens und in der Projekt-ID anhand des externen Namen-Services.

So validieren Sie den Inhalt der Datei /etc/project

Abrufen von Informationen zur Projektmitgliedschaft. 

Anzeigen der aktuellen Projektmitgliedschaft des aufrufenden Prozesses. 

So beziehen Sie Informationen zur Projektmitgliedschaft

Erstellen einer neuen Aufgabe. 

Erstellen einer neuen Aufgabe in einem bestimmten Projekt mit dem Befehl newtask.

So erstellen Sie eine neue Aufgabe

Zuweisen eines laufenden Prozesses zu einer anderen Aufgabe und einem anderen Projekt. 

Zuweisen einer Prozessnummer zu einer neuen Aufgaben-ID in einem bestimmten Projekt. 

So verschieben Sie einen laufenden Prozess in eine neue Aufgabe

Hinzufügen und Arbeiten mit Projektattributen. 

Verwenden der Projektdatenbank- Administrationsbefehle zum Hinzufügen, Bearbeiten, Validieren und Entfernen von Projektattributen. 

Bearbeiten und Validieren von Projektattributen

Beispiele für Befehle und Befehlsoptionen

Im folgenden Abschnitt sind Beispiele für Befehle und Optionen aufgeführt, die mit Projekten und Aufgaben verwendet werden können.

Mit Projekten und Aufgaben verwendete Befehlsoptionen

ps-Befehl

Mit dem Befehl ps und der Option -o können Sie die Aufgaben- und Projekt-IDs anzeigen. Um beispielsweise die Projekt-ID anzuzeigen, geben Sie Folgendes ein:


# ps -o user,pid,uid,projid
USER PID   UID  PROJID
jtd  89430 124  4113

id-Befehl

Mit dem Befehl id und der Option -p können Sie die aktuelle Projekt-ID nebst Benutzer- und Gruppen-IDs drucken. Wenn der Operand Benutzer angegeben ist, wird das Projekt gedruckt, das dem Anmeldenamen dieses Benutzers zugeordnet ist:


#  id -p
uid=124(jtd) gid=10(staff) projid=4113(booksite)

pgrep- und pkill-Befehle

Um nur Prozesse mit einer Projekt-ID in einer bestimmten Liste zu suchen, geben Sie die Befehle pgrep und pkill mit der Option -J ein:


# pgrep -J projidlist
# pkill -J projidlist

Um nur Prozesse mit einer Aufgaben-ID in einer bestimmten Liste zu suchen, geben Sie die Befehle pgrep und pkill mit der Option -T ein:


# pgrep -T taskidlist
# pkill -T taskidlist

prstat-Befehl

Um verschiedene Statistiken zu Prozessen und Projekten anzuzeigen, die aktuell auf dem System ausgeführt werden, geben Sie den Befehl prstat mit der Option -J ein:


% prstat -J
	  PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 21634 jtd      5512K 4848K cpu0    44    0   0:00.00 0.3% prstat/1
   324 root       29M   75M sleep   59    0   0:08.27 0.2% Xsun/1
 15497 jtd        48M   41M sleep   49    0   0:08.26 0.1% adeptedit/1
   328 root     2856K 2600K sleep   58    0   0:00.00 0.0% mibiisa/11
  1979 jtd      1568K 1352K sleep   49    0   0:00.00 0.0% csh/1
  1977 jtd      7256K 5512K sleep   49    0   0:00.00 0.0% dtterm/1
   192 root     3680K 2856K sleep   58    0   0:00.36 0.0% automountd/5
  1845 jtd        24M   22M sleep   49    0   0:00.29 0.0% dtmail/11
  1009 jtd      9864K 8384K sleep   49    0   0:00.59 0.0% dtwm/8
   114 root     1640K  704K sleep   58    0   0:01.16 0.0% in.routed/1
   180 daemon   2704K 1944K sleep   58    0   0:00.00 0.0% statd/4
   145 root     2120K 1520K sleep   58    0   0:00.00 0.0% ypbind/1
   181 root     1864K 1336K sleep   51    0   0:00.00 0.0% lockd/1
   173 root     2584K 2136K sleep   58    0   0:00.00 0.0% inetd/1
   135 root     2960K 1424K sleep    0    0   0:00.00 0.0% keyserv/4
PROJID    NPROC  SIZE   RSS MEMORY      TIME  CPU PROJECT
    10       52  400M  271M    68%   0:11.45 0.4% booksite
     0       35  113M  129M    32%   0:10.46 0.2% system

Total: 87 processes, 205 lwps, load averages: 0.05, 0.02, 0.02

Um verschiedene Statistiken zu Prozessen und Aufgaben anzuzeigen, die aktuell auf dem System ausgeführt werden, geben Sie den Befehl prstat mit der Option -T ein:


% prstat -T
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 23023 root       26M   20M sleep   59    0   0:03:18 0.6% Xsun/1
 23476 jtd        51M   45M sleep   49    0   0:04:31 0.5% adeptedit/1
 23432 jtd      6928K 5064K sleep   59    0   0:00:00 0.1% dtterm/1
 28959 jtd        26M   18M sleep   49    0   0:00:18 0.0% .netscape.bin/1
 23116 jtd      9232K 8104K sleep   59    0   0:00:27 0.0% dtwm/5
 29010 jtd      5144K 4664K cpu0    59    0   0:00:00 0.0% prstat/1
   200 root     3096K 1024K sleep   59    0   0:00:00 0.0% lpsched/1
   161 root     2120K 1600K sleep   59    0   0:00:00 0.0% lockd/2
   170 root     5888K 4248K sleep   59    0   0:03:10 0.0% automountd/3
   132 root     2120K 1408K sleep   59    0   0:00:00 0.0% ypbind/1
   162 daemon   2504K 1936K sleep   59    0   0:00:00 0.0% statd/2
   146 root     2560K 2008K sleep   59    0   0:00:00 0.0% inetd/1
   122 root     2336K 1264K sleep   59    0   0:00:00 0.0% keyserv/2
   119 root     2336K 1496K sleep   59    0   0:00:02 0.0% rpcbind/1
   104 root     1664K  672K sleep   59    0   0:00:03 0.0% in.rdisc/1
TASKID    NPROC  SIZE   RSS MEMORY      TIME  CPU PROJECT                     
   222       30  229M  161M    44%   0:05:54 0.6% group.staff                 
   223        1   26M   20M   5.3%   0:03:18 0.6% group.staff                 
    12        1   61M   33M   8.9%   0:00:31 0.0% group.staff                 
     1       33   85M   53M    14%   0:03:33 0.0% system                      

Total: 65 processes, 154 lwps, load averages: 0.04, 0.05, 0.06	

Hinweis –

Die Optionen -J und -T können nicht zusammen verwendet werden.


Verwenden der Befehle cron und su mit Projekten und Aufgaben

cron-Befehl

Der Befehl cron gibt eine settaskid aus, mit der sichergestellt wird, dass jeder cron-, at- und batch-Job in einer separaten Aufgabe mit dem entsprechenden Standardprojekt für den übermittelnden Benutzer ausgeführt wird. Darüber hinaus erfassen die Befehle at und batch die aktuelle Projekt-ID, wodurch sichergestellt wird, dass die Projekt-ID beim Ausführen eines at-Jobs wiederhergestellt wird.

su-Befehl

Mit dem Befehl su wird das Standardprojekt des Zielbenutzers als Teil einer simulierten Anmeldung durch das Erstellen einer neuen Aufgabe aufgenommen.

Um das Standardprojekt des Benutzers mit dem Befehl su zu ändern, geben Sie Folgendes ein:


# su user

Verwalten von Projekten

ProcedureSo definieren Sie ein Projekt und zeigen das aktuelle Projekt an

Im folgenden Beispiel wird gezeigt, wie Sie einen Projekteintrag mit dem Befehl projadd hinzufügen und diesen Eintrag dann mit dem Befehl projmod ändern.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Zeigen Sie die Standarddatei /etc/project auf dem System mit dem Befehl projects -l an.


    # projects -l
    system:0::::
    user.root:1::::
    noproject:2::::
    default:3::::
    group.staff:10::::system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
  3. Fügen Sie ein Projekt mit dem Namen booksite hinzu. Weisen Sie das Projekt dem Benutzer mark mit der Projekt-ID 4113 zu.


    # projadd -U mark -p 4113 booksite
    
  4. Zeigen Sie die Datei /etc/project noch einmal an.


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    booksite
            projid : 4113
            comment: ""
            users  : mark
            groups : (none)
            attribs: 
  5. Fügen Sie einen Kommentar, der das Projekt beschreibt, in das Kommentarfeld ein.


    # projmod -c `Book Auction Project' booksite
    
  6. Zeigen Sie die Änderungen in der Datei /etc/project an.


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    booksite
            projid : 4113
            comment: "Book Auction Project"
            users  : mark
            groups : (none)
            attribs: 
Siehe auch

Wie Sie Projekte, Aufgaben und Prozesse an einen Pool binden, können Sie unter Einrichten von Pool-Attributen und Binden an einen Pool nachlesen.

ProcedureSo löschen Sie ein Projekt aus der Datei /etc/project

Im folgenden Beispiel wird gezeigt, wie Sie ein Projekt mit dem Befehl projdel löschen.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Entfernen Sie das Projekt booksite mit dem Befehl projdel.


    # projdel booksite
    
  3. Zeigen Sie die Datei /etc/project an.


    # projects -l
    system
            projid : 0
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    user.root
            projid : 1
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    noproject
            projid : 2
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    default
            projid : 3
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
    group.staff
            projid : 10
            comment: ""
            users  : (none)
            groups : (none)
            attribs: 
  4. Melden Sie sich als der Benutzer mark an und geben Sie projects ein, um die Projekte anzuzeigen, die diesem Benutzer zugeordnet sind.


    # su - mark
    # projects
    default

So validieren Sie den Inhalt der Datei /etc/project

Wenn keine Bearbeitungsoptionen angegeben sind, validiert der Befehl projmod den Inhalt der Datei project.

Zum Validieren einer NIS-Map melden Sie sich als Superuser an und geben Folgendes ein:


# ypcat project | projmod -f —

Hinweis –

Der Befehl ypcat project | projmod -f - ist noch nicht implementiert.


Zum Überprüfen der Syntax der Datei /etc/project geben Sie Folgendes ein:


# projmod -n

So beziehen Sie Informationen zur Projektmitgliedschaft

Geben Sie den Befehl id mit der Option -p ein, um die aktuelle Projektmitgliedschaft des aufrufenden Prozesses anzuzeigen.


$ id -p
uid=100(mark) gid=1(other) projid=3(default)

ProcedureSo erstellen Sie eine neue Aufgabe

  1. Melden Sie sich als ein Mitglied des Zielprojekts booksite an.

  2. Erstellen Sie eine neue Aufgabe im Projekt booksite. Geben Sie dazu den Befehl newtask mit der Option -v (verbose) ein, um die System-Aufgaben-ID zu beziehen.


    machine% newtask -v -p booksite
    16

    Die Ausführung von newtask erstellt eine neue Aufgabe im angegebenen Projekt und platziert die Standard-Shell des Benutzers in dieser Aufgabe.

  3. Zeigen Sie die aktuelle Projektmitgliedschaft des aufrufenden Prozesses an.


    machine% id -p
    uid=100(mark) gid=1(other) projid=4113(booksite)

    Der Prozess ist jetzt Mitglied des neuen Projekts.

ProcedureSo verschieben Sie einen laufenden Prozess in eine neue Aufgabe

Im folgenden Beispiel wird gezeigt, wie Sie einen laufenden Prozess einer anderen Aufgabe und einem neuen Projekt zuweisen. Um diese Aktion auszuführen, müssen Sie entweder als Superuser angemeldet oder Eigentümer des Prozesses und Mitglied des neuen Projekts sein.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.


    Hinweis –

    Wenn Sie Eigentümer des Prozesses oder Mitglied des neuen Projekts sind, können Sie diesen Schritt überspringen.


  2. Beziehen Sie die Projekt-ID des Prozesses book_catalog.


    # pgrep book_catalog
    	8100
  3. Ordnen Sie den Prozess 8100 der neuen Aufgaben-ID im Projekt booksite zu.


    # newtask -v -p booksite -c 8100
    	17

    Die Option -c gibt an, dass newtask auf den bestehenden benannten Prozess angewendet wird.

  4. Bestätigen Sie die Zuordnung der Aufgabe zur Prozess-ID.


    # pgrep -T 17
    	8100

Bearbeiten und Validieren von Projektattributen

Mit den Projektdatenbank-Administrationsbefehlen projadd und projmod können Sie die Projektattribute bearbeiten.

Die Option -K gibt eine Ersatzliste der Attribute an. Attribute werden durch Semikola (;) voneinander getrennt. Wenn die Option -K mit der Option -a angegeben ist, wird das Attribut oder der Attributwert hinzugefügt. Wenn die Option -K mit der Option -r angegeben ist, wird das Attribut oder der Attributwert entfernt. Wenn die Option -K mit der Option -s angegeben ist, wird das Attribut oder der Attributwert ersetzt.

ProcedureSo fügen Sie Projekten Attribute und Attributwerte hinzu

Geben Sie den Befehl projmod mit den Optionen -a und -K ein, um einem Projektattribut Werte hinzuzufügen. Wenn das Attribut nicht existiert, wird es erstellt.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Geben Sie das Resource Control-Attribut task.max-lwps ohne Werte in das Projekt myproject ein. Eine in das Projekt aufgenommene Aufgabe weist nur den Systemwert für das Attribut auf.


    # projmod -a -K task.max-lwps myproject
    
  3. Anschließend können Sie dem Projekt myproject einen Wert für task.max-lwps hinzufügen. Der Wert setzt sich aus einer Berechtigungsstufe, einem Schwellenwert und einer Aktion zusammen, die ausgeführt wird, wenn der Schwellenwert erreicht ist.


    # projmod -a -K "task.max-lwps=(priv,100,deny)" myproject
    
  4. Da Resource Controls mehrere Werte akzeptieren, können Sie der vorhandenen Werteliste mit den gleichen Optionen einen weiteren Wert hinzufügen.


    # projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject
    

    Mehrere Werte werden durch Kommata voneinander getrennt. Der Eintrag task.max-lwps lautet jetzt wie folgt:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

ProcedureSo entfernen Sie Attributwerte aus Projekten

Bei diesem Verfahren werden folgende Werte angenommen:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Um einen Attributwert von der Resource Control task.max-lwps im Projekt myproject zu entfernen, geben Sie den Befehl projmod mit den Optionen -r und -K ein.


    # projmod -r -K "task.max-lwps=(priv,100,deny)" myproject
    

    Wenn task.max-lwps mehrere Werte enthält, z. B.:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

    wird nur der erste entsprechende Wert gelöscht. Das Ergebnis wäre:


    task.max-lwps=(priv,1000,signal=KILL)

ProcedureSo entfernen Sie ein Resource Control-Attribut aus einem Projekt

Um die Resource Control task.max-lwps aus dem Projekt myproject zu entfernen, geben Sie den Befehl projmod mit den Optionen -r und -K ein.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Entfernen Sie das Attribut task.max-lwps und alle zugehörigen Werte aus dem Projekt myproject:


    # projmod -r -K task.max-lwps myproject
    

ProcedureSo ersetzen Sie Attribute und Attributwerte für Projekte

Um einen anderen Wert für das Attribut task.max-lwps im Projekt myproject einzusetzen, geben Sie den Befehl projmod mit den Optionen -s und -K ein. Wenn das Attribut nicht existiert, wird es erstellt.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Ersetzen Sie die aktuellen Werte für task.max-lwps durch die angezeigten neuen Werte:


    # projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject
    

    Das Ergebnis wäre:


    task.max-lwps=(priv,100,none),(priv,120,deny)

ProcedureSo entfernen Sie vorhandene Werte für ein Resource Control-Attribut

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Um die aktuellen Werte für die Resource Control task.max-lwps aus dem Projekt myproject zu entfernen, geben Sie Folgendes ein:


    # projmod -s -K task.max-lwps myproject