Diverse

Hva du finner på denne siden!

På denne siden finner du tips om forskjellige nyttige unix-kommandoer som ikke faller naturlig in på noen av de andre sidene. Det kan i praksis være alt mulig rart, så det er bare å lete igjennom og se om det er noe som passer for deg!



Ssh tunnel

Av og til har man behov for å kunne koble seg til en maskin som befinner seg bak en brannmur på en eller annen måte. For eksempel kan du tenke deg at du har satt opp en linux maskin for noen som ikke er så kjempeflinke i linux, og de ønsker å ha den stående hjemme, hengende på en adsl-forbindelse og gjerne NAT'et bak en trådløs router. Hvordan kan man løse en slik utfordring? En fin mulighet er å sette opp en ssh-tunnel fra maskin til en annen maskin som du alltid kan nå. En slik tunnel kan settes opp med følgende kommando:

ssh -f -N -R *:20022:localhost:22 -lbrukernavn maskin.fastip.net

Opsjonene har følgende betydning:

-f: Tving ssh til å kjøre i bakgrunn.

-N: ssh skal ikke starte noen spesiell kommando på maskinen man kobler til. Uten denne opsjonen vil et shell bli forsøkt startet.

-R: angir tunnel fra annen maskin. Alle maskiner (*) som forsøker å koble seg til maskinen vi kobler oss til, på port 20022, vil bli sendt videre til denne maskinen (localhost) på port 22, der ssh som regel kjører.

-l: angir brukernavn vi vil benytte for å koble oss til

Endelig oppgis maskinen med fast ip som vi vil koble oss til.

For å ta vare på sikkerheten er det nok lurt å definere en spesiell bruker for formålet, og passord/passphrase må håndteres på en passende måte. Det er også en del utfordringer med å holde forbindelsen oppe. Dersom adsl-systemet får en dynamisk adresse (som er bakgrunnen for hele denne løsningen), vil tunnellen måtte restartes dersom adsl-systemet får en ny adresse. Man er selvfølgelig også avhengig av å ha tilgang til en maskin med fast ip.



Prosesser

Som kjent opererer unix med en mengde prosesser for å kjøre de programmene brukeren ber om. Vær prosess blir tilordnet en entydig identitet (såkalt PID). Jeg skal ikke gå særlig i dybden her, for det kan jeg ikke. Men av og til har vi behov for å finne ut om et bestemt program kjører, for eksempel et program som benyttes i client-server samenheng, eller i forbindelse med kommunikasjon på annen måte. For å sende signaler til prosesser kan vi benytte kill og killall. Den første kommandoen må ha en PID som argument, mens den siste kommandoen tar et program som argument, og sender signal til samtlige prosesser som passer til programmet. Dette kan være nyttig for å drepe mange prosesser på en gang, men killall kan også benyttes til å sjekke om en prosess finnes, ved å sende signalet "0". Hvis vi for eksempel vil sjekke om det finnes en netscape prosess på maskinen, kan vi si

killall -0 netscape

Hvis en slik prosess finnes, vil en ikke-null verdi bli returnert.


pgrep, pkill

To nyttige program som du kanskje har installert på maskinen din er pgrep og pkill. Disse programmene lar deg automatisk finne PID for applikasjoner som oppfyller forskjellige kriterier, for eksempel at de kjører som en gitt bruker, eller at applikasjonsnavnet matcher et gitt uttrykk. pgrep lister opp PID'ene, mens pkill sender et signal til prosessene, default er TERM (15), som forsøker å avslutte (drepe) prosessen. Eksempler på bruk kan være:

pgrep -u <brukernavn> <program>
pkill -KILL <program>
Den første lister alle prosesser av typen program som kjøre som gitt bruker, den andre dreper alle prosesser som du har lov til å drepe - og som matcher gitt program


Status av siste kommando

Av og til er det nyttig å sjekke hva retur-verdien av siste kommando var, selvom vi ikke har tilordnet en variabel denne verdien. Det kan gjøres enkelt i bash shellet, fordi retur-verdien blir lagret i variabelen ?. Dermed vil echo $? gi retur-verdien av siste kommando.

Prosess tre

Vi kan av og til ha behov for å finne ut hvilke programmer som er starte fra hvilke, det vil si et tre av prosesser. Vi kan enkelt lage et slik tre, i ascii form, ved hjelp av ps og opsjonen "f". Hvis vi også putter på opsjonen "w" får vi et fint bilde, prøv for eksempel ps axfw.

Man-sider på bok-form

Av og til øsnker du kanskje å skrive ut en man-side på en hendig form for å kunne lese i ro og mak når du en sjelden gang beveger deg bort fra maskinen din. Samtidig vil vi gjerne spare skogen så mye som mulig, så kompirmert form er bra. Som regel er mansidene lagret på komprimert form, så vi pakker ut først:

gunzip -c <manpage-file> | groff -mandoc | psbook | psnup -2 | lpr -Pprinter

På noen systemer kan du erstatte de to første kommandoene med man -t <manpage>, dette skriver man-siden på std.ut.

The most recent update of this page was done: 10.03.2007 by Åsmund Ødegård