EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

basl2cB – Online in der Cloud

Führen Sie basl2cB im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl basl2cB, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


basl2c – konvertiert einen BASL-Code (BAtch Scheduling Language) in einen C-Scheduler-Code.

ZUSAMMENFASSUNG


basl2c [-d] [-l lexerDebugFile] [-p parserDebugFile] [-y symtabDebugFile] [-s
semanticDebugFile] [-g codegenDebugFile] [-c cFile] baslFile

BESCHREIBUNG


basl2c ist der BASL-zu-C-Compiler, der einen Zwischencode erzeugt, der in a eingespeist werden kann
regulärer C-Compiler erstellt und mit den PBS-Bibliotheken verknüpft, um die ausführbare Scheduler-Datei zu erstellen.
Basl2c verwendet als Eingabe a baslFile, ein in BAtch Scheduling geschriebenes Programm
Sprache, die den Hauptplanungscode enthält. Anschließend konvertiert Basl2c die BASL-Konstrukte
in der Datei in C-Anweisungen umwandelt und außerdem zusätzlichen Code zur Erstellung des PBS anhängt
Scheduler-Quellcode. Standardmäßig wird der resultierende C-Code in die Datei geschrieben
pbs_sched.c.

Der vollständige Pfadname zur resultierenden C-Datei muss im angegeben werden SCHD_CODE
Variable in local.mk, bevor Sie den BASL-Scheduler kompilieren, um die zu erstellen pbs_sched
ausführbar.

OPTIONAL


-d Gibt zusätzliche Debugging-Meldungen an den Lexer (siehe Option -l) und den Parser (siehe -p
Option), Symboltabelle (siehe Option -y), Semantikanalysator (siehe Option -s) und Code
Generator (siehe Option -g).

-l lexerDebugFile
lexerDebugFile ist der Name einer Datei, die in die generierten Debugging-Meldungen geschrieben werden soll
beim Scannen nach Token.

-p parserDebugFile
parserDebugFile ist der Name einer Datei, die in die generierten Debugging-Meldungen geschrieben werden soll
beim Zusammenstellen von Tokens auf eine brauchbare Art und Weise.

-y symtabDebugFile
symtabDebugFile ist der Name einer Datei, die in die entsprechenden Debugmeldungen geschrieben werden soll
die Symboltabelle.

-s semanticDebugFile
semanticDebugFile ist der Name einer Datei, die in die Debug-Meldungen geschrieben werden soll
generiert, während überprüft wird, ob Variablen und Operatoren in a verwendet werden
konsequente Art und Weise.

-g codegenDebugFile
codegenDebugFile ist der Name einer Datei, die in die generierten Debugging-Meldungen geschrieben werden soll
beim Konvertieren von BASL-Anweisungen in C-Anweisungen.

-c cDatei
cFile ist der Name einer Datei, in die der generierte C-Code geschrieben wird.

MAIN STRUKTUR


Die Grundstruktur eines in BASL geschriebenen Scheduler-Codes ist wie folgt:
Null or mehr FUNKTIONEN Definitionen
Null or mehr globale VARIABLE ERKLÄRUNGEN
Null or mehr Zuordnung Aussagen (zu initialisieren globale Variablen)
sched_main()
{
dank One or mehr VARIABLE ERKLÄRUNGEN

Null or mehr ABSCHLUSS
}

Zum Beispiel,
% Katze sched.basl
Int Summe(Int a, Int b)
{
Int s;
s = a + b;
kehrt zurück);
}
Int Kugel;
sched_main()
{
Int c;

a = 3;
b = 4;
c = Summe(a, B);
print(c);
Klacks = 5;
print(glob);
}

sched_main() ist die Funktion, die bei jeder Planungsiteration aufgerufen wird.

FUNKTIONEN


Um eine Funktion zu definieren, die in nachfolgenden Funktionen aufgerufen werden kann, lautet die Syntax:

Rückgabetyp Funktionsname ( DATENTYP1 IDENTIFIKATOR1,
DATENTYP2 IDENTIFIKATOR2, ... )
{
dank One or mehr VARIABLE ERKLÄRUNGEN

Null or mehr ABSCHLUSS
}

Zum Beispiel,
Leere printStuff(Dayofweek nach unten, Terminzeit t, Schnur Straße,
Größe sz, CNode cn)
{
print(dow);
print(t);
print(str);
drucken(sz);
print(cn);
}

Gültige Funktion Rückgabetyp sind: Void, Int, Float, Dayofweek, DateTime, String, Size,
Server, Warteschlange, Job, CNode, Server festlegen, Warteschlange festlegen, Job festlegen, CNode festlegen.

Gültige Datentypen ( DATATYPE1, DATATYPE2, ... ) für die Parameterbezeichner sind: Int,
Float, Dayofweek, DateTime, String, Size, Server, Que, Job, CNode, Set Server, Set Que,
Job festlegen, CNode festlegen, Range Int, Range Float, Range Dayofweek, Range DateTime, Range Size,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Server, Fun Que, Fun Job, Fun CNode, Fun Set Server, Fun Set Que, Fun Set Job, Fun Set
CNode. Diese Datentypen werden im nächsten Thema besprochen.

Funktionen werden mit ihrem Namen und ihren Argumenten aufgerufen, wie in:

printStuff( MO, (5|1|1997@14:32:00), "geplant beginnt",
30 GB, Knoten );

basl2c fügt dem vom Scheduler angegebenen Funktionsnamen tatsächlich ein „basl_“-Präfix hinzu
Writer, um das Risiko einer Namenskollision zu minimieren, die auftreten kann, wenn der resultierende C-Code vorhanden ist
verknüpft mit den PBS- und BASL-Bibliotheken. Wenn Sie sich beispielsweise den generierten C-Code ansehen für
printStuff, du würdest sehen,

basl_printStuff( MON, (5|1|1997@14:32:00),
„sched beginnt“, 30 GB, Knoten);

Wie in C müssen alle Funktionsaufrufe zuvor definiert worden sein. Der BASL-Compiler wird
Überprüfen Sie, ob die Argumente im Funktionsaufruf genau übereinstimmen (in Bezug auf
Typen) mit den Parametern in der Funktionsdefinition.

In BASL gibt es zwei Arten von Funktionen: benutzerdefinierte Funktionen und vordefinierte Funktionen.
Benutzerdefinierte Funktionen sind solche, für die der Scheduler-Autor eine Definition bereitgestellt hat.
während vordefinierte Funktionen solche sind, die sofort aufgerufen werden können, ohne dass dies erforderlich ist
es definieren. Eine Liste der vordefinierten Funktionen finden Sie im Abschnitt über VORDEFINIERT FUNKTIONEN .

VARIABLE ERKLÄRUNGEN


Wie in C müssen alle Variablen in einem BASL-Code vor der Verwendung explizit deklariert werden. Diese
Außerhalb einer Funktion deklarierte Variablen werden als globale Variablen bezeichnet
Variablen, die innerhalb eines Funktionskörpers deklariert werden, werden lokale Variablen genannt. Global
Variablen können überall im BASL-Code verwendet werden, während lokale Variablen lesbar sind
nur innerhalb der Funktion, von der aus sie deklariert wurden.

Die Syntax einer Variablendeklaration lautet:

DATENTYP IDENTIFIKATOR ;

woher DATENTYP kann sein: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, Set Server, Set Que, Set Job, Set CNode, Range Int, Range Float, Range Dayofweek,
Bereich Datum/Uhrzeit, Bereichsgröße.

DATEN TYP


Leere Wird für Funktionen verwendet, die keinen Wert zurückgeben.

Int mit Vorzeichen, ganze Zahlen zur Basis 10.

Beispielkonstanten:
5, +1, -3, ERFOLGREICH (=1), FEHLER (=0), WAHR (=1), FALSCH (=0)

Schwimmer reelle Zahlen, die im übersetzten C-Code als Doubles dargestellt werden.
Beispielkonstanten: 4.3, +1.2, -2.6

Wochentag
konstante Werte: SUN, MON, TUE, WED, THU, FRI, SAT, intern dargestellt als
Ganzzahlige Konstanten mit SUN=0, MON=1 usw.

Terminzeit
Geben Sie in einem von drei Formaten an:

[1] (m|d|y) wobei 1 <= m <= 12, 1 <= d <= 31, 0 <= y, Bsp. (4|4|1997);

[2] (hh:mm:ss) wobei 0 <= hh <= 23, 0 <= mm <= 59, 0 <= ss <= 61, Bsp.
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
Beim Datums-/Uhrzeitvergleich wird die aktuelle Zeit durch die Zeit ersetzt
Teil ist nicht angegeben (Format [1]); Das „Jetzt“-Datum wird ersetzt, wenn das
Der Datumsanteil wird nicht angegeben (Format [2]). Außerdem muss der Ganzjahresanteil berücksichtigt werden
Um Unklarheiten zu vermeiden, muss das Datum (z. B. 1997 statt 97) angegeben werden.

Schnur Eine Zeichenfolge wird in Anführungszeichen (") eingeschlossen und kann alles außer einem anderen enthalten
Anführungszeichen, eine neue Zeile sowie linke und rechte Klammern.
Beispielkonstanten: „eine Beispielzeichenfolge“, NULLSTR

Größe Format: wobei Suffix ein Multiplikator der Form ist:
:

Multiplikator Einheit (Bytes or Wörter)
=================== =====================
k,m,g,t,p,K,M,G,T,P b,B,w,W

wobei k=K=1024, m=M=1,048,576, g=G=1,073,741,824, t=T=1,099,511,627,776,
p=P=1,125,899,906,842,624, b=B=1 und Wortgröße w=W ist lokal definiert (d. h. 4).
Bytes in einer 32-Bit-Maschine).

Bei der Arbeit mit Operanden mit zwei Größen, die unterschiedliche Suffixe haben, ist das Suffix von
das „niedrigere“ der beiden ist das resultierende Suffix. Zum Beispiel,
10 MB + 10 GB = 10250 MB
Beispielkonstanten: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb

Abdeckung Int

Format: (niedriger Int-Wert, hoher Int-Wert)
wobei niedriger Int-Wert <= hoher Int-Wert. Probenkonstante: (1,3)

Abdeckung Schwimmer

Format: (niedriger Float-Wert, hoher Float-Wert)
wobei niedriger Wert <= hoher Wert. Probenkonstante: (2.3, 4.6)

Abdeckung Wochentag

Format: (früherer Tag, späterer Tag)
wobei früherer Tag <= späterer Tag. Probenkonstante: (MI, FR)

Abdeckung Terminzeit

Format: (früheres Datum/Uhrzeit, späteres Datum/Uhrzeit)
wobei früheres Datum/Uhrzeit <= späteres Datum/spätere Uhrzeit.
HINWEIS: Wenn der Bereich nur Zeitabschnitte enthält und eine frühere Zeit „erscheint“.
sein > spätere Zeit wie in „((18:0:0), (6:0:0))“, dann während Datum/Uhrzeit
Bei Vergleichen wird die „spätere“ Zeit um einen Tag angepasst, sodass dies der Fall ist
aussehen: "( ( @18:0:0), ( @6:0:0) )"

Beispielkonstanten:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))

Abdeckung Größe

Format: (niedrige Größe, hohe Größe)
wobei niedrige Größe <= hohe Größe. Beispielkonstanten: (23 GB, 50 GB)

Server Wird direkt dem PBS-Serverobjekt zugeordnet. A Server verwaltet einen oder mehrere Dass Objekte.
Beispielkonstante: NOSERVER

CNode für einen Rechenknoten, der aus einem einzelnen Betriebssystem-Image, einem gemeinsam genutzten Speicher und einem Satz besteht
von CPU. CNode führt 1 PBS MOM aus.
Beispielkonstante: NOCNODE

Dass Wird direkt dem PBS-Warteschlangenobjekt zugeordnet. A Dass Objektspulen eine oder mehrere Job
Objekte.
Probenkonstante: NOQUE

Job Wird direkt dem PBS-Jobobjekt zugeordnet. A Job Das Objekt trägt einige Attribute und
Ressourcenanforderungen.
Beispielkonstante: NOJOB

Sept Server
Liste der Serverobjekte.
Beispielkonstante: EMPTYSETSERVER

Sept CNode
Liste der CNode-Objekte.
Beispielkonstante: EMPTYSETCNODE

Sept Dass Liste der Que-Objekte.
Beispielkonstante: EMPTYSETQUE

Sept Job Liste der Jobobjekte.
Beispielkonstante: EMPTYSETJOB

BASL-DEFINIERT Konstanten


Dabei handelt es sich um Konstanten, die nicht zur Benennung eines Bezeichners verwendet werden können (siehe nächstes Thema). Diese
werden immer in Großbuchstaben geschrieben.

DATEN TYP BASL-DEFINIERT KONSTANTE
=================== =============================================
Wochentag SONNE, MO, DI, HEIRATEN, DO, FR, Samstag

Int ERFOLG, SCHEITERN, FALSCH, WAHR, SYNCRUN, ASYNCRUN,
LÖSCHEN, WIEDERHOLUNG, HALT, VERÖFFENTLICHUNG, SIGNAL,
ÄNDERNYATTR, ÄNDERN, SERVER_ACTIVE,
SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_DISABLED, SCHED_ENABLED, TRANSIT,
IN WARTESCHLANGE, GEHALTENEN, WARTEN, LÄUFT, VERLASSEN,
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE,
CNODE_RESERVE, CNODE_INUSE_EXCLUSIVE,
CNODE_INUSE_SHARED, CNODE_TIMESHARED,
CNODE_CLUSTER, CNODE_UNKNOWN, OP_EQ, OP_NEQ,
OP_LE, OP_LT, OP_GE, OP_GT, OP_MAX, OP_MIN,
ASC DESC

Server NOSERVER
Sept Server EMPTYSETSERVER

CNode NOKNODE
Sept CNode EMPTYSETCNODE

Dass NOQUE
Sept Dass EMPTYSETQUE

Job KEINE ARBEIT
Sept Job EMPTYSETJOB

Schnur NULLSTR

IDENTIFIKATOR


Bezeichner (für Variablennamen und Funktionsnamen verwendet) liegen im alphanumerischen Format vor, mit
das zulässige Sonderzeichen Unterstrich (_). Derzeit kann BASL nur Bezeichner verarbeiten
mit einer Länge von bis zu 80 Zeichen. Außerdem können Sie die von BASL definierten Konstantennamen nicht für verwenden
Benennung eines Bezeichners.

ABSCHLUSS


In Basel(2) Sie können eine einzelne Anweisung oder eine Gruppe davon mit einem Semikolon abschließen lassen
Anweisungen (zusammengesetzte Anweisung oder Block genannt), die durch „{“ und „}“ begrenzt sind. Der Unterschied
Arten von Anweisungen, die in einem BASL-Code erscheinen können, sind:

1. Ausdrucksanweisung
Ausdrucksanweisungen haben etwa die folgende Form:

ausdr ;

woher ausdr lassen sich:

a) Arithmetische Ausdrücke

lexpr + reexpr (hinzufügen)
lexpr - reexpr (subtrahieren)
lexpr * reexpr (multiplizieren)
lexpr / reexpr (Teilen)
lexpr % reexpr (Modul or Rest)

HINWEIS: Addieren, Subtrahieren, Multiplizieren, Dividieren und Resten
ist nur für die richtigen Typen und wenn links und rechts zulässig
Ausdrücke sind von konsistentem Typ. Die folgende Tabelle zeigt, was
Typen sind zwischen den verschiedenen Operatoren konsistent:

Für +:

lexpr reexpr
============ ============
Int or Schwimmer Int or Schwimmer
Größe Größe
Schnur Schnur

Für -, *, /:

lexpr reexpr
============ ============
Int or Schwimmer Int or Schwimmer
Größe Größe

Für %:

lexpr reexpr
============ ============
Int or Schwimmer Int or Schwimmer

Hier sind einige Beispielanweisungen für arithmetische Ausdrücke:
Int i1;
Int i2;
Schwimmer f1;
Schwimmer f2;
Größe sz1;
Größe sz2;
Schnur str1;
Schnur str2;

i1 + i2;
f1 - i2;
sz1 * sz2 * 2b;
sz1 / 1024b;

str1 = „basl“;
str2 = " Cool";

// Folgende is a Schnur Verkettung
// Betrieb was zu in Zeichenfolge:
// "basl cool"
str1 + str2;

i1 % 10;

b) Unäre Ausdrücke

+ Ausdruck // positiv - multipliziert by 1 an
// Ausdruck zur Verbesserung der Gesundheitsgerechtigkeit is
// of Int, Schweben, or
// Größe tippe

-ausdruck // Negativ - multipliziert by -1 an
// Ausdruck zur Verbesserung der Gesundheitsgerechtigkeit is
// of Int, Schweben, or
// Größe tippe

! expr // nicht - Konvertiten a ungleich Null ausdr
// Wert in 0, und a
// Null ausdr Wert in 1
// woher ausdr tippe sollen be
// of tippe Int or Schwimmer

Einige Beispiele für unäre Ausdrücke:
Int i;

+ 3;
-(ich + 4);
!ich;

c) Logische Ausdrücke

lexpr EQ reexpr
lexpr NEQ reexpr
lexpr LT reexpr
lexpr LE reexpr
lexpr GT reexpr
lexpr GE reexpr
lexpr UND reexpr
lexpr OR reexpr

lexpr und reexpr müssen Typen haben, die wie gezeigt untereinander konsistent sind
in der folgenden Tabelle:

lterminal-expr rterminal-expr
============== ==============
Int or Schwimmer Int or Schwimmer
Wochentag Wochentag
Terminzeit Terminzeit
Schnur Schnur
Größe Größe
Server Server
Dass Dass
Job Job
CNode CNode
Sept Server Sept Server
Sept Dass Sept Dass
Sept Job Sept Job
Sept CNode Sept CNode

Aussichten für UND, OR Betreiber, die lexpr, reexpr Konsistente Typen sind Int oder
Schweben.

Einige Beispiele für logische Ausdrücke:

i1 EQ i2;
i1 NEQ f2;
unten1 LE dow2;
d1 LT d2;
str1 GT str2;
sz1 GE sz2;

d) Post-Operator-Ausdrücke
Dabei handelt es sich um Ausdrücke, die lediglich eine Abkürzung zur Zuweisung darstellen
Aussagen.

IDENTIFIER++; // bezeichner=bezeichner+1
IDENTIFIKATOR--; // bezeichner=bezeichner-1

IDENTIFIKATOR muss vom Typ Int oder Float sein.

Beispiel:
Int i;
Schwimmer f;

i ++;
F--;

e) Funktionsaufruf

Funktionsname ( Arg1 ,arg2 ... , argN )

woher arg1, ... argN kann eine beliebige Konstante oder Variable sein. Das kannst du nicht haben
ein weiterer Funktionsaufruf als Argument.
Beispiel:
Leere drucken a) {
print(a);
}

pr(5);

Es gibt bestimmte vordefinierte Funktionen, die ein Scheduler-Autor ausführen kann
automatisch seinen/ihren BASL-Code aufrufen, ohne dass dieser definiert werden muss.
Diese Funktionen werden als Assist-Funktionen (oder Helfer) bezeichnet
Funktionen) und sie werden unten besprochen VORDEFINIERT FUNKTIONEN Thema.

f) Konstanten
Im Folgenden sind einige gültige konstante Ausdrücke aufgeführt:
5;
+ 1.2;
SONNE;
MO;
DI;
HEIRATEN;
DO;
FR;
SA;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"wunderbar";
-1b;
SYNCRUN;
ASYNCRUN;
LÖSCHEN;
WIEDERHOLUNG;
HALTEN;
FREIGEBEN;
SIGNAL;
MODIFYATTR;
ÄNDERN;
(1, 3);
(2.3, 4.6);
(MI, FR);
((4|4|1997), (4|10|1997));
((12:01:00), (12:30:00));
((4|4|1997@12:01:00), (4|10|1997@12:30:00));
(23 GB, 50 GB);
NOSERVER;
NOKNODE;
NOQUE;
KEINE ARBEIT;
EMPTYSETSERVER;
EMPTYSETCNODE;
EMPTYSETQUE;
EMPTYSETJOB;
NULLSTR;
ERFOLG;
SCHEITERN;
SERVER_ACTIVE;
SERVER_IDLE;
SERVER_SCHED;
SERVER_TERM;
SERVER_TERMDELAY;
QTYPE_E;
QTYPE_R;
SCHED_DISABLED;
SCHED_ENABLED;
FALSCH;
WAHR;
TRANSIT;
IN WARTESCHLANGE;
GEHALTENEN;
WARTEN;
LÄUFT;
VERLASSEN;
CNODE_OFFLINE;
CNODE_DOWN;
CNODE_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHARED;
CNODE_CLUSTER;
CNODE_UNKNOWN;
OP_EQ;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;

g) Identifikator

Beispiel:
Int i;

i;

2. Auftragserklärung

IDENTIFIKATOR = ausdr ;

IDENTIFIKATOR und ausdr muss Typen haben, die untereinander konsistent sind als
in der folgenden Tabelle dargestellt:

Kennzeichnung ausdr
=============== ===============
Int Int, Schwimmer
Schwimmer Int, Schwimmer
Wochentag Wochentag
Terminzeit Terminzeit
Schnur Schnur
Größe Größe
Dass Dass
Job Job
CNode CNode
Server Server
Wochentag Wochentag
Terminzeit Terminzeit
Sept Server Sept Server
Sept Dass Sept Dass
Sept Job Sept Job
Sept CNode Sept CNode
Abdeckung Int Abdeckung Int
Abdeckung Schwimmer Abdeckung Schwimmer
Abdeckung Wochentag Abdeckung Wochentag
Abdeckung Terminzeit Abdeckung Terminzeit
Abdeckung Größe Abdeckung Größe

3. ansonsten Aussage
Das Format einer if-Anweisung ähnelt dem in C mit der Begrenzung
„{“ und „}“ immer vorhanden:

wenn ( ausdr ) {
Null or mehr (True) ABSCHLUSS
}

wenn ( ausdr ) {
Null or mehr (True) ABSCHLUSS
} sonst {
Null or mehr (falsch) ABSCHLUSS
}

Das ausdr 's Der Typ muss entweder Int oder Float sein, und nach der Auswertung, ob dies der Fall ist
Wenn der Wert ungleich Null ist, werden die wahren Anweisungen ausgeführt. Auf dem zweiten
Form, wenn die ausdr zu Null ausgewertet wird, werden die falschen Aussagen ausgeführt.

Einige Beispiele if Nachfolgend sind die Aussagen aufgeführt:

if (2 * x )
{
y = y + 3;
print(y);
}

if (2 * x ) {
y = y + 3;
} sonst {
wenn ( 3 * x ) {
y = 4;
} sonst {
y = 5;
}
}

4. für Schleife Aussage
Das Format einer for-Anweisung ist wie folgt:

zum( beginnen; Prüfung; Aktion ) {
Null or mehr ABSCHLUSS
}

Genau wie in C, für wird zuerst ausgeführt Anfang , wertet dann die aus Test Zustand
um zu sehen, ob ein Wert ungleich Null zurückgegeben wird. Wenn dies der Fall ist, wird die für Aussagen sind
hingerichtet. Nach dem für Anweisungen werden dann ausgeführt Aktion wird ausgewertet,
und dann prüft es das Test Konditionieren Sie den Zustand erneut auf die gleiche Weise wie zuvor.
Anfang und Aktion kann ein einfacher Zuweisungsausdruck oder ein Postoperator sein
Ausdruck. Test ist ein logischer/relationaler Ausdruck. Einige Beispiele für
Aussagen dazu finden sich im Folgenden:

für (i = 0; i LT 3 ; i = i + 1)
{
print(i);
}

für (i = 0; i LT 2 * x; i++)
{
if (x GT 3)
{
y = 99;
} sonst
{
x = 73;
}
}

5. foreach Schleife Aussage
Diese Anweisung wird hauptsächlich zum sukzessiven Abrufen jedes Elements von verwendet
a Datentyp festlegen: Server festlegen, CNode festlegen, Job festlegen, Warteschlange festlegen. Die Syntax lautet:

foreach ( IDENTIFIKATOR1 in IDENTIFIKATOR2 ) {
Null or mehr ABSCHLUSS
}

wobei die folgenden Typenpaare für die Bezeichner zulässig sind:

IDENTIFIKATOR1 IDENTIFIKATOR2
=========== ===========
Server Sept Server
Dass Sept Dass
Job Sept Job
CNode Sept CNode

Beispiel:
Server s;
Dass q;
Job j;
CNode c;

Sept Server ss;
Sept Dass qm;
Sept Job sj;
Sept CNode sc;

foreach(s in ss){
Druck(e);
}
foreach(q in qm){
print(q);
}
foreach(j in sj){
print(j);
}
foreach(c in sc){
print(c);
}

6. während Schleife Aussage
Die Syntax einer while-Schleife lautet:

während ( ausdr ) {
Null or mehr ABSCHLUSS
}

woher ausdr muss vom Typ Int oder Float sein. Wenn ausdr ungleich Null ist, dann ist die Null
oder mehr ABSCHLUSS werden ausgeführt und ausdr wird neu bewertet.

Beispiel:
Int i;
i = 3;
während ich) {
wenn ( i EQ 0 ) {
print("break on i = 1");
break;
}
ich--;
}

7. wechseln Aussage
Die switch-Anweisung ist eine mehrseitige Entscheidung, die testet, ob ein
Der Wert des Bezeichners stimmt mit einem von mehreren Werten überein und verzweigt zu a
Gruppe von Aussagen entsprechend.
Die Syntax für eine Switch-Anweisung lautet:

Schalter ( IDENTIFIKATOR ) {
Häuser konstanter Ausdruck :
{
Null or mehr ABSCHLUSS
}
Häuser konstanter Ausdruck :
{
Null or mehr ABSCHLUSS
}
...
Häuser in konstanter BereichOrSet-Ausdruck :
{
Null or mehr ABSCHLUSS
}
Häuser in IDENTIFIER-rangeOrSettype :
{
Null or mehr ABSCHLUSS
}
Standard :
{
Null or mehr ABSCHLUSS
}
}

woher konstanter Ausdruck ist ein ausdr vom Typ Int, Float, Dayofweek, DateTime,
Größe, String, Server, Que, Job oder CNode. konstanter BereichOrSet-Ausdruck und
IDENTIFIER-rangeOrSettype kann vom Typ Set Server, Set CNode, Set Que, Set sein
Job, Range Int, Range Float, Range Dayofweek, Range DateTime oder Range Size.

IDENTIFIKATOR darf nicht vom Typ Void sein. IDENTIFIKATOR 's Der Typ muss konsistent sein
mit konstanter Ausdruck ist, konstanter BereichOrSet-Ausdruck ist, und IDENTIFIKATOR-
rangeOrSettype 's Typ wie in der folgenden Tabelle dargestellt:
IDENTIFIKATOR Konstantbereichsausdruck, IDENTIFIER-Bereichstyp
=========== =========================================
Server Sept Server
Dass Sept Dass
Job Sept Job
CNode Sept CNode
Int Abdeckung Int
Schwimmer Abdeckung Schwimmer
Wochentag Abdeckung Wochentag
Terminzeit Abdeckung Terminzeit
Größe Abdeckung Größe

Wenn ein case-Ausdruck mit dem übereinstimmt IDENTIFIKATOR 's Wert, dann der entsprechende
Anweisungsblöcke werden ausgeführt. Anders als in C fällt die Ausführung NICHT ab
bis zur nächsten Case-Anweisung. Der Grund dafür ist, dass basl2c werden wir
übersetze das wechseln Anweisung in ein if-elseif-else-Konstrukt umwandeln. Der Fall
Der mit „Default“ gekennzeichnete Befehl wird ausgeführt, wenn keiner der anderen Fälle erfüllt ist. Der
Standard es ist optional; Wenn es nicht vorhanden ist und keiner der Fälle übereinstimmt, nein
Aktion stattfindet.

Beispiel:
Wochentag dow;

Schalter (nach unten)
{
Häuser MON:
{
print("case MO“);
}
Häuser DI:
{
print("case DIENSTAG");
}
Häuser HEIRATEN:
{
print("case HEIRATEN");
}
Häuser THU:
{
print("case DO");
}
Häuser FR:
{
print("case FR“);
}
Häuser SAT:
{
print("case SAT");
}
Häuser SONNE:
{
print("case SONNE");
}
Standard:
{
print("case ausgefallen");
}
}

Int a;
Abdeckung Int ri;
ri = (10, 12);
Schalter(a)
{
Häuser in (1,5):
{
print("case 1,5");
}
Häuser in (6,9):
{
print("case 6,9");
}
Häuser in betreffend:
{
print("case ri");
}
}

8. drucken Aussage
Die Print-Anweisung ist in der Lage, den Wert von jedem auszugeben Kennzeichnung
or konstante vom Typ Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, Server, Range Int, Range Float, Range Dayofweek, Range DateTime,
Bereichsgröße.
Die Syntax lautet wie folgt:

drucken ( IDENTIFIKATOR );
drucken ( konstante );

Beispiel:
Terminzeit dt;
CNode cn;

dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();

print(dt);
print(cn);

Verwenden Sie für Set-Typen foreach um jedes Element durchzugehen und wie folgt auszudrucken:

Server s;
Sept Server ss;

ss = AllServersGet();

foreach(s in ss) {
Druck(e);
}

9. continue-Anweisung

fortsetzen ;

Das fortsetzen Die Anweisung muss innerhalb von a aufgerufen worden sein für, für jede, und
während Schleife. Dadurch beginnt die nächste Iteration der umschließenden Schleife.

10. break-Anweisung

brechen ;

Das brechen Die Anweisung muss innerhalb von a aufgerufen worden sein für, für jede, und während
Schleife. Es ermöglicht einen frühen Ausstieg aus der umschließenden Schleife.

11. Return-Anweisung

return(IDENTIFIER) ;
Rückkehr (konstant) ;
Rückkehr() ;

Die return-Anweisung stellt den Wert (falls vorhanden) bereit, der von a zurückgegeben werden soll
Funktion. Der von zurückgegebene Typ IDENTIFIKATOR und konstante muss mit dem übereinstimmen
Rückgabetyp der aufrufenden Funktion. konstante Zulässige Typen sind alles andere als
Set- und Bereichstypen. Das letzte Format, Rückkehr() wird normalerweise innerhalb von a aufgerufen
Funktion, die keinen Wert zurückgibt (wie sched_main() ).

12. Exit-Anweisung

Ausgang (Konstante);

woher konstante ist vom Typ Int. Durch diesen Aufruf wird der Scheduler beendet.

13. Kommentarerklärung
Dies sind Anweisungen mit dem Präfix „//“ und sie werden von der BASL ignoriert
Compiler.

// fehlen uns die Worte. Linie is ignoriert
Int i; // Schnur Folgende Schrägstriche is ignoriert

OPERATOR VORRANG UND ASSOZIATIVITÄT


Die folgende Tabelle zeigt die verschiedenen definierten Operatorprioritätsstufen und Assoziativität
in der BASL-Sprache. Die Operatoren werden in der Reihenfolge absteigender Priorität aufgelistet. Der
Je höher die Priorität eines Operators ist, desto früher wird er ausgeführt. Die Reihenfolge, in der die
Operatoren auf derselben Ebene werden ausgeführt, abhängig von der Assoziativität: links bedeutet die
Operatoren werden von links nach rechts gesehen, während rechts bedeutet, dass sie von rechts nach links gesehen werden.

Operator Assoziativität
======================================= =============
! ++ -- + (einstellig Plus) - (einstellig Minus) Recht
* / % links
+ - links
LT LE GT GE links
EQ NEQ links
UND links
OR links
= Recht

VORDEFINIERT FUNKTIONEN


In Basel(2) bis Server Der Datentyp wird direkt einem Batch-Serverobjekt zugeordnet. Ähnlich, CNode
ist an Mama/Resmom, Job ist ein Batch-Job und Dass ist die Batch-Warteschlange. Allerdings nicht alle
Auf Attribute der PBS-Objekte kann über BASL zugegriffen werden. Nur eine Teilmenge von Attributen,
diejenigen, die im Kontext eines Planers sinnvoll erschienen, werden zur Verfügung gestellt, und
Auf die Werte dieser Attribute kann durch Aufrufen der folgenden vordefinierten Funktionen zugegriffen werden:
auch als Assist/Helfer-Funktionen bekannt.

(1) Serverbezogene Funktionen

Sept Server AllServersGet(void)
Gibt die Liste der in der Konfigurationsdatei angegebenen Server zurück
nach denen der Scheduler-Autor das System regelmäßig prüfen lassen möchte
Status, Warteschlangen und Jobinformationen. Sehen pbs__sched__basl(8B) für eine
Diskussion über das Format der Konfigurationsdatei.
ACHTUNG: Diese Funktion muss von innen aufgerufen werden sched_main() so
Das ist bei jeder Planungsiteration der aktuellste Sept Server
Struktur wird zurückgegeben.

Server AllServersLocalHostGet(void)
Gibt das Serverobjekt zurück, das den lokalen Host darstellt. nicht gesetzter Wert:
NOSERVER. Dies ist eine einfache Funktion, die für Nicht-Cluster-Umgebungen aufgerufen werden kann
wo nur ein Server-Host existiert.
ACHTUNG: Diese Funktion muss von innen aufgerufen werden sched_main() (oder von
innerhalb der von sched_main aufgerufenen Funktion) so dass bei jeder Planung
Iteration, die aktuellste Server Struktur wird zurückgegeben.

Schnur ServerInetAddrGet(Server s)
Gibt den Namen für Server s zurück. nicht gesetzter Wert: NULLSTR

Schnur ServerDefQueGet(Server s)
Gibt das default_queue-Attribut von Server s zurück. nicht gesetzter Wert: NULLSTR

Int ServerStateGet(Server s)
Gibt das server_state-Attribut von Server s zurück.

Rückgabewert:
SERVER_ACTIVE, SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, -1 (nicht gesetzter Wert)

Int ServerMaxRunJobsGet(Server s)
Gibt das max_running-Attribut von Server s zurück. nicht gesetzter Wert: 0

Int ServerMaxRunJobsPerUserGet(Server s)
Gibt das max_user_run-Attribut von Server s zurück. nicht gesetzter Wert: 0

Int ServerMaxRunJobsPerGroupGet(Server s)
Gibt das max_group_run-Attribut von Server s zurück. nicht gesetzter Wert: 0

Sept Dass ServerQueuesGet(Server s)
Gibt eine Liste der vom Server verwalteten Warteschlangen zurück.

Sept Job ServerJobsGet(Server s)
Gibt eine Liste der vom Server verwalteten Jobs zurück. Um eine Teilmenge davon zu erhalten
Liste, siehe QueJobsGet().

Int ServerIntResAvailGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht den Arbeitsplätzen zur Verfügung
wird von diesem Server ausgeführt (Server resources_available.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ Int. Beispielressource
Namen sind: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Für eine Beschreibung dieser
Ressourcennamen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Int cpuAvail;
// Rückkehr # of CPU zur Zeit verfügbar in
// Server
cpuAvail = ServerIntResAvailGet(server, „ncpus“);

Größe ServerSizeResAvailGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht den Arbeitsplätzen zur Verfügung
wird von diesem Server ausgeführt (Server resources_available.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ „Größe“. Beispielressource
Namen sind: file, mem, pmem,workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Für eine Beschreibung dieser Ressource
Namen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Größe memAvail;
// Rückkehr Betrag of verfügbar Erinnerung in
// Server
memAvail = ServerSizeResAvailGet(server, „mem“);

Schnur ServerStringResAvailGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht den Arbeitsplätzen zur Verfügung
wird von diesem Server ausgeführt (Server resources_available.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ String. Probe
Ressourcennamen sind: Nodes, Arch, NeedNodes. Für eine Beschreibung dieser
Ressourcennamen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Schnur Art;
// Rückkehr Architektur (oder os Art) of
// Server
tippe = ServerStringResAvailGet(server, "Bogen");

Int ServerIntResAssignGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
laufende Jobs (Server resources_assigned.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ Int. Beispielressource
Namen sind: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Für eine Beschreibung dieser
Ressourcennamen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Int cpuAssn;
// Rückkehr # of CPU zur Zeit zugewiesen in
// Server
cpuAssn = ServerIntResAssignGet(server, „ncpus“);

Größe ServerSizeResAssignGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
laufende Jobs (Server resources_assigned.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ „Größe“. Beispielressource
Namen sind: file, mem, pmem,workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Für eine Beschreibung dieser Ressource
Namen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Größe sdsAssn;
// Rückkehr Betrag of sds Raum zur Zeit zugewiesen
// in Server
sdsAssn = ServerSizeResAssignGet(server, „sds“);

Schnur ServerStringResAssignGet(Server s, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
laufende Jobs (Server resources_assigned.name Attribut). Rufen Sie das an
Funktion für Ressourcen mit Werten vom Typ String. Probe
Ressourcennamen sind: Nodes, Arch, NeedNodes. Für eine Beschreibung dieser
Ressourcennamen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Sept CNode ServerNodesGet(Server s)
Gibt die Menge der von Servern verwalteten Knoten zurück. nicht gesetzter Wert: EMPTYSETCNODE.
HINWEIS: Normalerweise können Sie die folgenden Funktionen für die zurückgegebenen Knoten aufrufen
durch diesen Aufruf: CNodeStateGet(), CNodePropertiesGet() und CNodeTypeGet().

Int ServerNodesQuery(Server s, Schnur Spezifikation)
Gibt eine Anfrage an den angegebenen Server aus, um die Verfügbarkeit abzufragen
Ressourcen angegeben in spez. Zur Zeit die einzige Ressource
Zulässige Spezifikation ist eine, die „Knoten“ einbezieht und von denen es sein kann
formatieren Sie „nodes“, „nodes=" oder „nodes=". ". Die Abfrageergebnisse können sein
Der Zugriff erfolgt durch Aufruf der folgenden Funktionen: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
HINWEIS: Dies ist ein Wrapper für pbs_rescquery(3B) Serverfunktion.

Rückgabewert:
Erfolg, Misserfolg

Int ServerNodesNumAvailGet(Server s)
Gibt die Anzahl der Knoten zurück, die für die vom angegebenen verwalteten Knoten verfügbar sind
Server oder wie durch die letzte von angegebene Abfrage widergespiegelt
ServerNodesQuery(). Wenn der Rückgabewert Null ist, bedeutet dies Folgendes
Eine bestimmte Anzahl von Knoten wird derzeit benötigt, um die Spezifikation von zu erfüllen
ServerNodesQuery() sind derzeit nicht verfügbar. Die Anfrage wurde möglicherweise erfüllt
zu einem späteren Zeitpunkt. Wenn das Ergebnis negativ ist, ist keine Kombination bekannt
Knoten können die Spezifikation erfüllen.

Int ServerNodesNumAllocGet(Server s)
Gibt die Anzahl der Knoten zurück, die den vom angegebenen verwalteten Knoten zugewiesen sind
Server oder wie durch die letzte von angegebene Abfrage widergespiegelt
ServerNodesQuery().

Int ServerNodesNumRsvdGet(Server s)
Gibt die Anzahl der Knoten zurück, die für die vom angegebenen verwalteten Knoten reserviert sind
Server oder wie durch die letzte von angegebene Abfrage widergespiegelt
ServerNodesQuery().

Int ServerNodesNumDownGet(Server s)
Gibt die Anzahl der ausgefallenen Knoten für die vom angegebenen verwalteten Knoten zurück
Server oder wie durch die letzte von angegebene Abfrage widergespiegelt
ServerNodesQuery().

Int ServerNodesReserve(Server s,String spec,Int resId)
Gibt eine Anfrage an den angegebenen Server aus, um die Ressourcen zu reservieren
spezifiziert in spez. Ein Wert von 0 für resId bedeutet, dass dies für die Durchführung von a
neue Reservierung. Andernfalls stellt die Nummer eine vorhandene dar
(Teil-)Reservierung. Derzeit dafür reservierte Ressourcen resId werden wir
freigegeben und die vollständige Reservierung wird erneut versucht. Bei der
Derzeit können nur folgende Ressourcen angegeben werden:
„Knoten“. Es sollte als angegeben werden Knoten=Spezifikation woher
Spezifikation ist das, was ein Benutzer in der Argumentliste der Option -l angibt
Für Knoten siehe qsub (1B).
HINWEIS: Dies ist ein Wrapper für pbs_rescreserve(3B) Serverfunktion.

Rückgabewert:
eine Referenznummer für einen erfolgreichen oder teilweise erfolgreichen
Reservierung oder FAIL

Int ServerNodesRelease(Server s, Int resId)
Dadurch werden mit der Referenznummer reservierte Ressourcen freigegeben bzw. freigegeben
spezifiziert in resId.
HINWEIS: Dies ist ein Wrapper für pbs_rescrelease(3B) Serverfunktion.

Rückgabewert:
Erfolg oder Misserfolg

(2) Que-bezogene Funktionen:

Schnur QueNameGet( Dass dass )
Gibt den Namen von Que que zurück. nicht gesetzter Wert: NULLSTR

Int QueTypeGet( Dass dass )
Gibt das queue_type-Attribut von Que que zurück.
Rückgabewert: QTYPE_E (Ausführung), QTYPE_R (Routing), -1 (nicht gesetzt).
Wert)

Int QueNumJobsGet( Dass dass )
Gibt die Anzahl der Jobs zurück, die sich in Que que befinden. nicht gesetzter Wert: 0

Int QueMaxRunJobsGet( Dass dass )
Gibt das max_running-Attribut von Que que zurück. nicht gesetzter Wert: 0

Int QueMaxRunJobsPerUserGet( Dass dass )
Gibt das max_user_run-Attribut von Que que zurück. nicht gesetzter Wert: 0

Int QueMaxRunJobsPerGroupGet( Dass dass )
Gibt das max_group_run-Attribut von Que que zurück. nicht gesetzter Wert: 0

Int QuePriorityGet( Dass dass )
Gibt das Priority-Attribut von Que que zurück. nicht gesetzter Wert: 0

Int QueStateGet( Dass dass )
Gibt das gestartete Attribut von Que que zurück – die Auswahl der Jobausführung
Status der Warteschlange: SCHED_DISABLED, SCHED_ENABLED. nicht gesetzter Wert:
SCHED_DISABLED

Sept Job QueJobsGet( Dass dass )
Gibt die Liste der Jobs zurück, die sich derzeit in der Warteschlange befinden.

Int QueIntResAvailGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht zur Verfügung
Jobs, die von diesem q aus ausgeführt werden (Que resources_available.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ „Int“ auf.
Beispielressourcennamen sind: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Für ein
Beschreibung dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Größe QueSizeResAvailGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht zur Verfügung
Jobs, die von diesem q aus ausgeführt werden (Que resources_available.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ „Größe“ auf.
Beispiele für Ressourcennamen sind: file, mem, pmem,workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Für eine Beschreibung
dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Schnur QueStringResAvailGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das steht zur Verfügung
Jobs, die von diesem q aus ausgeführt werden (Que resources_available.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ String auf.
Beispiele für Ressourcennamen sind: nodes, arch, neednodes. Für eine Beschreibung
dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Int QueIntResAssignGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
Jobs, die aus dieser Warteschlange ausgeführt werden (Que resources_assigned.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ „Int“ auf.
Beispielressourcennamen sind: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Für ein
Beschreibung dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Größe QueSizeResAssignGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
Jobs, die von diesem q aus ausgeführt werden (Que resources_assigned.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ „Größe“ auf.
Beispiele für Ressourcennamen sind: file, mem, pmem,workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Für eine Beschreibung
dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Schnur QueStringResAssignGet(Que q, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name das zugeordnet ist
Jobs, die von diesem q aus ausgeführt werden (Que resources_assigned.name Attribut).
Rufen Sie diese Funktion für Ressourcen mit Werten vom Typ String auf.
Beispiele für Ressourcennamen sind: nodes, arch, neednodes. Für eine Beschreibung
dieser Ressourcennamen finden Sie unter pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributes(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

(3) Berufsbezogene Funktionen

Schnur JobIdGet( Job Job )
Gibt die Job-ID des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Schnur JobNameGet( Job Job )
Gibt das Job_Name-Attribut des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Schnur JobOwnerNameGet( Job Job )
Gibt das Job_Owner-Attribut des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Schnur JobEffectiveUserNameGet( Job Job)
Gibt das euser-Attribut des Job-Jobs zurück.

Schnur JobEffectiveGroupNameGet(Job Job)
Gibt das egroup-Attribut des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Int JobStateGet ( Job Job )
Gibt das job_state-Attribut des Job-Jobs zurück.

Rückgabewert:
TRANSIT, QUEUED, HELD, WAITING, RUNNING, EXITING, -1 (unscharf
Wert)

Int JobPriorityGet( Job Job )
Gibt das Priority-Attribut des Job-Jobs zurück. nicht gesetzter Wert: 0

Int JobRerunFlagGet( Job Job )
Gibt das wiederausführbare Attribut des Job-Jobs zurück.
Rückgabewert: FALSE, TRUE, -1 (nicht gesetzter Wert)

Int JobInteractiveFlagGet( Job Job )
Gibt das interaktive Attribut des Job-Jobs zurück.
Rückgabewert: FALSE, TRUE. nicht gesetzter Wert: FALSE

Terminzeit JobDateTimeCreatedGet(Job Job)
Gibt das ctime-Attribut von Job job zurück. nicht gesetzter Wert:
(0|0|0@-1:-1:-1)

Schnur JobEmailAddrGet( Job Job )
Gibt das Mail_Users-Attribut des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Schnur JobStageinFilesGet( Job Job )
Gibt das stagein-Attribut von Job job zurück. nicht gesetzter Wert: NULLSTR

Schnur JobStageoutFilesGet( Job Job )
Gibt das Stageout-Attribut des Job-Jobs zurück. nicht gesetzter Wert: NULLSTR

Int JobIntResReqGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name wie von der gefordert
Job (Job Ressourcenliste.name Attribut). Rufen Sie diese Funktion auf
Ressourcen mit Werten vom Typ Int. Beispielressourcennamen
sind: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Für eine Beschreibung dieser
Ressourcennamen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Int cputReq;
// Rückgabe cput Anforderung of Job
cputReq = JobIntResReqGet(job, "cput");

Größe JobSizeResReqGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name wie von der gefordert
Job (Job Ressourcenliste.name Attribut). Rufen Sie diese Funktion auf
Ressourcen mit Werten vom Typ „Größe“. Beispielressourcennamen
sind: file, mem, pmem,workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Für eine Beschreibung dieser Ressource
Namen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Größe memReq;
// Rückgabe Erinnerung Anforderung of Job
memReq = JobSizeResReqGet(job, „mem“);

Schnur JobStringResReqGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name wie von der gefordert
Job (Job Ressourcenliste.name Attribut). Rufen Sie diese Funktion auf
Ressourcen mit Werten vom Typ String. Beispielressourcennamen
sind: Knoten, Bogen, Bedarfsknoten. Für eine Beschreibung dieser Ressource
Namen, siehe pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Schnur Knoten;
// Rückgabe Fiber Node Anforderung Resorts of
// Job
Fiber Node = JobStringResReqGet(job, „Knoten“);

Int JobIntResUseGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name vom Job verwendet (Job
resources_used.name Attribut). Rufen Sie diese Funktion für Ressourcen mit auf
Werte vom Typ Int. Beispielressourcennamen sind: cput, pcput,
walltime, mppt, pmppt, nice, procs, mppe, ncpus, pncpus, nodect,
srfs_assist, mta,..., mth. Eine Beschreibung dieser Ressourcennamen finden Sie unter
sehen pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Int walltUse;
// Rückgabe Betrag of Wandzeit benutzt by
// Job
walltUse = JobIntResUseGet(job, „Wandzeit“);

Größe JobSizeResUseGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name vom Job verwendet (Job
resources_used.name Attribut). Rufen Sie diese Funktion für Ressourcen mit auf
Werte vom Typ Größe. Beispiele für Ressourcennamen sind: file, mem,
pmem, Arbeitssatz, pf, ppf, srfs_tmp, srfs_wrk, srfs_big, srfs_fast,
SDS, PSDs. Eine Beschreibung dieser Ressourcennamen finden Sie unter
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Beispiel:
Größe srfsUse;
// Rückgabe Betrag of srfs_fast benutzt by
// Job
srfsVerwenden = JobSizeResUseGet(job, "srfs_fast");

Schnur JobStringResUseGet(Job Job, Schnur Name)
Gibt den Wert an die in angegebene Ressource zurück Name vom Job verwendet (Job
resources_used.name Attribut). Rufen Sie diese Funktion für Ressourcen mit auf
Werte vom Typ String. Beispielressourcennamen sind: Knoten,
Bogen, Bedarfsknoten. Eine Beschreibung dieser Ressourcennamen finden Sie unter
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributes(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

(4) CNode-bezogene Funktionen

Sept CNode AllNodesGet(void)
Gibt eine Liste der Knoten zurück, die von dem darauf ausgeführten Server verwaltet werden
lokaler Host. Dies könnte auch die angegebenen Knoten umfassen
in der Scheduler-Konfigurationsdatei, für die der Scheduler-Writer zuständig ist
möchte, dass das System regelmäßig nach Informationen wie Status,
Eigentum usw. Sehen pbs_sched_basl(8B) für eine Diskussion über
Konfigurationsdateiformat.
ACHTUNG: Diese Funktion muss von innen aufgerufen werden sched_main() so
Das ist bei jeder Planungsiteration der aktuellste Sept CNode
Struktur wird zurückgegeben. Rufen Sie dies nicht über eine Zuweisungsanweisung auf
beabsichtigt, eine globale Variable zu initialisieren, wie dies nur bei der Anweisung der Fall ist
einmal angerufen werden.

CNode AllNodesLocalHostGet(void)
Gibt das CNode-Objekt zurück, das den lokalen Host darstellt. Das ist ein
Einfache Funktion zum Aufrufen für nicht geclusterte Systeme mit nur 1 CNode
existiert. nicht gesetzter Wert: NOCNODE
ACHTUNG: Diese Funktion muss von innen aufgerufen werden sched_main() (oder
aus Funktionen, die von sched_main aufgerufen werden), so dass bei jedem
Planungsiteration, die aktuellste CNode Struktur ist
ist zurückgekommen. Rufen Sie dies nicht aus einer dafür vorgesehenen Zuweisungsanweisung auf
Initialisieren Sie eine globale Variable, da die Anweisung nur aufgerufen wird
Einmal.

Schnur CNodeNameGet(CNode Knoten)
Gibt den eindeutigen (offiziellen) Namen des Knotens zurück (z. B. ResMom-Hostname).
in einem 1-Mutter/Knoten-Modell). Dies gibt die gleiche Zeichenfolge zurück wie zuvor
in der Konfigurationsdatei angegeben. nicht gesetzter Wert: NULLSTR

Schnur CNodeOsGet(CNode Knoten)
Gibt die Betriebssystemarchitektur des Knotens zurück (z. B. „irix5“, „sp2“). nicht gesetzt
Wert: NULLSTR

Int CNodeStateGet( CNode Knoten )
Gibt den Zustand des Knotens zurück.

Rückgabewert:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN

Int CNodeTypeGet( CNode Knoten )
Gibt den Typ des Knotens zurück.

Rückgabewert:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN

Schnur CNodePropertiesGet(CNode Knoten)
Gibt die durch Kommas getrennte Liste anderer Namen zurück, unter denen der Knoten bekannt ist
(Eigenschaften, anderer Netzwerkname). Zum Beispiel,
„babbage.OpenPBS.org“ ist vielleicht der Knotenname, könnte aber auch bekannt sein
über „babbage1, babbage2“. nicht gesetzter Wert: NULLSTR

Schnur CNodeVendorGet(CNode Knoten)
Gibt den Namen des Anbieters für die Hardware der Maschine zurück (d. h
„sgi“, „ibm“). nicht gesetzter Wert: NULLSTR

Int CNodeNumCpusGet(CNode Knoten)
Gibt die Anzahl der an den Knoten angeschlossenen Prozessoren zurück. nicht gesetzter Wert:
-1

Größe CNodeMemTotalGet( CNode Knoten, Schnur tippe )
Gibt den Gesamtspeicher von zurück tippe für den Knoten. tippe ist eine willkürliche
Zeichenfolge, die der Scheduler-Autor im Scheduler definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
// bekommen gesamt physikalisch Erinnerung
CNodeMemTotalGet(Knoten, "real")
// bekommen gesamt virtuell Erinnerung
CNodeMemTotalGet(Knoten, „virtuell“)

Größe CNodeMemAvailGet( CNode Knoten, Schnur tippe )
Gibt den verfügbaren Speicher von zurück tippe für den Knoten. tippe ist eine willkürliche
Zeichenfolge, die der Scheduler-Autor im Scheduler definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispielanrufe werden also sein:
// bekommen verfügbar physikalisch Erinnerung
CNodeMemAvailGet(Knoten, "real")
// bekommen verfügbar virtuell Erinnerung
CNodeMemAvailGet(Knoten, „virtuell“)

Int CNodeIdletimeGet( CNode Knoten )
Gibt die Anzahl der Sekunden zurück, in denen kein Tastendruck oder keine Mausbewegung stattgefunden hat
erfolgt auf jedem mit dem Knoten verbundenen Terminal. nicht gesetzter Wert: -1

Schwimmer CNodeLoadAveGet( CNode Knoten )
Gibt den Lastdurchschnitt des Knotens für alle CPUs zurück. nicht gesetzter Wert: -1.0

Int CNodeCpuPercentIdleGet( CNode Knoten )
Gibt den Prozentsatz der Leerlaufzeit aller Prozessoren des Knotens zurück
habe erlebt.

Int CNodeCpuPercentSysGet( CNode Knoten )
Gibt den Prozentsatz der Zeit zurück, die allen Prozessoren des Knotens zur Verfügung steht
habe damit verbracht, Kernel-Code auszuführen.

Int CNodeCpuPercentUserGet( CNode Knoten )
Gibt den Prozentsatz der Zeit zurück, die allen Prozessoren des Knotens zur Verfügung steht
verbrachte die Ausführung von Benutzercode.

Int CNodeCpuPercentGuestGet( CNode Knoten )
Gibt den Prozentsatz der Zeit zurück, die allen Prozessoren des Knotens zur Verfügung steht
viel Zeit damit verbracht, ein Gastbetriebssystem zu betreiben.

Int CNodeNetworkBwGet( CNode Knoten, Schnur tippe )
Gibt die Bandbreite des Netzwerks des Knotens zurück tippe in Bytes/Sekunde.
tippe wird vom Scheduler-Writer im Scheduler definiert
Konfigurationsdatei. nicht gesetzter Wert: -1
Einige Beispielaufrufe sind:
CNodeNetworkBwGet( Knoten, „Hippi“ );
CNodeNetworkBwGet( Knoten, „fddi“ );

Größe CNodeDiskSpaceTotalGet(CNode Knoten, Schnur Name)
Gibt den Gesamtspeicherplatz des Knotens auf der Festplatte zurück, der durch identifiziert wird Name woher Name
ist der vom Scheduler-Writer willkürlich definierte Gerätename im
Scheduler-Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeDiskSpaceTotalGet( Knoten, „/scratch2“ );

Größe CNodeDiskSpaceAvailGet(CNode Knoten, Schnur Name)
Gibt den verfügbaren Speicherplatz des Knotens auf der Festplatte zurück, der durch identifiziert wird Name woher
Name wird vom Scheduler-Writer im Scheduler willkürlich definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeDiskSpaceAvailGet( Knoten, „/scratch1“ );

Größe CNodeDiskSpaceReservedGet(CNode Knoten, Schnur Name)
Gibt den reservierten Speicherplatz des Knotens auf der Festplatte (Benutzerkontingent?) zurück, der durch identifiziert wird
Name woher Name wird vom Scheduler-Autor willkürlich definiert
Scheduler-Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeDiskSpaceReservedGet( Knoten, „/scratch1“ );

Int CNodeDiskInBwGet( CNode Knoten, Schnur Name )
Gibt die Schreibbandbreite (Byte/Sek.) der identifizierten Festplatte des Knotens zurück
by Name . nicht gesetzter Wert: -1
Beispiel:
CNodeDiskInBwGet( Knoten, "/schnell" );

Int CNodeDiskOutBwGet( CNode Knoten, Schnur Name )
Gibt die Lesebandbreite (Byte/Sek.) der durch identifizierten Festplatte des Knotens zurück
Name . nicht gesetzter Wert: -1
Beispiel:
CNodeDiskOutBwGet( Knoten, "/groß" );

Größe CNodeSwapSpaceTotalGet( CNode Knoten, Schnur Name )
Gibt den gesamten Speicherplatz des durch identifizierten Knotens beim Austausch zurück Name woher Name
wird vom Scheduler-Writer im Scheduler willkürlich definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeSwapSpaceTotalGet( Knoten, "primär" );

Größe CNodeSwapSpaceAvailGet( CNode Knoten, Schnur Name )
Gibt den verfügbaren Speicherplatz des Knotens beim Austausch zurück, der durch identifiziert wird Name woher Name
ist der vom Scheduler-Writer willkürlich definierte Gerätename im
Scheduler-Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeSwapSpaceAvailGet( Knoten, „sekundär“ );

Int CNodeSwapInBwGet( CNode Knoten, Schnur Name )
Gibt die Swap-Rate des durch identifizierten Swap-Geräts des Knotens zurück Namen.
Beispiel:
CNodeSwapInBwGet(Knoten, „sekundär“);

Int CNodeSwapOutBwGet( CNode Knoten, Schnur Name )
Gibt die Swapout-Rate des durch identifizierten Swap-Geräts des Knotens zurück
Namen. nicht gesetzter Wert: -1
Beispiel:
CNodeSwapOutBwGet(Knoten, „primär“);

Größe CNodeTapeSpaceTotalGet( CNode Knoten, Schnur Name )
Gibt den Gesamtspeicherplatz des Knotens auf dem durch identifizierten Band zurück Name woher Name
wird vom Scheduler-Writer im Scheduler willkürlich definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeTapeSpaceTotalGet(node, „4mm“);

Größe CNodeTapeSpaceAvailGet( CNode Knoten, Schnur Name )
Gibt den verfügbaren Speicherplatz des Knotens auf dem durch identifizierten Band zurück Name woher
Name wird vom Scheduler-Writer im Scheduler willkürlich definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeTapeSpaceAvailGet(node, "8mm");

Int CNodeTapeInBwGet( CNode Knoten, Schnur Name )
Gibt die Schreibbandbreite (Byte/Sek.) des identifizierten Bandes des Knotens zurück
by Name . nicht gesetzter Wert: -1
Beispiel:
CNodeTapeInBwGet( Knoten, "4 mm" );

Int CNodeTapeOutBwGet( CNode Knoten, Schnur Name )
Gibt die Lesebandbreite (Byte/Sek.) des identifizierten Bandes des Knotens zurück
by Name . nicht gesetzter Wert: -1
Beispiel:
CNodeTapeOutBwGet( Knoten, "8 mm" );

Größe CNodeSrfsSpaceTotalGet( CNode Knoten, Schnur Name )
Gibt den Gesamtspeicherplatz des Knotens auf dem durch identifizierten SRFS-Gerät zurück Name
woher Name wird vom Scheduler-Autor willkürlich definiert
Scheduler-Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeSrfsSpaceTotalGet(node, "/schnell");

Größe CNodeSrfsSpaceAvailGet( CNode Knoten, Schnur Name )
Gibt den verfügbaren Speicherplatz des Knotens auf dem durch identifizierten SRFS-Gerät zurück Name
woher Name wird in einigen Fällen vom Scheduler-Autor willkürlich definiert
Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeSrfsSpaceAvailGet( Knoten, "/groß" );

Größe CNodeSrfsSpaceReservedGet(CNode Knoten, Schnur Name)
Gibt die Gesamtmenge des reservierten Speicherplatzes des Knotens auf dem SRFS-Gerät zurück
identifiziert von Name woher Name wird vom Scheduler willkürlich definiert
Writer in der Scheduler-Konfigurationsdatei. nicht gesetzter Wert: -1b
Beispiel:
CNodeSrfsSpaceReservedGet( Knoten, "/schnell" );

Int CNodeSrfsInBwGet( CNode Knoten, Schnur Name )
Gibt die Schreibbandbreite (Byte/Sek.) des SRFS-Geräts des Knotens zurück
identifiziert von Name . nicht gesetzter Wert: -1
Beispiel:
CNodeSrfsInBwGet( node, "/fast" );

Int CNodeSrfsOutBwGet( CNode Knoten, Schnur Name )
Gibt die Lesebandbreite (Byte/Sek.) des SRFS-Geräts des Knotens zurück
identifiziert von Name . nicht gesetzter Wert: -1
Beispiel:
CNodeSrfsOutBwGet( node, "/big" );

(5) Verschiedene Funktionen

Terminzeit datetimeGet()
Ruft das aktuelle Datum/die aktuelle Uhrzeit ab.

Int datetimeToSecs(DateTime dt)
gibt die Anzahl der Sekunden seit der Epoche (Beginn der UNIX-Zeit -
00:00:00, 1. Januar 1970) für das angegebene Datum/die angegebene Uhrzeit dt.

Int JobAktion( Job Job, Int Aktion, Schnur stoppen )
Führt Aktion on Job mit stoppen je nach angegeben
Maßnahmen. Aktion kann sein: SYNCRUN, ASYNCRUN, DELETE, RERUN, HOLD,
RELEASE, SIGNAL, MODIFYATTR, MODIFYRES wobei:
Action Beschreibung
=============== ==========================
SYNCRUN läuft Job synchron,
Bedeutung rufen Sie uns an! zu
JobAction() werden wir einzige
Rückkehr wann Job hat
begonnen Laufen or wann
an Fehler hat war
angetroffen.
Param Wert:
Name of Gastgeber zu Lauf
Job unter.

ASYNCRUN läuft Job asynchron,
Bedeutung rufen Sie uns an! zu
JobAction() werden wir Rückkehr
sofort as bald as
Lauf Anforderung is
validiert by PBS Server,
und nicht Notwendig wann
Job hat begonnen
Ausführung.
Param Wert:
Name of Gastgeber zu Lauf
Job unter.

LÖSCHEN Löschungen Job.
Param Wert:
"deldelay=<# of Sekunden>"
- verzögern # of Sekunden
zwischen Sendung
of ZIELLAUFZEIT und SIGKILL
zu Job Bevor
bekommen gelöscht.

WIEDERHOLUNG Wiederholungen Laufen Job,
welche beinhaltet Beenden
Sitzung Führer of
Job und Rückkehr Job
zu In Warteschlange Zustand.

HOLD und möchte Schachspielern ein Zuhause geben. dank One or mehr hält
on Job.
Param Wert:
„du“, "Ö", "S", „uo“, „os“,
„uos“
- tippe of hält zu Ort
on Job: Benutzer), andere),
System).

Loslassen entfernt or Releases
hält platziert on Arbeitsplätze.
Param Wert:
„du“, "Ö", "S", „uo“, „os“,
„uos“
- tippe of hält zu entfernen
für Job: Benutzer), andere),
System).

SIGNAL sendet a Signal zu
Ausführung Job.
Param Wert:
„HUP“, "SEUFZEND",...

ÄNDERNYATTR modifiziert angegeben
Attribut of Job zu
gegeben Wert, wann
Attributname is
!= „Ressourcenliste“ or
„resources_used“.
Param Wert:
„attrib_name=value“

ÄNDERN modifiziert Arbeitsplätze
Ressourcenliste
Attribut gegeben
res_name und
res_value:
Resource_List.res_name=
res_value
Param Wert:
„res_name=res_val“
stoppen Der Wert hängt von der Aktion ab. Geben Sie NULLSTR an, wenn kein Wert für vorhanden ist
Dieser Parameter ist erwünscht.
Rückgabewert: SUCCESS oder FAIL.
HINWEIS: Alle nicht erkannten Aktion wird ignoriert.
Beispiel:
// Lauf Job j synchron
JobAction(j, SYNCRUN, NULLSTR);

// Lauf Job j asynchron on Gastgeber "db"
JobAction(j, ASYNCRUN, "db");

// löschen Job j
JobAction(j, LÖSCHEN, NULLSTR);

// löschen Job j mit a verzögern of 5 Sekunden
// zwischen Sendung of ZIELLAUFZEIT und
// SIGKILL
JobAction(j, LÖSCHEN, "deldelay=5");

// Wiederholung Job j
JobAction(j, WIEDERHOLUNG, NULLSTR);

// Ort a Benutzer) on Job j
JobAction(j, HALT, „u“);

// Ort an andere) on Job j
JobAction(j, HALT, "Ö");

// Ort a System) on Job j
JobAction(j, HALT, "S");

// Ort a Standard (oder) on Job j
JobAction(j, HALT, NULLSTR);

// Release Benutzer) für Job j
JobAction(j, VERÖFFENTLICHUNG, „u“);

// Release andere) für Job j
JobAction(j, VERÖFFENTLICHUNG, "Ö");

// Release System) für Job j
JobAction(j, VERÖFFENTLICHUNG, "S");

// Release Standard (oder) für Job j
JobAction(j, VERÖFFENTLICHUNG, NULLSTR);

// senden SEUFZEND Signal zu Job j
JobAction(j, SIGNAL, "SEUFZEND");

// Aktualisierung Kommentar Attribut of Job
// j zu "a Botschaft".
// Das stoppen Format ist: attribute_name=new_value
// Konsultieren PBS Dokumentation für a Liste of Job
// Attribut Namen zur Verbesserung der Gesundheitsgerechtigkeit kann be spezifiziert.
JobAction(j, ÄNDERNYATTR, "Kommentar=a Nachricht");
// Aktualisierung Resource_List.cput Attribut of Job
// j zu 3600 Sekunden.
// Das stoppen Format ist: Ressourcenname=neuer_Wert
// See pbs_resources* Mann Seite für a Liste of
// Ressourcennamen zur Verbesserung der Gesundheitsgerechtigkeit kann be spezifiziert.
JobAction(j, ÄNDERN, "cput=3600");

QueJobFind(Que que, Spaß Int func,Int cpr,Int Wert);

QueJobFind(Que que, Spaß Schnur func,Int cpr,String Wert);

QueJobFind(Que que, Spaß Terminzeit func,Int cpr,DateTime Wert);

QueJobFind(Que que, Spaß Größe func,Int cpr,Größe Wert);

woher cpr ist einer von: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. Funkt
ist eine Funktion, deren EINZIGEs Argument vom Typ Job ist. Job ist die Rückkehr
Art.

Beschreibung: Gilt Funkt zu jedem Job in dass , und den ersten zurückgeben
Job, der den logischen Vergleich erfüllt: Funktion(Job) cpr Wert

Beispiel:

Größe JobVirtualMemAvailGet(Job Job)
{
Größe sz;

sz = JobSizeResReqGet(job, „mem“);
return(sz);
}
Int JobWallTimeReqGet(Job Job)
{
Int wallt;

wallt = JobIntResReqGet(job, „Wandzeit“);
return(wallt);
}

Int JobCpuTimeUsedGet(Job Job)
{
Int cput;

cput = JobIntResUseGet(job, "cput");
return(cput);
}

Dass findQueByName(Set Dass Warteschlangen, Schnur qname)
{
Dass q;

foreach(q in Warteschlangen) {
wenn ( QueNameGet(q) EQ qname ) {
return(q);
}
}
return(NOQUE);
}
sched_main()
{
Server s;
Dass als;
Sept Dass qm;

// bekommen aus einer regionalen Server
s = AllServersLocalHostGet();

// bekommen Warteschlangen of Server s
sq = ServerQueuesGet(s);

// bekommen Warteschlange namens "schnell" für
// aus einer regionalen Server
dass = findQueByName( Quadratmeter, "schnell" );

// Finden Sie 1. Job deren Wandzeit Anforderung
// is == 300s:
QueJobFind(que, JobWallTimeReqGet, OP_EQ, 300);

// Finden Sie 1. Job deren E-Mail Adresse zu
// benachrichtigen About Job Aktivität != „bayucan“:
QueJobFind(que, JobEmailAddrGet, OP_NEQ,
„bayucan“);

// Finden Sie 1. Job zur Verbesserung der Gesundheitsgerechtigkeit wurde erstellt nachdem
// or on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Finden Sie 1. Job zur Verbesserung der Gesundheitsgerechtigkeit wurde erstellt nachdem
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Finden Sie 1. Job zur Verbesserung der Gesundheitsgerechtigkeit wurde erstellt nachdem
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// Finden Sie 1. Job deren CPU Zeit benutzt < 1600s:
QueJobFind(que, JobCpuTimeUsedGet, OP_LT, 1600);

// Finden Sie 1. Job deren virtuell Erinnerung
// Anforderung <= 300 MB:
QueJobFind(que, JobVirtualMemAvailGet, OP_LE,
300 MB);
}

Job QueJobFind( Dass dass, Spaß Int Funktion, Int cpr)

Job QueJobFind( Dass dass, Spaß Schnur Funktion, Int cpr)

Job QueJobFind( Dass dass, Spaß Terminzeit Funktion, Int cpr)

Job QueJobFind( Dass dass, Spaß Größe Funktion, Int cpr)

woher cpr kann einer der folgenden sein: OP_MAX, OP_MIN, Funkt ist eine
Funktion, deren einziges Argument vom Typ Job ist.

Beschreibung: Gibt den Job mit dem gefundenen Maximal- oder Minimalwert zurück
Funktion(Job) wie es auf jeden Job in angewendet wird dass .

Beispiel:
Int JobCpuTimeReqGet(Job Job)
{
Int cput;

cput = JobIntResReqGet(job, "cput");
return(cput);
}
sched_main()
{
Dass als;
Job Arbeit;

// Finden Sie Job mit höchste CPU Zeit
// Anforderung:
Job = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);

// Finden Sie Job mit Minimum CPU Zeit
// Anforderung:
Job = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}

Dass QueFilter(Que que, Spaß Int func,Int cpr,Int Wert)

Dass QueFilter(Que que, Spaß Schnur func,Int cpr,String Wert)

Dass QueFilter(Que que, Spaß Terminzeit func,Int cpr, Datum Wert)

Dass QueFilter(Que que, Spaß Größe func,Int cpr,Größe Wert)

woher cpr kann einer der folgenden sein: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, Funkt ist eine Funktion, deren einziges Argument vom Typ Job ist.

Beschreibung: Gilt Funkt zu jedem Job in dass , und gibt eine neue Warteschlange zurück
Enthält alle Jobs, die die Vergleichsbedingung erfüllen:
Funktion(Job) cpr Wert

Beispiel:
Int JobWallTimeReqGet(Job Job)
{
Int wallt;

wallt = JobIntResReqGet(job, „Wandzeit“);
return(wallt);
}
sched_main()
{
Dass als;
Dass newq;

// Rücksendungen a neu dass mit alle Jobs & Karriere in "als"
// mit a Wandzeit Anforderung == 300s:
neuq = QueFilter(que, JobWallTimeReqGet, OP_EQ, 300);

// Rücksendungen a neu dass mit alle Jobs & Karriere in "als"
// mit an E-Mail Adresse != „bayucan“:
neuq = QueFilter(que, JobEmailAddrGet, OP_NEQ, „bayucan“);

// Rücksendungen a neu dass mit alle Jobs & Karriere in "als"
// erstellt nachdem or on 3 / 3 / 1997:
neuq = QueFilter(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Rücksendungen a neu dass mit alle Jobs & Karriere in "als"
// erstellt nachdem 3:3:44:
neuq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Rücksendungen a neu dass mit alle Jobs & Karriere in "als"
// erstellt nachdem 3:3:44 on 3 / 3 / 1997:
neuq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// Anmerkungen: Das Original "als" is nicht geändert
// auch immer.
}

Int Sortieren(Setzen Job s, Spaß Int Schlüssel, Int Bestellung)

Int Sortieren(Setzen Job s, Spaß Schnur Schlüssel, Int Bestellung)

Int Sortieren(Setzen Job s, Spaß Schwimmer Schlüssel, Int Bestellung)

Int Sortieren(Setzen Job s, Spaß Terminzeit Schlüssel, Int Bestellung)

Int Sortieren(Setzen Job s, Spaß Größe Schlüssel, Int Bestellung)

woher s die Menge der zu sortierenden Jobs. Schlüssel ist der Sortierschlüssel, der a ist
Funktion, deren einziges Argument vom Typ Job ist, Auftrag ist die Sortierung
Reihenfolge: ASC, DESC.

Beschreibung: Sortiert die Elemente von s , entweder in ASCending oder
Absteigende Reihenfolge der Werte, die von zurückgegeben wurden Schlüssel funktionieren als
wird auf jedes Mitglied der Jobgruppe angewendet. Der s Objekt wird geändert
mit diesem Anruf. Dies gibt je nach Ergebnis ERFOLGREICH oder FEHLGESCHLAGEN zurück
die Art.

Beispiele:
Größe JobMemReqGet(Job Job)
{
Größe mem;

Mitglied = JobSizeResReqGet(job, „mem“);
Rückkehr(mem);
}

sched_main()
{
Server Meister;

Sept Job Arbeitsplätze;

Int Auftrag;

// bekommen aus einer regionalen Server
Master = AllServersLocalHostGet();

Jobs & Karriere = ServerJobsGet(Meister);
Sortieren(Jobs, JobPriorityGet, ASC);
Sortieren(Jobs, JobIdGet, DESC);
Auftrag = ASC;
Sortieren(Jobs, JobDateTimeCreatedGet, bestellen);
Auftrag = DESC;
Sortieren(Jobs, JobMemReqGet, bestellen);
}

Int Sortieren(Setzen Dass s, Spaß Int Schlüssel, Int Bestellung)

Int Sortieren(Setzen Dass s, Spaß Schnur Schlüssel, Int Bestellung)

Int Sortieren(Setzen Dass s, Spaß Schwimmer Schlüssel, Int Bestellung)

Int Sortieren(Setzen Dass s, Spaß Terminzeit Schlüssel, Int Bestellung)

Int Sortieren(Setzen Dass s, Spaß Größe Schlüssel, Int Bestellung)

woher s die Menge der zu sortierenden Warteschlangen. Schlüssel ist der Sortierschlüssel, der a ist
Funktion, deren einziges Argument vom Typ Que ist, Auftrag ist die Sortierung
Reihenfolge: ASC, DESC.

Beschreibung: Sortiert die Elemente von s , entweder in ASCending oder
Absteigende Reihenfolge der Werte, die von zurückgegeben wurden Schlüssel funktionieren als
wird auf jedes Mitglied der Warteschlangenmenge angewendet. Der s Objekt ist
mit diesem Aufruf geändert. Dies gibt je nach Ergebnis ERFOLGREICH oder FEHLGESCHLAGEN zurück
Ergebnis dieser Art.

Beispiele:
Größe QueMemAvailGet(Que als)
{
Größe mem;

Mitglied = QueSizeResAvailGet(que, „mem“);
Rückkehr(mem);
}

sched_main()
{
Server Meister;

Sept Dass Fragen;
Int Auftrag;

// bekommen aus einer regionalen Server
Master = AllServersLocalHostGet();

Fragen = ServerQueuesGet(Meister);
Sortieren(ques, QuePriorityGet, ASC);
Sortieren(ques, QueNameGet, ASC);
Auftrag = DESC;
Sortieren(ques, QueMemAvailGet, bestellen);
}

Int Sortieren(Setzen Server s, Spaß Int Schlüssel, Int Bestellung)

Int Sortieren(Setzen Server s, Spaß Schnur Schlüssel, Int Bestellung)

Int Sortieren(Setzen Server s, Spaß Schwimmer Schlüssel, Int Bestellung)

Int Sortieren(Setzen Server s, Spaß Terminzeit Schlüssel, Int Bestellung)

Int Sortieren(Setzen Server s, Spaß Größe Schlüssel, Int Bestellung)

woher s die Gruppe der zu sortierenden Server. Schlüssel ist der Sortierschlüssel, der ist
eine Funktion, deren einziges Argument vom Typ Server ist, Auftrag lernen muss die
Sortierreihenfolge: ASC, DESC.

Beschreibung: Sortiert die Elemente von s , entweder in ASCending oder
Absteigende Reihenfolge der Werte, die von zurückgegeben wurden Schlüssel funktionieren als
wird auf jedes Mitglied der Servergruppe angewendet. Der s Objekt ist
mit diesem Aufruf geändert. Dies gibt je nach Ergebnis ERFOLGREICH oder FEHLGESCHLAGEN zurück
Ergebnis dieser Art.

Beispiele:
Größe ServerMemAvailGet(Server Dienst)
{
Größe mem;

Mitglied = ServerSizeResAvailGet(serv, „mem“);
Rückkehr(mem);
}

sched_main()
{
Sept Server sserver;

Int Auftrag;

Int zurück;

sserver = AllServersGet();

ret = Sortieren(sserver, ServerMaxRunJobsGet, ASC);
Sortieren(sserver, ServerInetAddrGet, ASC);

Auftrag = DESC;
Sortieren(sserver, ServerMemAvailGet, bestellen);
}

Int Sortieren(Setzen CNode s, Spaß Int Schlüssel, Int Bestellung)

Int Sortieren(Setzen CNode s, Spaß Schnur Schlüssel, Int Bestellung)

Int Sortieren(Setzen CNode s, Spaß Schwimmer Schlüssel, Int Bestellung)

Int Sortieren(Setzen CNode s, Spaß Terminzeit Schlüssel, Int Bestellung)

Int Sortieren(Setzen CNode s, Spaß Größe Schlüssel, Int Bestellung)

woher s die Menge der zu sortierenden Knoten. Schlüssel ist der Sortierschlüssel, der a ist
Funktion, deren einziges Argument vom Typ CNode ist, Auftrag ist die Sortierung
Reihenfolge: ASC, DESC.

Beschreibung: Sortiert die Elemente von s , entweder in ASCending oder
Absteigende Reihenfolge der Werte, die von zurückgegeben wurden Schlüssel funktionieren als
auf jedes Mitglied der Knotenmenge angewendet. Der s Objekt ist
mit diesem Aufruf geändert. Dies gibt je nach Ergebnis ERFOLGREICH oder FEHLGESCHLAGEN zurück
Ergebnis dieser Art.

Beispiele:
Größe CNodeMyMemAvailGet(CNode cn)
{
Größe mem;

Mitglied = CNodeMemAvailGet(cn, „virtuell“);
Rückkehr(mem);
}

sched_main()
{
Sept CNode scnode;

Int Auftrag;

scnode = AllNodesGet();

Sortieren(snode, CNodeIdletimeGet, ASC);
Sortieren(snode, CNodeNameGet, ASC);
Auftrag = DESC;
Sortieren(snode, CNodeMyMemAvailGet, bestellen);
}

CNode..Get() FUNKTIONEN


Die Rückgabewerte der im vorherigen Abschnitt besprochenen CNode..Get()-Funktionen sind
erhalten, indem bei jeder Planungsiteration Ressourcenabfragen an das MOM des CNode gesendet werden.
Zum Beispiel, CNodeLoadAveGet(Knoten) gibt den von einigen erhaltenen Wert zurück
Ressource>-Abfrage (dies könnte die Zeichenfolge „loadave“ sein), wie sie an das MOM des Knotens gesendet wird. Der
" -> CNode..Get()“-Zuordnungen werden intern eingerichtet, können es aber sein
Über die Scheduler-Konfigurationsdatei können geänderte oder weitere Zuordnungen hinzugefügt werden. Die Konfig
Datei wird in besprochen pbs_sched_basl(8B).
Die bereits erstellten Zuordnungen sind im Folgenden aufgeführt:

Für alle Architekturen:

CNode..Get() präsentieren rufen Sie uns an! Gastgeber Ressourcen
======================== =============
CNodeOsGet(Knoten) Bogen
CNodeLoadAveGet(Knoten) Loadave
CNodeIdletimeGet(Knoten) Wartezeit

Nutzen Sie basl2cB online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad