måndag 24 november 2008

Några Terminal kommando (uppdateras ibland)

Kommandon
ls -halrtu -> visar de senast använda filerna och när de användes samt deras storlek.
ls -t -> filernas sorteras efter när de använde senast.
ls -r -> sorterar i omvänd årdning
ls - u -> Sorterar efter senast använd. Med -lt sotrera efter när filen senast användes och visa det. Med -l: visa när filen senast användes och sortera efter namn.
ls -a -> visar dålda filer
ls -l -> visar rättigheter
ls -alh -> visar alla dolda filer och även dFetess rättigheter och storlek i human readable, KB och MB osv.
ls -d /* -> Visar endast mappar

sudo lshw -businfo ->Visar information om hårdvaran i tabellform. Men kan ta ut mer info om en speciell class (under class kolumnen) tex , memory eller network. Med följande kommando:
sudo lshw -C memory -> Ger mer information för en specifik klass. Kör -businfo för att få en lista på giltiga classer, se åvan.
df -h -> visar hur stora de monterade enheterna är, tex. partitioner och hur mycket som har använts.
pwd -> print working directory, visar i vilken mapp man är.
cd -> change directory, cd mapnamn.
cd .. -> tar en upp ett steg i katalogstrukturen.
cd ~ -> flyttar en tillbaka till ens hemma-mapp.
cd / -> flyttar en längst upp i filstrukturen.history -> Visar historik på de senaste 400 använda kommandona.
history n -> n står för de senaste antalet kommandon man vill se.
!n -> kör kommando n funnen i histroy
ps axc -o user,%cpu,%mem,vsz="Mem(Kb)",command -> Visar processer enligt: användare, %cpu, %mem, mem(Kb), processnamn
sudo iwlist scanning -> scannar efter tillgängliga trådlösa nätverk och visar info om dem.
 ss -ap -> ss är ett program för att undersöka sockets. -a display all sockets,  -p show process using socket.

Skapa linux användare:
sudo adduser användare
kommandot skapar även en /home/jonas och sätter att man ska använda /bin/bash som standard.
Obs! kör även för att sätta ett lösenord till användaren:
Skapa/ändra lösenod för användare 
sudo passwd användare

Skapa en grupp för användarna:
sudo addgroup grupp_namn

Detta kommando lägger till användaren till den befintliga gruppen grupp_namn
sudo usermod -aG grupp_namn anändaren

Detta kommando ändrar grupp till grupp_namn för SharedFolder och dess undermappar och filer.
sudo chgrp -R grupp_namn SharedFolder

-----
OBS! detta är Python:
Den kör samma kommando som ps kommandot ovan.
print subprocess.Popen(["ps", "axc", "-o", "user,command,%cpu,%mem,vsz=Mem(Kb)"],stdout=subprocess.PIPE).communicate()[0]

-----

!n Där än står för numret motsvarande det kommando man vill köra i history.
!! Kör det föregående kommandot igen.
espek -> är ett komando för att få datorn att "prata" använd det som espeak wake-up-now (obs! i Ubuntu 9.10 är det en bugg som hör ihop med bluetooth. när man sätter igång bluetooth så funkar det... en bugg raport är skriven så det löser sig säkert så småningom....)

sleep nh nm ns; kommando_att_köra -> n är om hur många timmar,minuter eller sekunder man vill köra kommandot. Man kan välja att bara sätta ut tex sleep 30s; kommando1; commando2. Ett exempel sleep 8h 30m; mocp -S; mocp -p detta startar terminal mp3 spelaren mocp som server och börjar sedan spela från första låten på spellistan. moc måste så klart vara installerat... För att stänga av mocp så skriv mocp i terminalen och tryck Enter sen är det shift q för att avsluta.
EDIT: I moc versionerna föra 2.5 så kunde man skriva mocp -p men i och med version 2.5 måste man först satarta servern med mocp -S och sen säga åt den att börja spela första låten i spellistan, mocp -p. Jag vet inte om det är en bugg men det går att komma runt med mocp -S; mocp -p.

En väckarklocka kan se ut så här:sleep 8h; espeak wake-up-buddy; sleep 30s; espeak now; sleep 30s; ; mocp -S; mocp -p

Om man vill köra nåt som en veckarklocka kan det vara lättare att använda sig av crontab där man kan sätta ut ett klockslag tex 07:30 än att använda sleep och räkna ut exakt hur länge det är kvar tills man ska upp.

Terminal genvägar
ctrl + shift + v -> Klistrar in i terminalen från urklippshanteraren.
ctrl + shift + c -> Kopierar från terminalen till urklippshanteraren.
ctrl + r -> låter en söka i kommando historiken.
ctrl + w
-> klipper ut ett ord i taget vänster om markören.
ctrl + k
-> Klipper ut allt till höger om markören.
ctrl + y
-> klistrar in det man just klippt ut med ctrl + w/k.
ctrl + f -> Forward one character.
ctrl + b -> Backwards one character.
Alt
+ f -> Forward one word.
Alt + b -> Backwards one word.
ctrl + a -> Move to the beginning of the line.
ctrl + e -> Move to the end of the line.
ctrl + d -> Delete one character.
Alt + d -> Delete one word.

Med Alt + f blir det lite problem i terminalen då menyn flikar har snabbtangenten Alt + f. Det går att fixa genom att i terminalen klicka på menyn Redigera -> Tangentbordsgenvägar där kan man av markera Aktivera menyåtkomsttangenter. Det är ju inte så ofta man använder snabbtangenterna för att förflytta sig i menyn i terminalen tycker jag :)

ctrl + o
-> Skriv några kommandon tex. cd /, cd /home, cd användarnamn och cd / igen. Tryck sen på uppåtpil så kommandot cd /home kommer fram och tryck nu ctrl + 0. Då kommer automatiskt det efterföljande kommandot att köras, cd användarnam.




tisdag 4 november 2008

Regnum Online Ljud å kunna gå

Problem:
Efter att ha bytt till Ubuntu 8.10 och installerat Regnum Online Version: 0.9.37 så kunde jag helt plötsligt inte flytta min gubbe. När jag tryckte på s så togs det ett screenshot och när jag tryckte på Enter så kom skrivbordet tvärt fram och efter nåt till tryck så stängde spelet ned sig utan nåt meddelande. Det fanns inte heller nåt ljud i spelet.

Lösning:
Se till så att tangentbords layouten bara har ett språk och inte som i mitt fall två, USA och Svenska. Ändra det såhär System-Inställningar-Tangentbord och fliken layout. När det är fixat så funkar kontrollerna som de ska.
För att få igång ljudet gör följande: Installera libopenal1 i från Synaptic så fixas ljudet också.

Klart!

fredag 26 september 2008

Ta bort många filer med find och rm

Jag hade en massa db filer i min musik mapp och Bild mapp som jag hade fått på köpet när jag flyttade mina filer från Windows till Ubuntu och på det här sättet var det enkelt att bli av med dom. Jag gick in i Musik mappen och körde detta kommando (jag har satt dit XX för det är inte bra att köra detta kommando på alla filer för då kan nåt viktigt försvinna... Se till att du vet vad du gör innan rm (remove) kommandot körs. När man kör med kommandot som slutar på less så visas filerna och kör man nästa kommando så tas de filerna som visades bort om du står kvar i samma mapp...

Kör alltså detta kommando för att se vilka filer du kommer att tar bort... den söker i alla undermappar med utgångspunkt den du är i. -print0 separerar filer med ett specialtecken i stället för ett mellanslag och gör så att inte mellanslag i namnen ställer till det. -0 är en nolla och gör så att inte mellanslag i namnen ställer till det för xargs, xargs bryter vid ett specialtecken i stället.
find -iname '*.XX' -print0 | xargs -0
När du är säker på att alla filer som du just sett ska tas bort så kör du detta kommando. Kom bara ihåg att byta ut *.XX mot samma som du hade i den förra sökningen :)
-p gör så att man frågas innan man kör kommandot rm -f och visar på vilka filer som komandot kommer att köras. -p behövs inte utan är bara en extra säkerhetsgrej så att man har en sista chans på sig att ändra sig.... -f ignorerar icke existerande filer och frågar aldrig om nåt ska tas bort.
find -iname '*.XX' -print0 | xargs -0 -p rm -f


Alternativt kan man sätta in hela sökvägen. Om du har Bilder mappen som en länk i stället för som en "riktig mapp" så måste du använda -L.
find -L /home/användarnamn/Bilder -iname '*.XX' -print0 | xargs -0
och
find -L /home/användarnamn/Bilder -iname '*.XX' -print0 | xargs -0 -p rm -f

Få tillbaka Grub efter Windows installation

När man installerar Windows efter att man installerat Ubuntu så skriver Windows över mbr, master boot record, där starthanteraren för grub fanns. För att få tillbaka grub så man kan välja vilket OS man ska starta så kan man göra så här:

Starta datorn med Ubuntu Live CD och när skrivbordet visas så öppna terminalen och skriv följande.

Det här kommandot tar en till grub> prompt.
sudo grub

Den här visar vart man har grub installerat tex hd0,0
find /boot/grub/stage1

Svaret du fick i förra kommandot skriver du in nedan. Jag fick hd0,0 så då skriver jag så här:
root (hd0,0)

Det här installerar grub i mbr.
setup (hd0)

Sen är det bara att skriva quit för att komma ut från grub.
quit

Nu ska det bara vara att starta om datorn så borde det fungera.

måndag 15 september 2008

Backup skript

Kommer visa två backupskript här, en för en lokal backup och en backup av en laptop.

Detta skript använder sig av hard-links så det tar inte upp mer utrymme att ha 5 backuper än en.
Detta skript skapar en backup här /media/usbBackup/Backup/Bilder/back-$date datument läggs till så man vet när backupen är tagen. Det är en lokal mapp som det görs en säkerhetskopia på:
1 #!/bin/bash
2 # rsync -aP --link-dest=PATHTO/$PREVIOUSBACKUP $SOURCE $CURRENTBACKUP

3 date=`date "+%Y-%m-%dT%H:%M:%S"`
4 rsync -aP --link-dest=/media/usbBackup/Backup/Bilder/current /mnt/blandat/Bilder /media/usbBackup/Backup/Bilder/back-$date
5 rm -f /media/usbBackup/Backup/Bilder/current
6 ln -s back-$date /media/usbBackup/Backup/Bilder/current


Här görs det en backup från en laptop som kör en ssh server som använder nycklar för att låta en logga in. Jag har Specificerat en egen port som ssh servern kör, standard är 22.
1 #!/bin/bash
2 date=`date "+%Y-%m-%dT%H:%M:%S"`
3 rsync -aP -e "ssh -p 61101" --link-dest=/media/usbBackup/Backup/Dokument/backDokLaptop användare@IP:/home/användare/Dokument /media/usbBackup/Backup/Dokument/backDokLaptop-$date
4 rm -f /media/usbBackup/Backup/Dokument/backDokLaptop
5 ln -s backDokLaptop-$date /media/usbBackup/Backup/Dokument/backDokLaptop

Tyvärr så gick det inte att använda PATHTO/$PREVIOUSBACKUP över (och fortfarande kunna dra nytta av hard-links) IP därför kör jag skriptet som gör en säkerhetskopia av laptopens Dokument i från den stationära datorn enligt skriptet ovan.

Om ni vill göra det automatiskt så kan ni använda crontab kom dock ihåg att backupenheten måste vara monterad... Själv så kör jag inte mitt i crontab eftersom jag har en extern enhet som jag bara monterar när jag ska göra en backup.

Nedan ser ni hur crontab kan se ut när man lagt in skriptet i det och hur man kan spara en logfil. Egentligen så behöver ni bara skriva ./backupskriptet.sh &>> loggfil.log eller &> loggfil.log beroende på om du vill skriva över loggfilen varje gång eller lägga till i den.

Här nedan skapar crontab loggfilen automatiskt i den mapp du vill och loggfilen fylls på för varje gång skriptet körs, byt ut &>> mot &> ifall du vill att logfillen ska skrivas över varje gång i stället. & tecknet gör så att logfilen innehåller både stdout och stderr. Om det är väldigt många filer och mappar så kan det bli en stor fil... Ni kan gå in och rensa efter första backupen är körd eftersom den visar bara filer som har ändrats/lagts till pluss alla mappar. Eftersom skriptet ovan använder sig av hard-link och de funkar bara på filer och inte mappar så måste varje mapp(inte innehåll) kopieras vid varje backup tillfälle. Därför skrivs alltid de in i loggen. Däremot så filerna som redan har gjorts en hard-link till visas alltså inte i loggen, därför blir loggen störst vid första körningen.

Skapa en mapp i din hemma mapp som heter Backuplogg där loggfilerna kommer att sparas.

Redigera crontab så här sudo crontab -e (sudo crontab -l visar innehållet). Kom ihåg att ta bort radnumreringen om ni kopierar. Den här gör backupen varje lördag kl 13:00

1. # m h dom mon dow command
2. * 13 * * 6 /bin/bash /home/användare/bin/minBackupMusik.sh &>> /home/användare/Backuplogg/minBackupMusik.log

Här kan ni läsa mer ingående om hur det hela fungerar:
http://blog.interlinked.org/tutorials/rsync_time_machine.html

lördag 13 september 2008

Sudo och gksudo

Sudo är ett terminal program designat för att tillåta systemadministratören att ge begränsade root rättigheter till användare och logga root aktiviteterna.
Grundfilosofin är att ge så få privilegier som möjligt men ändå göra det möjligt för användarna att utföra sitt jobb.

När man skriver sudo kommando i en terminal så ombeds man att skriva in lösenordet i terminalen. Det syns inte att man skriver in det utan man får skriva det och sen trycka på Enter utan att se stjärnor för respektive tecken.

För att användaren ska kunna installera eller avinstallera program eller ta bort/lägga till/ändra filer i mappar som är viktiga för systemet så måste användaren utföra kommandot med sudo kommando så man kan skriva in sitt användarlösen för att få de rättigheterna som krävs för att utföra den uppgiften. Detta är en säkerhetsåtgärd för att minska risken att man själv tar bort/ändrar viktiga filer och för att minska risken att nån annan är inne och ändrar viktiga saker.

Sen finns också gksudo som gör samma sak som sudo med den skillnaden att när man skriver gksudo så poppar det upp ett fönster där man skriver in lösenordet till skillnad från om man använder sudo då man måste mata in lösenordet i terminalen. Som regel använder man gksudo för att utföra alla uppgifter som kräver att fönster öppnas alltså ett grafiskt gränssnitt för sudo (graphical frontend to sudo) Detta program körs automatiskt till exempel när du startar Pakethanteraren Synaptik eller andra program som kräver administrativa rättigheter.
Gksudo är framföralt praktisk att använda när man startar program som Nautilus eller gedit med admin.rättigheter. Då startar man programmet genom att trycka Alt + F2 och skriver in gksudo nautilus eller gedit. Hade man i det läget istället skrivit sudo nautilus så hade man inte haft nån möjlighet att skriva in sitt lösenord eftersom sudo kräver en terminal för att skriva in det.

gksudo är också den enda möjligheten som ger en alternativet att skriva in sitt lösen för att få admin.rättigheter om man startar ett program via en ikon eller en tangentbordsgenväg.

Det finns även en till anledning till att använda sudo respektive gksudo dock går det väldigt vilda diskuterad om den är så viktig, jag anser att det är viktigt.

Jag har testat det som jag skriver nedan med det resultat att jag fick installera om firefox för att få tillbaka mina bokmärken och det utseende jag hade på den tidigare. Det gick inte att komma åt dem via Ordna bokmärken och importera och säkerhetskopiera inte heller genom att synkronisera mot Foxmark där jag har mina bokmärken. Vet inte varför men det sket sig bigtime och firefox såg inte bra ut alls... Jag kan inte garantera att det var på grund av det jag höll på med eller om det bara var en slump. Men med mina bleka kunskaper om GNU/Linux så fick jag lov att ominstallera Firefox för att få till det. Det är möjligt att en mer erfaren användare hade löst det på ett smidigare sätt :) OBS! Man ska aldrig starta/köra Firefox med rooträttigheter. Jag gjorde det bara som ett test.

När man startar ett program med sudo så använder den användarens konfigurationsfiler i stället för root konfigurationsfiler. Man kan tydligt se detta genom att starta firefox med sudo då ser man att teman och allt sån hänger kvar medan startar man med gksudo så är det originaltemat den som kommer med installationen som används eftersom gksudo inte använder användarens konfigurationsfil utan roots konfiguration som det ska vara. Ni kan se skillnaden på Firefox med Sudo och gksudo så slipper ni gör det här själv... Kanske att det hade gått bra för er fast varför chansa...

I värsta tänkbara scenario så skulle man kunna öppna ett grafiskt program med sudo som då använder användarens configurationsfiler och ändrar rättigheterna och ägare på ~/.ICEauthority till root så att när användaren sen ska logga in så går det inte. Man måste då ändra så att ägaren av ~/.ICEauthority blir den användare som inte kan logga in och den användaren ska ha läs och skriv rättigheter. Dennes grupp och andra användare ska inte ha några rättigheter alls till filen alternativt kan man ta bort filen helt då återskapas den som den ska vara när användaren loggar in nästa gång (gör backup för säkerhetsskull innan ni tar bort den). Man kan göra det genom att startar datorn i Recovery mode "felsäkert läge" och sen när det efter ett tag kommer en meny så väljer man Drop to root shell promt eller så väljer man att göra det via Live CD.

Det är alltså inte bara grafiska program som kan ställa till problem när man använder sudo utan ALLA program som skriver config filer till användamappen. Detta eftersom sudo ALLTID använder hemmappen och bara ändrar användaren till root till skillnad mot gksudo som både ändrar användare och hemmapp till root. Alltså använder man sudo när man startar ett program som skapar configfiler så skapas de filerna med root rättigheter i användarens hemma mapp vilket gör att de filerna inte kan användas av användaren själv. Startar man samma program med gksudo så sparas de config filerna i roots hemma mapp.
Om man vill i från terminalen starta ett program med rooträtigheter som man vet kommer att skapa en configfil så kan man starta det med sudo -H kommando. Detta gör att användaren byts till att vara root och hemma mappen ändras också till att vara roots hemma mapp. Då blir det inga problem med rättigheter när man sedan startar programmet med vanliga användaren.

I slutändan så kör jag personligen gksudo för alla grafiska program och sudo för terminalprogram. Sen kan man ha i åtanke att om man kör ett terminalprogram som man vet ska ändra configfiler så kan man köra kommandot sudo -H. Sen om det har skitigt sig och man får felmeddelanden när man ska starta nåt som man har kört med sudo ja då har man lite mer fakta att gå efter när man ska söka var felet ligger...

Här är ett ett exempel där det förmodligen har hänt (2008) det händer dock inte alls ofta nu mer:
Kan inte logga in

Tidigare var det oftast de som försökte starta grafiska kde program från gnome med sudo som fick det problemet men det verkar vara löst nu.
(2006)
KDE och GNOME problem
(2003)
http://www.linuxquestions.org/questions/linux-software-2/just-what-is-going-on-with-.iceauthority-ownership-325611/

Jag har tagit mycke info från denna sida:
http://www.psychocats.net/ubuntu/graphicalsudo
Lite härifrån:
http://bbs.archlinux.org/viewtopic.php?id=47414
och lite härifrån:
http://ubuntuforums.org/archive/index.php/t-119408.html
Samt från sådant som jag har läst lite här och var :)

onsdag 10 september 2008

Lite roliga kommandon

Lite roliga kommandon:

banner -w 40 HEJ


Skriver ut HEJ med sånna här tecken ### vertikalt i Terminalen
40 sätter brädden utan den blir det för brett.

sudo apt-get install figlet

figlet HEJ

Skriver ut HEJ med sånna här tecken ### vågrätt i Terminalen.

sudo apt-get funny-manpages

gör manualsidor för dessa ord...
baby
condom
party
woman
sex
mm mm fler man sidor