Kapitel 9. Avancerede emner

Indholdsfortegnelse

Kommandosokler

Kommandosokler

Dette er en funktion du kan bruge til at fjernstyre kdm. Det er hovedsageligt beregnet til at bruges af ksmserver og kdesktop i en session som kører, men andre tillempninger er også mulige.

Soklerne er UNIX®-domænesokler som eksisterer i undermapper af mappen som angives af FifoDir=. Undermapperne er væsentlige for adressering og sikkerhed. Soklerne har alle filnavnet socket og filrettighederne rw-rw-rw- (0666). Dette skyldes at visse systemer ikke kan lide filrettighederne for sokkelfilerne.

Der er to slags sokler: den globale (dmctl) og dem for hver skærm (dmctl-<skærm>).

Den globale sokkels undermappe ejes af systemadministratoren, og undermapperne for sokler for hver skærm ejes af brugeren som for øjeblikket ejer sessionen (systemadministratoren eller den indloggede bruger). Gruppen som ejer undermapperne kan indstilles med FifoGroup=, ellers er det systemadministratoren. Undermappernes rettigheder er rwxr-x--- (0750).

Felterne i kommandoerne er adskilt af tabulatortegn (\t), felterne i en liste er adskilt af mellemrum, egentlige mellemrum i listefelter angives med \s.

Kommandoen afsluttes med en nylinje (\n).

Det samme gælder for svar. Svaret ved en kommando der lykkes er ok, muligvis efterfulgt af den forespurgte information. Svaret ved fejl er et ord i samme stil som errno (f.eks. perm, noent, osv.), fulgt af en længere forklaring.

Globale kommandoer:

login skærm (now | schedule) bruger kodeord [sessionsargument]

Log brugeren ind med angiven skærm. Hvis now angives, afbrydes en session som eventuelt kører, ellers udføres indlogningen efter sessionen afsluttes. Sessionsargumenter er indhold for .dmrc, som citeres på lignende måde som printf. Nøgler som ikke angives gives tidligere gemte værdier som standard.

Kommandoer for hver skærm:

lock

Skærmen markeres som låst. Hvis din X-Server bryder sammen i denne tilstand, udføres ingen automatisk indlogning igen, også selvom tilvalget er aktiveret.

unlock

Omvendte effekt af lock, og genaktivér automatisk indlogning igen.

suicide

Sessionen som for øjeblikket kører tvinges til at afsluttes. Intet forsøg på automatisk genindlogning gøres, men en skemalagt "login"-kommando udføres.

Kommandoer for alle sokler

caps

Returnerer en liste med det som soklen kan håndtere:

kdm

Identificerer kdm, i tilfælde af et en anden skærmhåndtering også implementerer protokollen.

list, lock, suicide, login

Respektiv kommando understøttes.

bootoptions

Kommandoen listbootoptions og = for kommandoen shutdown understøttes.

shutdown <liste>

shutdown understøttes for listen med brugere (en liste adskilt med kommategn). * betyder alle godkendelseskontrollerede brugere.

nuke <liste>

Fremtvunget nedlukning kan udføres af listede brugere.

nuke

Fremtvunget nedlukning kan udføres af hvem som helst.

reserve <nummer>

Reserveskærme er indstillede, og nummer er for øjeblikket tilgængelige.

list [all | alllocal]

Returnér en liste med sessioner som kører. Normalt listes alle aktive sessioner. Hvis all angives, listes også passive sessioner. Hvis alllocal angives, listes også passive sessioner, men indkommende fjernsessioner springes over.

Hver sessionsindgang består af flere værdier adskilte med kommategn:

  • Skærm eller TTY-navn

  • VT-navn for lokale sessioner

  • Den indloggede brugers navn, tomt for passive sessioner og udgående fjernsessioner (lokal vælgertilstand)

  • Sessionstype eller “<remote>” for udgående fjernsessioner, tomt for passive sessioner.

  • Et flagfelt:

    • * for skærmen som hører til soklen som udfører forespørgsler.

    • ! for sessioner som ikke kan afbrydes af soklen som udfører forespørgsler.

Nye felter kan tilføjes i fremtiden.

reserve [tidsgrænse i sekunder]

Start en reserveindlogningsskærm. Hvis ingen logger på indenfor den angivne tid (normalt et minut), fjernes skærmen igen. Når sessionen for skærmen afsluttes, fjernes skærmen også.

Tillades kun for lokale skærmes sokler og den globale sokkel.

activate (vt|skærm)

Skift til en særlig VT (virtuel terminal). En VT kan enten angives direkte (f.eks. vt3) eller ifølge skærmen som bruger den (f.eks. :2).

Tillades kun for lokale skærmes sokler og den globale sokkel.

listbootoptions

List tilgængelige starttilvalg.

shutdown (reboot | halt) [=bootchoice] (ask|trynow|forcenow|schedule|start (-1|end (force|forcemy|cancel))))

Beder en nedlukning af maskinen, enten en genstart eller en stop/nedlukning.

Et valg af operativsystem for næste start kan angives fra listen som returneres af listbootoptions.

Nedlukninger som forespørges fra sokler for hver skærm udføres når den nuværende session for denne skærm afsluttes. En sådan forespørgsel kan gøre at en dialog dukker op som beder om bekræftelse og/eller godkendelse.

start er tiden som nedlukningen er skemalagt til. Hvis den begynder med et plustegn, lægges aktuel tid til. Nul betyder med det samme.

slut er den seneste tid som nedlukningen skal udføres hvis aktive sessioner stadigvæk kører. Hvis den begynder med et plustegn lægges starttiden til. -1 betyder vent evigt. Hvis slutningen nås og aktive sessioner stadigvæk kører, kan kdm gøre et af følgende:

  • cancel - opgiv nedlukningen

  • force - luk ned ikke desto mindre

  • forcemy - luk ned uanset om alle aktive sessioner tilhører brugeren som udfører forespørgslen. Kun for sokler for hver skærm.

start og slut angives som sekunder siden UNIX®-epoken.

trynow er et synonym for 0 0 cancel, forcenow for 0 0 force og schedule for 0 -1.

ask forsøger at lukke ned med det samme og udfører interaktion med brugeren hvis aktive sessioner stadigvæk kører. Kun for sokler for hver skærm.

shutdown cancel [local|global}

Afbryd en skemalagt nedlukning. Den globale sokkel afbryder altid den nuværende umiddelbare nedlukning, mens sokler for hver skærm normalt afbryder sine forespørgsler der er i kø.

shutdown status

Returnerer en liste med information om nedlukninger.

Indgangene er flere værdier adskilte af kommategn:

  • (global|local) - umiddelbare vs nedlukninger der er i kø. En lokal indgang kan kun returneres af en sokkel for en bestemt skærm.

  • (halt|reboot)

  • start

  • slut

  • ("ask"|"force"|"forcemy"|"cancel")

  • Numerisk bruger-id for brugeren som udfører forespørgslen, eller -1 for den globale sokkel.

  • Valg af operativsystem for næste start eller "-" for intet.

Nye felter kan tilføjes senere

Der er to måder at bruge soklerne:

  • Forbind direkte til dem. FifoDir eksporteres som $DM_CONTROL. Navnet på soklen for hver skærm kan afledes fra $DISPLAY.

  • Ved at bruge kommandoen kdmctl (f.eks. inde i et skalscript). Prøv kdmctl -h for at finde ud af mere.

Her er et eksempel på et Bash-script for at “genstarte med FreeBSD”:

if kdmctl | grep -q shutdown; then
  IFS=$'\t'
  set -- `kdmctl listbootoptions`
  if [ "$1" = ok ]; then
        fbsd=$(echo "$2" | tr ' ' '\n' | sed -ne 's,\\s, ,g;/freebsd/I{p;q}')
        if [ -n "$fbsd" ]; then
          kdmctl shutdown reboot "=$fbsd" ask > /dev/null
        else
          echo "Start med FreeBSD ikke tilgængelig."
        fi
  else
        echo "Startalternativ ikke tilgængelige."
  fi
else
  echo "Kan ikke genstarte maskinen."
fi