Nylig jeg trengte å gjøre noen fjernundervisning; en av mine kollegaer ville ha meg til å vise ham hvordan du gjør programvare bygger på Linux. Det eneste problemet var at jeg er på østkysten, og han er på Vesten. Hvordan kunne jeg vise ham bygge og installere prosessen? Etter å ha vurdert noen alternativer, fant vi vår løsning i GNU Screen.
Jeg vurderte å bruke standard Unix-verktøyet skript for å lagre en logg over min skrive. Skriptet har flere problemer, ikke minst som er fryktelig resulterende utdataene (script lagrer alt, inkludert vognreturer og endringer). I tillegg vil dette være fullstendig ikke-interaktiv. Hvis min kollega hadde et spørsmål eller trenger en avklaring, ville vi ha til å korrespondere via e-post etterpå. Det ville være en frustrerende opplevelse for oss begge.
En annen mulig løsning ville være å bruke VNC. Min kollega kunne koble til min skjerm, og vi kunne veksle kontroll av mus og tastatur. At tilnærmingen virket som overkill, siden det jeg ønsket å demonstrere var rent kommandolinje arbeid. Det vil også være vanskelig å generere en logg over en VNC-økt. Endelig tekniske begrensninger diktert at den eneste måten han kunne koble til min maskin for demonstrasjonen var over en enkel SSH-tilkobling, så dette diktert et rent kommandolinje løsning.
Screen er en av disse verktøyene som er vanskelig å forklare, men ren geni når du ser det i drift. Beskrivelsen fra sin offisielle hjemmeside hjelper ikke mye.
Screen er en full-screen vindusbehandler som multiplekser en fysisk terminal mellom flere prosesser, typisk interaktive skjell
I utgangspunktet lar skjermen du opprette virtuelle terminaler som er ikke koblet til de faktiske xterms eller konsoll skjermer. Deretter kan du koble fra en skjerm sesjon og koble fra et annet sted samtidig bevare skallet eller andre prosesser som kjører. For en introduksjon til skjermen, sjekk ut denne Linux.com artikkelen.
Dette er bare begynnelsen kraft og fleksibilitet skjermen er av. Du kan koble til en økt mer enn en gang ved hjelp av -x argument til skjermen. Det betyr at du kan for eksempel la postprogrammet kjører i en terminal (under skjermen) på jobb og deretter koble fra hjemmet for å lese e-post i samme prosess. Det er ikke nødvendig å koble på jobb, og når du kommer tilbake i neste morgen din mailer vil være nøyaktig slik du forlot det, med all din tilstand perfekt bevart.
Skjerm tar denne funksjonen, som kalles multi- visningsmodus, til neste nivå med flerbrukermodus. I flerbrukermodus mer enn én bruker kan få tilgang til og kontrollere en skjerm session. Problemet med denne modusen er at det er ikke åpenbart hvordan du setter det opp. Her er hva jeg til slutt funnet ut ved hjelp av noen Google søk:
-
Læreren starter skjermen i en lokal xterm, for eksempel via skjermen -S SessionName. Den -S bryteren gir økten et navn, som gjør flere skjerm økter enklere å administrere.
-
Studenten bruker SSH til å koble til lærerens datamaskin.
-
Læreren har deretter å tillate flerbruker tilgang på skjermen sesjon via kommando Ctrl-en. flerbruker på (alle skjerm kommandoer starter med skjermen escape-sekvens, Ctrl-a)
Neste læreren gir tillatelse til studenten brukeren tilgang til skjermen økt med Ctrl-en. acladd student
der student
er student login ID
Studenten kan nå koble til lærerens skjerm sesjon. Syntaksen for å koble til en annen brukers skjerm økt er skjermen -x brukernavn Twitter /økt.
På dette punktet læreren og eleven har begge kontroll av økten. Legg merke til at det er sikkerhets implikasjoner til dette - studenten er i drift økten som læreren og potensielt kan gjøre noe for å skade systemet. Hvis du ikke stoler på elevene dine så du bør nok bruke en spesiell lærer konto og ikke vanlig påloggingskonto. Læreren kan også gjøre studentenes sesjon beskyttet. For å gjøre dette, bruker du kommandoen aclchg skjermen for å fjerne skrivetilgang for studenten: Ctrl-a: aclchg student
-w " # ". Studenten kan da bare observere lærerens handlinger. Ellers vil læreren må la elevarbeider på ære systemet.
Mens mitt eksempel dreier seg om en lærer og en elev, kan mange brukere legge til én økt. Det kan også være flere lærere og elever.
Hva om kommunikasjon mellom lærer og student? Vel, brukte vi en telefon, men du kan bruke chat, IRC, eller VoIP for å stille spørsmål. Det er også en melding funksjon i flerbruker-skjermen: Ctrl-a: wall meldingen vil skrive en melding til alle brukere som er koblet til en skjerm sesjon. Et problem med dette er at den bruker terminalen statuslinjen. I en xterm dette er vinduet tittellinja området, som, avhengig av vindusbehandler, kan ikke være veldig tydelig.
Den siste ingrediensen for å bruke skjermen som et pedagogisk verktøy logger. Med en logg over alle terminalen utgang, ville min kollega og jeg har en eksakt avskrift av det vi gjorde i tilfelle det var noen spørsmål senere. Som jeg nevnte tidligere, er standard Unix verktøy script det opplagte svaret, men det er en svært begrenset verktøy og produserer ikke veldig lesbart utgang. Du kan heller ikke kan slå den av og på i en session hvis du for eksempel ønsker å kjøre en full-skjerm verktøy som for eksempel en tekst editor.
Heldigvis skjermen kommer med en omfattende logging anlegg som er mye mer sofistikert enn hva skriptet kan gjøre. Skjer logging kan slås på eller av når som helst med Ctrl-en H, eller du kan bruke -L bryteren når du starter skjermen for å aktivere den som standard. Loggfilen er skrevet til gjeldende katalog under navnet screenlog. n
, der n
økes med en for hver ny logg.
loggfil vil inneholde produksjon av økten med rettelser og markørbevegelser allerede vurdert og søkt. En påminnelse er at programmer som sender kontrollsekvenser til skjermen vil fortsatt forvirre utgang. Ett eksempel på dette er GNU ls, som standard fargelegger utgang. Du bør slå dette av i økten ved å bruke noe sånt som følgende bash alias:
alias ls = 'ls --color = none'
Med det, alle brikkene er på plass: Flere brukere kan dele en skjerm sesjon for noen form for kommandolinjebasert undervisning. Læreren kan når som helst ta kontroll over økten ved å slå alle andre brukere til lesetilgang. Til slutt kan du slå på logging anlegg i skjermen for å få en nøyaktig og brukbar logg over hele økten (eller bare deler av økten hvis du ønsker det).
Jeg fant skjermen for å fungere svært godt for dette formålet , og min kollega var også fornøyd med resultatene. Noen av alternativene og kontrollene i skjermen kan være vanskelig å finne ut fordi skjermen er så kraftig og fleksibel. Men jeg har tenkt å bruke dette verktøyet i fremtiden, og jeg oppfordrer alle i en lignende situasjon for å prøve det. Anmeldelser
Sett skjermen binære (/usr /bin /skjerm) setuid root. Som standard er skjermen installert med setuid litt slått av, da dette er en potensiell sikkerhetshull.