Konsoli ja sen tehokas käyttö

Väliviiva_konsoli

Sisällysluettelo

Johdanto
Mikä on konsoli?
Mikä on virtuaalikonsoli?
Komentotulkki (shell)
Komentojen täydentäminen tab-näppäimellä
Muokkaa komentokehotetta (prompt)
Näppäilyhistoria
Tekstin vieritys
Shellin erikoismerkit (special characters, metacharacters)
Luettelo erikoismerkeistä
Komentojen suoritus peräkkäin (&&) ja erotus toisistaan (;)
Kenoviivan (\) käyttö ja lainausmerkit (")
Putkitus (|)
Ympäristömuuttujat
Less - pitkien tekstien selailuun
Grep - etsi tekstiä
Diff - vertaa tiedostoja
Head ja tail - listaa vain osa tiedoston alusta tai lopusta
Ohjaa teksti tiedostoon nuolenpäällä
Tiedostolistaus
Tee uusi tiedosto
touch
>
echo
cat
Aliakset
Tausta-ajo
&
fg, Ctrl-z
bg
jobs
Näppäinyhdistelmiä
Prosessit
Prosessien monitorointi ja -lopetus (ps)
Prosessorin kuormitus ja muistin käyttö (top)
Prioriteetti (nice, renice)
free
flush, sync
rsync
Graafisten ohjelmien käynnistys
Tekstin kopiointi ja liittäminen
Levytilan käyttö
df
du
fdisk -l
Käyttäjätiedot ja niiden muuttaminen
Käyttäjien lisääminen ja salasanan vaihto
/etc/skel - luuranko (skeleton)?
fstab ja mount
Johdanto: laitetiedostot
ide-kiintolevyjen (ja osioiden) liittäminen
levykeaseman liittäminen
CD-aseman liittäminen
Usb-muistitikun liittäminen
Swap-osion teko jälkeenpäin
Toisen koneen osion liittäminen
fstab-rivin eri osien merkitys
Tiedostojärjestelmät (fs_vfstype)
Liitosoptiot (fs_mntops)
Iso-tiedoston sisällön katsominen Linuxissa
iso-imagen teko mkisofs-ohjelmalla
mount, mtab, mounts, fstab?
remount
fsck
ext3:n luonti ja korjaus fsck:llä
man-sivut
Kovat ja 'pehmeät' linkit
hard link
soft link
Linuxin sammutus ja uudelleenkäynnistys
shutdown
reboot
Mtools

Johdanto

Väliviiva_konsoli

Tämän sivun tarkoituksena on perehdyttää Linuxin käyttäjä konsolin ja virtuaalikonsolin käyttöön. Sivu tulee olemaan pitkään 'under construction' aineiston laajuuden takia - ja ajan puutteen takia. Sivulle on aluksi kerätty osa pääsivun aineistosta, ja pääsivua onkin tarkoitus keventää jakamalla aineisto pienempiin osa-alueisiin omille sivuilleen. Pahoittelen myös sivun epäloogista jaottelua näin alkuvaiheessa ja puutteita lukujen teksteissä.

Linux-oppaita suunnitellessa aineiston jakaminen omiksi selkeiksi kokonaisuuksikseen on aina vaikeaa ja mielestäni myös pitkälti makuasia. Itse haluan jakaa konsolin käytön omaksi osa-alueekseen, koska moni Windows-käyttäjä vierastaa jo koko ajatusta konsolista (tuo mieleen tekstipohjaisen Dosin ennen graafista Windowsia) eikä konsolin käyttö nykyisten 'windowsmaisten' Linux-jakeluiden aikana (kuten Mandrake) ole enää edes välttämätöntä Linuxin peruskäyttöä ajatellen.

Mikä on konsoli?

Väliviiva_konsoli

Konsoli (jota voitaneen kutsua myös terminaaliksi, päätteeksi tai pääte-emulaattoriksi) on graafisessa tilassa omaan ikkunaansa käynnistettävä tekstipäätettä emuloiva ohjelma.

Tekstipäätteellä (se alkuperäinen 'tyhmä pääte') tarkoitetaan merkkipohjaista käyttöliittymää vastakohtana graafiselle käyttöliittymälle (Linuxissa X-ikkunointijärjestelmä), joka yleensä käynnistyy virtuaalikonsolille 7 (vt7). Linuxissa tekstipäätettä emuloivia ohjelmia ovat tekstitilassa (tekstimoodissa) toimivien virtuaalikonsolien (vt1 - vt6) lisäksi graafisessa tilassa käynnistettävässä virtuaalikonsolissa (vt7) käynnistettävät tekstipohjaiset ohjelmat:

Käytössä olevan päätteen tyypin (emuloinnin) näet TERM-ympäristömuuttujalla:

$ echo $TERM
linux

Yleensä käytössä on linux mutta voit ottaa myös esim. vt100-emuloinnin käyttöön:

$ export TERM=vt100

Komentorivillä näkyvä $ (dollarimerkki) on tavallisen käyttäjän komentokehotteen tunnus ja # (risuaita) on rootin eli pääkäyttäjän tunnus. Voit väliaikaisesti siirtyä pääkäyttäjän tilaan kirjoittamalla su (tai su - joissakin distroissa) ja antamalla rootin salasanan.

Virtuaalikonsolille pitää erikseen kirjautua sisään (login) ennen kuin pääsee tekemään mitään. Vastaavasti käytön päätyttyä pitää kirjautua ulos virtuaalikonsolista (exit). Tällaista järjestelmässä sisälläoloa kirjautuneena kutsutaan istunnoksi (session).

Konsolista voidaan käynnistää myös graafisia ohjelmia vastakohtana virtuaalikonsolille, jossa käytetään vain komentotulkkia ja tekstipohjaisia ohjelmia.

Linux eroaa myös Dosista ja Windowsista siinä, että isojen ja pienten kirjaimien välillä on ero, joten jos käyttäjätunnus on tapsa, niin Tapsa ei silloin kelpaa. Yleensä Linuxin komennoissa käytetään pieniä kirjaimia mutta salasanoissa on tietenkin suositeltavaa käyttää sekä isoja että pieniä kirjaimia (sekä numeroita) sekaisin.

Konsoli on vähän samantapainen kuin Dos-tila Windowsissa mutta paljon tehokkaampi työkalu, ja siinä voi tehdä kaiken, mitä graafisilla apuohjelmillakin ja paljon enemmän. Lisäksi ohjelmien käynnistäminen konsolista on hyödyllistä mahdollisissa virhetilanteissa - konsolissa näet tulostuvat myös kaikki mahdolliset ohjelman ajonaikaiset virheilmoitukset. Katso myös luettelo virhekoodeista tiedostosta /usr/include/asm/errno.h.

Mikä on virtuaalikonsoli?

Väliviiva_konsoli

Linuxin peruasennus tuo käyttäjän eteen graafisen login-ikkunan, josta voidaan erikseen käynnistää graafinen käyttöliittymä (X) virtuaalikonsolille 7 (vt7) tai siirtyä tietyillä näppäinyhdistelmillä kokonaan tekstipohjaisiin konsoleihin (vt1 - vt6). Linux voidaan asentaa myös pelkkänä tekstipohjaisena käyttöjärjestelmänä, jolloin vain tekstipohjaiset virtuaalikonsolit ovat käytettävissä ja käynnistettäessä tulee eteen pelkkä login-kehote. Oikeastaan tekstipohjainen tila on Linuxin peruskäynnistystila, josta haluttaessa voidaan erikseen käynnistää graafinen X startx-komennolla. Linuxia voidaan siis hyvin käyttää myös tekstitilassa ja esim. palvelinkäytössä olevaan koneeseen ei graafista käyttöliittymää yleensä edes asennetakaan.

Windows-käyttäjä hahmottaa asian ehkä paremmin, jos Linuxia verrataan Dosiin ja Linuxin graafista X:ää Dosin päällä toimivaan Windowsiin.

Virtuaalikonsoleilla (virtual terminal = vt) tarkoitetaan Linuxin käytettävissä olevia konsoleita, joiden välillä liikutaan näppäinyhdistelmällä Ctrl-Alt-Fn, jossa n = funktionäppäin 1-6. Esim. Ctrl-Alt-F1 tuo eteesi login-ikkunan, jossa voit kirjautua uudelleen sisään. Oletuksena on tekstimoodi, josta pääset takaisin alkuperäiseen graafiseen virtuaalikonsoliin (X:ään) näppäinyhdistelmällä Alt-F7. Tekstimoodissa konsolien välillä liikkumiseen ei siis tarvita Ctrl-näppäintä ja alkuperäisen konsolin funktionäppäimen numero on 7.

Virtuaalikonsoli ei siis tarkoita pelkkää tekstipäätettä vaan myös graafinen tila on yksi virtuaalikonsoleista (yleensä vt 7).

Virtuaalikonsolien määrää voidaan muuttaa muokkaamalla /etc/inittab-tiedostoa. Oletuksena on käytössä 6 tekstipohjaista konsolia (vt1-vt6) ja siitä eteenpäin olevat virtuaalikonsolit on varattu graafiseen käyttöön. Jos haluat lisätä konsoleita, ohita vt7 (tty7) ja lisää konsoleita siitä eteenpäin.

# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Joskus Debianissa on ollut ongelmana hidas login virtuaalikonsoleihin vt2:sta eteenpäin. Ongelma ratkeaa lisäämällä polku tty2:sta eteenpäin:

2:23:respawn:/sbin/getty 38400 /dev/tty2

Jos teet muutoksia inittab-tiedostoon, niin telinit qlukee uudestaan inittab-tiedoston ja päivittää sen.

Usein virtuaalikonsolissa skandit eivät näy oikein, koska valittu näppäimistökartta (keymap) on väärä. Skandit saat näkyviin lataamalla oikean näppäimistökartan seuraavasti (toimii ainakin debian-pohjaisissa distroissa):

loadkeys fi-latin1

Jos kaikki toimii kuten pitääkin, voit asentaa oikean näppäimistökartan:

install-keymap fi-latin1

Virtuaalikonsolin tervetulotoivotus on tiedostossa /etc/motd ja voit muuttaa sen haluamaksesi.

Virtuaalikonsolit ovat käytettävissä vain paikallisesti - ei etäkäytössä.

Komentotulkki (shell)

Väliviiva_konsoli

Komentotulkki (command shell) on ohjelma, joka käynnistyy automaattisesti käyttäjän kirjautuessa sisään järjestelmään (login) ja tulkkaa käyttäjän komentokehotteessa (command prompt) komentorivillä (command line) antaman komennon ja päättää, mitä sen kanssa tehdään. Jos komento (tai ohjelma) on olemassa eikä komentotulkki anna virheilmoitusta, kerneli luo uuden prosessin komennon (ohjelman) suoritusta varten. Komentotulkkia voi käyttää komentojen suorittamisen lisäksi myös ohjelmointikielenä jolloin sillä voidaan ajaa komentotiedostoja, skriptejä.

Linuxissa on suuri määrä erilaisia komentotulkkeja, joista BASH (Bourne Again SHell) on yleisin ja alkuperäistä Unixin SH-tulkkia (Bourne SHell) huomattavasti monipuolisempi. BASH on myös Linuxin oletusshelli.

Windows-käyttäjät voivat verrata Linuxin komentotulkkia Dosin COMMAND.COM-tulkkiin.

Linuxeissa on siis yleensä bash-tulkki käytössä oletuksena. Muut Linuxiisi asennetut ja käytettävissä olevat shellit (komentotulkit) näet:

tapsa@abc:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/ash
/bin/bash
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/zsh
/bin/sash
/bin/zsh
/usr/bin/esh
/bin/dash

Käytössä olevan komentotulkin näet:

root@abc:~# echo $SHELL
/bin/bash

Voit katsoa sen myös komennolla which sh:

tapsa@abc:~$ which sh
/bin/sh

jolloin sh on yleensä symbolinen linkki /bin-hakemistossa olevaan bash-shelliin:

lrwxrwxrwx    1 root     root            4 2004-07-16 15:04 sh -> bash

Tähän syynä on skriptien tekijöiden skriptin alussa yleisesti käyttämä

#!/bin/sh

vaikka tarkoitus olisi käyttää bash-skriptikieltä:

#!/bin/bash  

Skriptien tekijät voivat siis kirjoittaa edelleen sh mutta todellisesti käynnistyykin bash :)

Voit muuttaa shelliä väliaikaisesti kirjoittamalla komentokehotteessa haluamasi shellin nimen, esim. tcsh. Poistu shellistä takaisin kirjoittamalla exit.

Voit muuttaa oletuksena olevan komentotulkin chsh-komennolla (change shell).

tapsa@abc:~$ chsh -s /bin/tcsh tapsa

Jos kirjoitat vain pelkän chsh, näytetään nykyinen tulkki hakusuluissa ja voit joko muuttaa sen tai hyväksyä hakasuluissa olevan oletuksen:

tapsa@abc:~$ chsh
Password:
Vaihdetaan käyttäjän tapsa komentotulkki
Kirjoita uusi arvo, tai paina return käyttääksesi oletusarvoa
        Komentotulkki sisäänkirjauduttaessa [/bin/bash]:
tapsa@abc:~$

Voit myös muuttaa oletusshelliä editoimalla suoraan /etc/passwd-tiedostoa.

Komentojen täydentäminen tab-näppäimellä

Mutta mistä sitten muistaa kaikki sadat käskyt (komennot) tai suoritettavien ohjelmien nimet? Pitääkö ne oppia ulkoa? Ei tarvitse. Riittää kun kirjoittaa käskyn alkukirjaimen (tai useampia kirjaimia alusta) ja painaa kahdesti (tai tarvittaessa kolmesti) tab-näppäintä, niin Linux tuo näkyviin ko. kirjaimilla alkavat käskyt. Tietysti voit kirjoittaa vastaavasti myös useampia käskyjä peräkkäin (esim. 'apt-get dist-upgrade' Debianissa) vain painamalla kunkin käskyn paria alkukirjainta ja "autocomplete" hoitaa loput. Tämä toimii myös tiedostojen kohdalla, esim. 'cat LUEMINUT.txt' ei tarvitse kuin cat ja L ja parin tab-näppäimen painalluksen! Huomaa lisäksi, että kohdistimen ei tarvitse olla rivin lopussa vaan voit painaa enteriä missä tahansa kohtaa rivillä.

Täydellisen luettelon Linux-komennoista löydät sivulta Alphabetical Directory of Linux Commands.

Muokkaa komentokehotetta (prompt)

Joskus Linuxin asennuksen jälkeen komentokehote voi näyttää hyvin erinskummalliselta kuten minulla Baltix-Knoppixin kiintolevyasennuksen jälkeen:

-bash-2.05b$

Tulostetaan ympäristömuuttuja PS1, josta nähdään miten komentokehote on asetettu:

-bash-2.05b$ echo $PS1
\s-\v\$

Ongelma liittyi kotihakemistossa oleviin kahteen tiedostoon .bash_profile (suoritetaan loginin yhteydessä) ja .bashrc (suoritetaan aina ajettaessa komentotulkkia). Tiedostossa .bash_profile oli kyllä valmiina rivi:

# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

...mutta se oli kommentoitu (#) pois käytöstä. Kommenttimerkkien poisto ratkaisi ongelman, jolloin .bashrc-tiedostossa oleva hieno komentotulkin määritys \u@\h:\w\$ saatiin käyttöön:

    # set a fancy prompt
    PS1='\u@\h:\w\$ '

Nyt komentokehote näyttää seuraavalta:

tapsa@abc:~$

Tulostetaan ympäristömuuttuja PS1 uudelleen, josta nähdään, millainen se on nyt loginissa:

tapsa@abc:~$ echo $PS1
\u@\h:\w\$

Lisätietoa näet sivulta http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.html.

Joissakin distroissa voi käyttäjän kotihakemistossa olla loginissa ajettavan .bash_profile-tiedoston tilalla .bash_login- tai .profile-niminen tiedosto, jotka ovat synonyymejä .bash_profile-tiedostolle, jolloin tarvittavat muutokset komentokehotteessa tehdään niihin.

Voit muuttaa kaikkien käyttäjien oletusasetuksia editoimalla /etc/bashrc ja /etc/profile-tiedostoja.

Asetetut kaikki paikalliset muuttujat näet bash-tulkissa komennolla set ja asetetut ympäristömuuttujat komennolla printenv (tcsh-tulkissa setenv).

Lisätietoa komentokehotteen muokkaamisesta saat sivulta Bash Prompt HOWTO.

Näppäilyhistoria

Kaikki näppäilysi jäävät muistiin kotihakemistossasi olevaan .bash_history-tiedostoon, jonka voit vaikka tyhjentää halutessasi. Aikaisempia näppäilyjäsi voit selata nuolinäppäimillä (nuoli ylös; nuoli alas) eteen- ja taaksepäin. Voit myös tulostaa käyttämäsi komennot näytölle history-komennolla, jonka perään voi antaa myös näytetttävien komentojen lukumäärän:

$ history 10

Tekstin vieritys

Konsolissa tai virtuaalikonsolissa voit vierittää sivun tekstiä ylös ja alas Shift-PageUp ja Shift-PageDown. Vieritys on kätevä konsti esim. silloin, jos halutaan selata käynnistyksen aikaisia ilmoituksia dmesg:

$ dmesg

Shellin erikoismerkit (special characters, metacharacters)

Väliviiva_konsoli

Luettelo erikoismerkeistä

Normaalisti seuraavilla merkeillä on erikoismerkitys komentotulkissa:

\ ' " ` < > [ ] ? | ; # $ ^ & * ( ) = <välilyönti> <sarkain > <rivin vaihto>

Seuraavassa on lyhyt selostus joidenkin merkkien merkityksestä.

Lainausmerkkejä on neljä tyyppiä: kenoviiva (\), heittomerkki ('), lainausmerkki (") ja takahipsu (`).

< ja > -merkkejä käytetään syöttö- ja tulostusvirtojen (input / output streams) uudelleenohjaukseen (redirecting)

| (putki, pipe) putkittaa komennon, jolloin komennon syöte saadaan toisen komennon tulosteesta

; erottaa samalla rivillä olevat komennot toisistaan

& merkkiä edeltävä komento suoritetaan tausta-ajossa

* vastaa tiedostojen ollessa kyseessä mitä tahansa tiedostoa paitsi pisteellä alkavaa tiedostoa

? vastaa tiedostojen nimessä mitä tahansa yksittäistä merkkiä

&& on "AND" (looginen JA) kytkien kaksi komentoa toisiinsa. Toinen komento suoritetaan vain, jos ensimmäinen komento onnistuu (exit status 0)

$ edeltää käsiteltävän muuttujan nimeä kuten "$@", ks. man bash

Komentojen suoritus peräkkäin (&&) ja erotus toisistaan (;)

Voit kirjoittaa samalle riville useamman kuin yhden suoritettavan komennon erottamalla ne välilyönnillä ja kahdella && -merkillä:

apt-get update && apt-get dist-upgrade

Lisätietoa operaattoreista man bash, jossa selostetaan, että toinen komento suoritetaan vain siinä tapauksessa, että ensimmäinen onnistui:

              command && command2

       command2 is executed if, and only if, command  returns  an
       exit status of zero.

Normaalisti erottimena käytetetään puolipistettä (;), jolla siis erotetaan komennot toisistaan:

tapsa@abc:~$ ls -l ; ps -u tapsa
yhteensä 16
drwx------    3 tapsa    tapsa        4096 2004-07-23 22:43 Desktop
drwxr-xr-x    2 tapsa    tapsa        4096 2004-07-23 12:01 Documents
drwxr-xr-x    2 tapsa    tapsa        4096 2004-07-23 12:01 downloads
-rwxr--r--    1 root     root           64 2003-11-08 20:34 tapsa.txt
  PID TTY          TIME CMD
 1107 tty3     00:00:00 bash
 1108 tty4     00:00:00 bash
 1449 tty4     00:00:00 ps
tapsa@abc:~$

Oletetaan, että haluat saada /tmp-hakemiston oikeudet kuntoon ajamalla nettisivulta löytämäsi komennot:

cd /tmp
chmod -R a+rwx .X11-unix
chmod 1777 .X11-unix
chmod 1777 /tmp

...mutta et jaksaisi kopioda niitä kaikkia yksitellen. Onneksi voit kopioida ne tiedostoon maalaamalla em. komennot ja käynnistämällä esimerkiksi nano-editorin ja liittämällä tekstin hiiren rullaa painamalla Shift-näppäin pohjassa. Sitten lisäät puolipisteet rivien loppuun ja maalaat alueen uudelleen ja liität konsoliin hiiren rullaa painamalla:

cd /tmp ;
chmod -R a+rwx .X11-unix  ;
chmod 1777 .X11-unix  ;
chmod 1777 /tmp

Nyt kaikki komennot ajettiin yhdellä kertaa :)

Muista, että & asettaa ohjelman tausta-ajoon.

Komennot suoritetaan niiden antamisjärjestyksessä.

Kenoviivan (\) käyttö ja lainausmerkit (")

Lainausmerkit poistavat erikoismerkin tietyn merkityksen ja sallivat näin sen käytön sellaisenaan. Mutta myös erikoismerkkejä (kuten lainausmerkki) voidaan käyttää tavallisina merkkeinä, jos merkin edessä on kenoviiva.

# huomaa seuraavien kirjoitustapojen ero:
root@1[/]# echo \"tapsa\"
"tapsa"

root@1[/]# echo "tapsa"
tapsa

Kenoviivalla voi poistaa seuraavan merkin erityismerkityksen:

# kokeillaan ensin ilman kenoviivaa:
root@1[/]# echo <tapsa>
bash: syntax error near unexpected token `newline'

# sitten kenoviivan kanssa:
root@1[/]# echo \<tapsa\>
<tapsa>

Kenoviivan avulla voidaan käsitellä myös kaksiosaisia nimiä (tyhjä merkki välissä) kuten Windowsin 'Program Files' tai 'My Documents':

root@ttyp0[knoppix]# cd /mnt/hda2/Program\ Files/

Komennon voi jakaa useammalle riville lisäämällä rivin loppuun kenoviivan (\):

[root@tapsa mnt]# mount -t smbfs -o username=tapsa,password=salainen_sana \ 
//Vauhtihirmu/c /mnt/vauhtihirmu

Lisätietoa man bash:


       A non-quoted backslash (\) is the  escape  character.   It
       preserves  the  literal  value  of the next character that
       follows, with the exception of <newline>.  If a \<newline>
       pair  appears, and the backslash is not quoted, the \<new-
       line> is treated as a line continuation (that  is,  it  is
       effectively ignored).

Putkitus (|)

Putki (pipe)Voit putkittaa komentoja peräkkäin putkimerkillä (|). Putkitus (piping) tarkoittaa komentojen yhdistämistä, jolloin komennon syöte saadaan toisen komennon tulosteesta. Putki-merkki (|) saadaan näppäimistöltä painamalla AltGr + < -näppäimiä.

Seuraavassa on etsitty näytön virkistystaajuudet X:n konfigurointitiedostosta (XF86Config). Etsimiseen on käytetty sekä cat- että grep-komentoja putkimerkin kanssa:

[tapsa@tapsa tapsa]$ cat /etc/X11/XF86Config | grep Ver
        VertRefresh  50.0 - 70.0
[tapsa@tapsa tapsa]$ cat /etc/X11/XF86Config | grep Hor
        HorizSync    31.5 - 57.0

Etsitään vielä käynnistyksen aikaisia ilmoituksia putkimerkillä ja grep-komennolla (malliesimerkissä ndiswrapperin latautumista):

root@tty2[/]# dmesg | grep ndiswrapper
ndiswrapper version 0.8 loaded
ndiswrapper adding wmp11v27.sys
wlan0: ndiswrapper ethernet device 00:06:25:22:6a:1f using driver
wmp11v27.sys

Ympäristömuuttujat

Väliviiva_konsoli

Linux antaa mahdollisuuden muokata käyttöympäristöä (environment) halutunlaiseksi ympäristömuuttujilla.

Asetetut kaikki paikalliset muuttujat näet komennolla set ja asetetut ympäristömuuttujat komennolla printenv. Seuraavassa luettelossa on malliksi Baltix-Knoppixin pääkäyttäjän (root) ympäristömuuttujat:

root@:~# printenv
HZ=100
TERM=linux
SHELL=/bin/bash
HUSHLOGIN=FALSE
USER=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/games
MAIL=/var/mail/root
COUNTRY=fi
PWD=/root
LANG=fi_FI@euro
HOME=/root
SHLVL=2
LANGUAGE=fi
LOGNAME=root
_=/usr/bin/printenv
root@:~#

Voit katsoa käytössä olevia ympäristömuuttujia echo-komennolla, esim. käytössä olevan komentotulkin näet:

root@abc:~# echo $SHELL
/bin/bash

Huomaa, että ympäristömuuttuja kirjoitetaan isoilla kirjaimilla ja echo-komennolla näytölle tulostettaessa sen eteen pannaan dollarimerkki ($).

Voit muuttaa käyttöympäristöäsi muokkaamalla kotihakemistossasi olevaa kahta tiedostoa, .bash_profile (suoritetaan loginin yhteydessä) ja .bashrc (suoritetaan aina ajettaessa komentotulkkia).

Joissakin distroissa voi käyttäjän kotihakemistossa olla loginissa ajettavan .bash_profile-tiedoston tilalla .bash_login- tai .profile-niminen tiedosto, jotka ovat synonyymejä .bash_profile-tiedostolle, jolloin tarvittavat muutokset komentokehotteessa tehdään niihin.

Voit muuttaa kaikkien käyttäjien oletusasetuksia editoimalla /etc/bashrc ja /etc/profile-tiedostoja.

Voit muuttaa tarvittaessa paikallista ympäristöäsi export-komennolla, esim.

tapsa@abc:~$ export LANGUAGE='fi'
tapsa@abc:~$ export LANG='fi_FI@euro'

Joskus asennettavat ohjelmat (kuten irssi) vaativat käytettäväksi vanhempaa C-kääntäjää kuin koneessa on käytössä. Voit muuttaa kääntäjää myös export-komennolla:

root@abc:~#  export CC=/usr/bin/gcc-2.95

Kernelin käännössä käytetyn kääntäjän näet:

root@abc:~# cat /proc/version

...ja käytössä olevan kääntäjän näet:

root@abc:~# gcc --version

Less - pitkien tekstien selailuun

Väliviiva_konsoli

Kätevä pikkuohjelma pitkien tiedostojen selailussa on less, joka näyttää tekstiä ruudullisen kerrallaan. Edelliseen ruutuun voi palata nuolinäppäimillä. Ohjelman käyttö lopetetaan painamalla q-kirjainta. Kokeile seuraavaa esimerkkiä ilman | less ja sen kanssa. Vau! Tämähän alkaa jo sujua!

[tapsa@tapsa tapsa]$ cat /etc/X11/XF86Config | less

Nyt kun osaat käyttää less-ohjelmaa, tutki aikaisemmin mainittuja Linuxin käynnistysilmoituksia tarkemmin. Konehan käynnistyy niin nopeasti ettei niitä ehdi käynnistyksen yhteydessä lukea:

$ dmesg | less

Less-ohjelmassa voit etsiä tekstistä haluamaasi kohtaa kauttaviivalla (/) ja antamalla haluamasi sanan.

Grep - etsi tekstiä

Väliviiva_konsoli

EtsiEtsitään seuraavassa oletusajotaso (initdefault) /etc/inittab-tiedostosta grep-komennolla:

root@tty2[/]# grep 'initdefault' /etc/inittab
id:5:initdefault:

Sama voidaan tehdä myös toisella tavalla käyttäen cat- ja grep-komentoja putkimerkin kanssa:

root@tty2[/]# cat /etc/inittab | grep initdefault
id:5:initdefault:

Komento grep on hyvin hyödyllinen, jos haluaa etsiä pitkästä listauksesta jotakin tiettyä asiaa kuten seuraavassa X:n lokitiedoston hiirtä koskevia kohtia (mouse):

[tapsa@tapsa tapsa]$ cat /var/log/XFree86.0.log | grep mouse
(II) LoadModule: "mouse"
(II) Loading /usr/X11R6/lib/modules/input/mouse_drv.o
(II) Module mouse: vendor="The XFree86 Project"
(==) MGA(0): Silken mouse enabled

Voit myös putkittaa | less | grep peräkkäin, jos etsit esim. pitkästä tiedostosta joitakin kohtia, jotka eivät mahdu yhdelle ruudulliselle kerrallaan. Putkitus (piping) tarkoittaa komentojen yhdistämistä, jolloin komennon syöte saadaan toisen komennon tulosteesta. Putki-merkki (|) saadaan näppäimistöltä painamalla AltGr + < -näppäimiä.

Toki X:n konsolissa voit selata sivuja graafisessa tilassa sivupalkista muutenkin edestakaisin ja virtuaalikonsolissa Shift-PageUp ja Shift-PageDown (toimii myös X:n konsolissa).

Diff - vertaa tiedostoja

Väliviiva_konsoli

Diff-ohjelmalla etsitään kahden tiedoston erot ja tulostetaan ne.

man diff:
  diff - compare files line by line

Käyttö on hyvin yksinkertaista: diff vanha_tiedosto uusi_tiedosto. Lisäksi voidaan käyttää erilaisia valitsimia, joista mainittakoon -u (unified output format), jolloin tulostus on monipuolisempi) ja -r (recursive), jolloin käydään hakemistot läpi).

Seuraava mallitulostus on perusmuodossa ilman valitsimia, jossa verrataan vanhaa ja uutta konsoli.htm-nimistä tiedostoa keskenään:

root@2[knoppix]# diff konsoli.htm konsoli_mod.htm
1840a1841,1842
> mount /dev/hda1
>  tai tarvittaessa:
1842a1845,1854
> <p>Huom. Joskus pitää käyttää pitkää muotoa, koska muuten liittäminen ei onnistu:</p>
> <pre> 
> # mount /dev/hdb6
> mount: väärä tiedostojärjestelmätyyppi, virheellinen valitsin, viallinen
>        superlohko laitteella /dev/hdb6, tai liian monta liitettyä
>        tiedostojärjestelmää
> </pre> 
> <pre>
> # mount -t hpfs /dev/hdb6 /mnt/hdb6
> </pre> 

Seuraavassa on samojen tiedostojen vertailu käyttäen -u- valitsinta:

root@2[knoppix]# diff -u konsoli.htm konsoli_mod.htm
--- konsoli.htm 2005-04-18 01:41:14.000000000 +0300
+++ konsoli_mod.htm     2005-04-23 20:04:48.000000000 +0300
@@ -1838,8 +1838,20 @@
<p>Kiintolevy voidaan myös liittää väliaikaisesti tekemättä muutoksia
 /etx/fstab-tiedostoon.</p>
 <pre>
+mount /dev/hda1
+ tai tarvittaessa:
 mount -t vfat /dev/hda1 /mnt/c
 </pre>
+<p>Huom. Joskus pitää käyttää pitkää muotoa, koska muuten liittäminen ei
onnistu:</p>
+</pre>
+# mount /dev/hdb6
+mount: väärä tiedostojärjestelmätyyppi, virheellinen valitsin, viallinen
+       superlohko laitteella /dev/hdb6, tai liian monta liitettyä
+       tiedostojärjestelmää
+</pre>
+</pre>
+# mount -t hpfs /dev/hdb6 /mnt/hdb6
+</pre>
 <p>Valitsin  &ltstrong > t </strong> tarvitaan edeltämään annettavaa tiedostojärjestelmää:</p>
<pre>
root@2[knoppix]#

Nyt tulostus on paljon monipuolisempi. Valitsimen -u kanssa näytetään tiedostojen nimet, aikaleimat ja lisäksi muutama ylimääräinen rivi muutoskohtien molemmmin puolin. Poistuneita kohtia merkitään - ja lisättyjä kohtia +. Mallitekstissä ei ollut poistettu mitään vaan pelkästään lisätty tekstiä.

Head ja tail - listaa vain osa tiedoston alusta tai lopusta

Väliviiva_konsoli

Tail listaa oletuksena 10 viimeistä riviä pitkästä tai kasvavasta tiedostosta (esim. lokitiedostot) ja vastaavasti head listaa oletuksena 10 ensimmäistä riviä tiedostosta. Voit tulostaa enemmänkin rivejä, esim. 30 kpl, antamalla haluamasi rivien lukumäärän komennon jälkeen:

tail -30 tiedosto.txt

Komento tail -f-option kanssa seuraa tiedoston kasvua sen suuretessa lähes reaaliaikaisesti, esim.

tail -f /var/log/messages

Lopeta komennon käyttö Ctrl-c. Itse olen seurannut em. tavalla dhcpd:n käynnistymistä ja IP-osoitteen pyyntöä, jos työasema (pääte, thin client) ei saa yhteyttä palvelimeen (server), ks. Linux Terminal Server Project (LTSP).

Ohjaa teksti tiedostoon nuolenpäällä

Väliviiva_konsoli

No entä kun X ei käynnisty ja pitäisi saada virheilmoitukset jotenkin kopioitua talteen newsseihin muidenkin tutkittavaksi? No eipä hätää mitään, kun voit ohjata tulostuksen tiedostoon nuolenpäällä (>), esim.:

$ dmesg | grep scsi > scsi_ei_toimi

Edellä oleva nuolenpää siis ohjaa (redirect) tulostuksen näppäimistöltä tiedostoon. On olemassa kolme tärkeää syöttö- / tulostusvirtaa (input / output stream):

Oletusten sijasta tulostusvirrat voi ohjata myös tiedostoon tai tulostimeen uudelleenohjaamalla (redirecting).

Edellä siis näppäimistöltä (stdin) uudelleenohjattiin tulostus tiedostoon (stdout) käyttämällä nuolenpäätä.

Voit tietysti myös kopioida jonkin olemassa olevan tiedoston kätevästi disketille em. tavalla uudelleenohjaamalla tulostuksen näytöltä disketille:

cat tiedosto > /dev/fd0

...tai ehkäpä haluatkin tulostaa tietoa laitteistostasi (esim. prosessori) kotihakemistoosi tiedostoksi:

$ cat /proc/cpuinfo > ~/cpu_tietoa

Virheet voi tulostaa tiedostoon käyttäen apuna uudelleenohjausoperaattoria (redirection operator) 2>&1. C-kielestä tuttua tulostusvirtaa stdout (standard output) merkitään numerolla 1 ja virheilmoitusvirtaa stderr (standard error output) numerolla 2. Edellä 2>&1 siis ohjaa virheilmoitukset tiedostoon. Pelkkä nuolenpää ohjaa tulosteen tiedostoon, mutta virheilmoitukset tulostuvat edelleen vain näytölle, jos et käytä 2>&1. Lisätietoa saat manuaalisivulta man bash sekä esim. sivuilta Streams and sed -- The Stream Editor (LINUX: Rute User's Tutorial and Exposition) ja Input/output redirection (LINUX NEWBIE ADMINISTRATOR GUIDE).

Tiedostolistaus

Väliviiva_konsoli

Tiedostoja voit katsoa komennolla ls (listaus, lyhyt muoto). Komento ls -l (pitkä muoto) taas näyttää kaikki muut paitsi piilotetut tiedostot. Pisteellä alkavat tiedostot ovat piilotiedostoja, jotka näet komennolla ls -la (näyttää kaikki tiedostot). Saman voi tehdä myös lyhyesti la (ainakin minulla 'la' on /etc/bashrc-tiedostossa aliaksena):

alias la='ls -la --color=auto'

Ls-komennolla voi myös listata esim. koneessa olevat pci-laitteet (lspci tai yksityiskohtaisessa muodossa lspci -v). Luettelon ls-komennoista saat kirjoittamalla ls ja kahdesti tab-näppäintä:

tapsa@TeraeNet:~$ ls
ls               lsmod.Lmodutils  lspgpot          lsusb
lsattr           lsmod.modutils   lspnp
lsdev            lsof             lsraid
lsmod            lspci            lss16toppm
tapsa@TeraeNet:~$

Tee uusi tiedosto

Väliviiva_konsoli

touch

Mitä jos pitäisi tehdä jokin tiedosto? Pitääkö käynnistää jokin tekstieditori sen takia vai voiko tiedoston tehdä myös konsolissa? Kyllä voi ja vaihtoehtojakin on useampia - ainakin touch, >, echo ja cat.

Helpoiten teet uuden tiedoston touch-komennolla:

tapsa@TeraeNet:~$ touch uusi_tiedosto

>

Myös nuolenpäällä (>) voi kätevästi tehdä uuden tyhjän tiedoston:

tapsa@TeraeNet:~$ > uusi_tiedosto

echo

Nuolenpään käytössä echo- ja cat-komentojen kanssa pitää olla tarkkana ettei vahingossa tuhoa olemassa olevaa tiedostoa.

Uusi tiedosto luodaan echo-komennolla :

tapsa@TeraeNet:~$ echo > oma_tiedosto

Kirjoitetaan tekstiä äsken tehtyyn 'oma_tiedosto' -tiedostoon:

tapsa@TeraeNet:~$ echo kirjoitetaan tekstiä tiedostoon > oma_tiedosto

Nyt siis oma_tiedosto-nimisessä tiedostossa lukee teksti: "kirjoitetaan tekstiä tiedostoon".

Jos haluat lisätä tekstiä tiedostoon, mutta kirjoitatkin kuten edellä yhden nuolenpään kanssa, niin aikaisempi teksti korvataan uudella:

tapsa@TeraeNet:~$ echo korvataan edellinen teksti tällä uudella > oma_tiedosto

Tekstiä voi lisätä käyttämällä kahta nuolenpäätä:

tapsa@TeraeNet:~$ echo lisätään tekstiä entisen perään >> oma_tiedosto

...ja tältä 'oma_tiedosto' sitten näyttää tekstin korvauksen ja lisäyksen jälkeen:

korvataan edellinen teksti tällä uudella
lisätään tekstiä entisen perään

Echolla lisäät esim. ajureita näppärästi /etc/modules-tiedoston loppuun:

echo ndiswrapper >> /etc/modules

cat

Komento cat toimii niin että tiedosto voidaan luoda ja kirjoittaa tekstiä samalla:

tapsa@TeraeNet:~$ cat > uusi_tiedosto
Kirjoitetaan tähän vähän tekstiä.
Kirjoitetaan vielä toisellekin riville
.. ja kolmannelle

Riviä vaihdetaan enterillä ja tekstin kirjoitus lopetetaan Ctrl-d (tarkoittaa tiedoston loppumerkkiä EOF = End of file).

Nyt on luotu 'uusi_tiedosto' -niminen tiedosto ja kirjoitettu siihen samalla tekstiä. Itse kopioin usein tällä tavoin virtuaalikonsolissa lyhyitä tekstejä talteen tiedostoon valitsemalla ensin tekstin maalaamalla hiiren vasemmalla näppäimellä (joskus tarvitaan lisäksi Shift-näppäintä, esim. Midnight Commanderista tai Linksistä kopioitaessa) ja liittämällä sitten tekstin hiiren rullaa painamalla toisessa virtuaalikonsolissa auki olevaan cat-komennolla tehtävään tiedostoon. Sitten vain enter, Ctrl-d (tiedoston lopettamismerkki = EOF), ja teksti on tallessa! Tämä toimii tietysti myös samassakin virtuaalikonsolissa.

Samalla cat-käskyllä voit myös katsoa jonkin tiedoston sisältöä, esim. äsken tehtyä 'uusi_tiedosto' -tiedostoa:

tapsa@TeraeNet:~$ cat uusi_tiedosto
Kirjoitetaan tähän vähän tekstiä.
Kirjoitetaan vielä toisellekin riville
.. ja kolmannelle
tapsa@TeraeNet:~$

Nuolenpäätä käyttämällä voit tyhjentää nopeasti tiedoston sisällön:

cat > mbox

... ja Ctrl-d (= EOF, End of file), jonka jälkeen postilaatikko on tyhjä! Käytä tätä varoen, koska tyhjennettyä tiedostoa et saa enää palautettua takaisin.

Voit ohjata tulostuksen myös disketille eli kopioida tiedoston disketille:

cat tiedosto > /dev/fd0

Voit myös tehdä uuden tyhjän tiedoston ohjaamalla tulosteen /dev/null-tiedostoon:

cat /dev/null > uusi_tiedosto

Aliakset

Väliviiva_konsoli

Linuxissa voi tehdä myös aliaksia helpottamaan näppäilemistä. Alias on lyhenne monimutkaiselle tai usein käytetylle komennolle. Itselläni Debianissa on mm. oletuksena la aliaksena pitkälle listauksen muodolle ls -la, joka näyttää myös piilotetut tiedostot (alkavat pisteellä). Tehdään nyt malliksi 'näyttö'-alias helpottamaan näyttöasetusten selailua:

tapsa@abc:~$ alias näyttö="cat /etc/X11/XF86Config-4 | less"

Nyt kun kirjoitat lyhyesti näyttö, niin saatkin eteesi listauksen näyttöasetuksista less-ohjelmalla pätkittynä (lopeta less-ohjelma q-näppäimellä).

tapsa@abc:~$ näyttö

Debianin käyttäjät voivat helpottaa systeemin päivitystä vaikkapa seuraavalla aliaksella:

root@abc:~# alias apt="apt-get update && apt-get upgrade"

Linux käsittelee tekemääsi aliasta kuten muitakin ohjelmia ja komentoja, joten jos nyt otat listauksen n:llä alkavista ohjelmista ls, niin 'näyttö' on listauksessa mukana. Näet listauksen käyttäjätunnuksesi aliaksista kirjoittamalla alias:

root@abc:~# alias
alias cp='cp -i'
alias la='ls -la --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias where='type -all'
alias which='type -path'
root@abc:~#

Voit panna tekemäsi aliaksen tiedostoon /etc/bashrc (tai profile joissakin distroissa), jolloin se on kaikkien käyttäjien käytettävissä. Vain omaan käyttöösi tarkoitetun aliaksen lisäät tietysti kotihakemistosi .bashrc-tiedostoon :)

Voit poistaa aliaksen kirjoittamalla unalias ja aliaksen nimi:

tapsa@abc:~$ unalias näyttö

Tausta-ajo

Väliviiva_konsoli

&

Konsolista käynnistettävät ohjelmat on hyödyllistä käynnistää suoraan tausta-ajoon (kuten esim. tietokannan päivitys, updatedb), jolloin konsoli ei jää varatuksi, lisäämällä ohjelman perään &-merkin (välimerkillä erotettuna):

root@abc:~# updatedb &
[1] 12479
root@abc:~#

fg, Ctrl-z

Ohjelman ajoa ei voi sammuttaa (Ctrl-c), jumiutunutta prosessia ei voi sammuttaa (kill PID) eikä ohjelman ajoa voi keskeyttää (Ctrl-z) tausta-ajossa vaan se on ensin siirrettävä taustalta etualalle kirjoittamalla fg (fg = foreground). Seuraavassa muutetaan ohjelman suoritus taustalta etualalle (fg) ja sitten keskeytetään ohjelman ajo (Ctrl-z):

root@abc:~# fg
updatedb
[1]+  Stopped                 updatedb
root@abc:~#

bg

Jatketaan seuraavaksi ohjelman ajoa taustalla (bg = background):

root@abc:~# bg
[1]+ updatedb &
root@abc:~#

jobs

Mistä ihmeestä voi sitten muistaa, mitkä ohjelmat on jätetty pyörimään taustalle tai pysäytetty? Tietysti Linuxissa tämänkin voi tarkistaa helposti konsolista. Taustalla ja pysäytettynä olevat ohjelmat näet jobs-komennolla:

root@abc:~# jobs
[1]+  Running                 updatedb &

Siirretään vielä ohjelma uudestaan taustalta etualalle:

root@abc:~# fg
updatedb
updatedb: new database would be empty
root@abc:~#

Näppäinyhdistelmiä

Väliviiva_konsoli

Hyödyllisiä näppäinyhdistelmiä ovat esim.

Luettelon näppäinyhdistelmistä näet:

root@abc:~# stty -a
speed 38400 baud; rows 25; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
root@abc:~#

Voit myös muuttaa konsolikohtaisesti määrityksiä, esim.

root@abc:~# stty intr ^B

Edellä muutettin ohjelman keskeytyskomento (intr = interrupt, keskeytys) Ctrl-c:stä Ctrl-b:ksi. Jos nyt kirjaudut sisään toiseen virtuaalikonsoliin, niin uusi asetus ei ole siellä voimassa.

Katso lisätietoa man stty.

Prosessit

Väliviiva_konsoli

Prosessien monitorointi ja -lopetus (ps)

Käyttäjien käynnistämät prosessit näet kirjoittamalla ps -u ja jonkun tietyn käyttäjän prosessit lisäämällä perään käyttäjänimen, esim.

tapsa@TeraeNet:~$ ps -u tapsa

Ohjelman voi sammuttaa tai 'tappaa' jumiutuneen prosessin kirjoittamalla

kill prosessin_id-numero (PID)

tai käyttämällä vaihtoehtoisesti jobs-komennolla saatavaa työnumeroa %-merkin kanssa, esim.

kill %1

Tämä on normaali ohjelman lopetussignaali (15, SIGNTERM) mutta sitä voi käyttää myös jumiutuneen prosessin 'tappamiseen'. Normaalia lopetussignaalia ei tarvitse kirjoittaa lopetuskäskyyn, koska se on oletuksena. Joskus kuitenkin joudutaan sammuttamaan jumiutuneet prosessit käyttäen järeämpää lopetussignaalia (9 = SIGNKILL):

kill -9 pid

Jos tiedät, mikä laite jäi jumiin (esim. diskettiasema), voit käyttää myös fuser-komentoa seuraavasti:

tapsa@34:~$ fuser -mk /dev/fd0

Muut optiot on lueteltu seuraavassa:

tapsa@34:~$ fuser
usage: fuser [ -a | -s | -c ] [ -n space ] [ -signal ] [ -kimuv ] name ...
             [ - ] [ -n space ] [ -signal ] [ -kimuv ] name ...
       fuser -l
       fuser -V

    -a        display unused files too
    -c        mounted FS
    -f        silently ignored (for POSIX compatibility
    -k        kill processes accessing that file
    -i        ask before killing (ignored without -k)
    -l        list signal names
    -m        mounted FS
    -n space  search in the specified name space (file, udp, or tcp)
    -s        silent operation
    -signal   send signal instead of SIGKILL
    -u        display user ids
    -v        verbose output
    -V        display version information
    -4        search IPv4 sockets only
    -6        search IPv6 sockets only
    -         reset options

  udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

Voit listata signaalien nimet (jos asia sattuu kiinnostamaan):

kill -l

Prosessin uudelleen käynnistävä signaali on HUP, keskeytyssignaali on INT, lopetussignaali on TERM ja kill-signaali on KILL - tärkeimpiä mainitaksemme.

Voit listata kaikki käynnissä olevat prosessit (ohjelmat) seuraavasti:

ps -aux | more

Komento killall eroaa kill-komennosta sillä tavalla, että parametrina käytetään prosessin nimeä eikä prosessin numeroa. Esimerkkinä X:n kaikki prosesssit voi sammuttaa lyhyesti ja ytimekkäästi:

killall X

Toinen käytännön esimerkki. Jos käynnistät Nautiluksen KDE:stä, niin se piirtää KDE:n työpöydän tilalle Gnomen työpöydän pysyvästi. Saat työpöydän takaisin oikeaksi tappamalla Nautiluksen prosessit kirjoittamalla killall nautilus terminaalissa. Oikea tapa käynnistää Nautilus KDE:stä onkin tehdä se lisäparametreilla nautilus --no-desktop, jolloin työpöytä ei vaihdu Gnomeksi.

Katso lisätietoa kill-komennosta man-sivuilta man kill ja man killall.

Prosessorin kuormitus ja muistin käyttö (top)

Kaikkia kiinnostaa varmasti myös eri prosessien vaatima prosessorin (CPU) kuormitus ja muistin käyttö. Ne saa selville top-ohjelmalla, joka lajittelee prosessit em. asioiden perusteella suurimmasta pienimpään:

top - 19:23:52 up 46 min,  4 users,  load average: 1.33, 0.76, 0.50
Tasks:  76 total,   2 running,  74 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.7% us,  7.9% sy, 82.2% ni,  0.0% id,  4.9% wa,  4.3% hi,  0.0% si
Mem:    385300k total,   380592k used,     4708k free,    58688k buffers
Swap:   249944k total,        0k used,   249944k free,   164132k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3377 root      26  10 10000 6920 4620 S 79.0  1.8   0:42.83 scrollkeeper-up
 1229 root      15   0  1824  632 1664 S  1.3  0.2   0:02.00 gpm
 3695 root      27  10  4088 1120 3916 R  1.3  0.3   0:00.04 scrollkeeper-ge
  148 root      15   0     0    0    0 S  0.7  0.0   0:02.23 kjournald
 3589 root      17   0  2096 1056 1884 R  0.7  0.3   0:00.19 top
    4 root       5 -10     0    0    0 S  0.3  0.0   0:04.75 events/0
    1 root      16   0  1528  528 1376 S  0.0  0.1   0:00.69 init
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.04 ksoftirqd/0
    5 root       5 -10     0    0    0 S  0.0  0.0   0:00.03 khelper
    6 root       5 -10     0    0    0 S  0.0  0.0   0:00.82 kblockd/0
   29 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
   30 root      15   0     0    0    0 S  0.0  0.0   0:00.47 pdflush
   32 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0
   31 root      15   0     0    0    0 S  0.0  0.0   0:00.10 kswapd0
  141 root      16   0     0    0    0 S  0.0  0.0   0:00.00 kseriod
  411 root      18   0     0    0    0 S  0.0  0.0   0:00.00 khubd
  428 root      15   0     0    0    0 S  0.0  0.0   0:00.08 kapmd

Pelkät käynnissä olevat prosessit näet top -i:

$ top -i

Lopeta ohjelman käyttö painamalla q-näppäintä.

Prioriteetti (nice, renice)

Ohjelmien (prosessien) saamaa prosessoriaikaa voidaan priorisoida nice- ja renice-komennoilla. Nice-arvoa voidaan seurata top- ja ps lax -komennoilla, joissa se näkyy NI-arvona: korkein prioriteetti on -20 (vain pääkäyttäjä voi antaa miinusmerkkisiä arvoja) ja alhaisin on 19 (oletus 0). Nice-arvo on aina suhteessa muihin prosesseihin.

Todellinen, tietyllä hetkellä oleva, prioriteetti (joka muuttuu siis koko ajan) näkyy PR-arvona 'top'-komennolla ja PRI-arvona 'ps lax' -komennolla. Arvo 0 on tärkein ja 39 on vähiten tärkeä ja suoritetaan luppoajalla.

# top

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1 root      16   0  1528  528 1376 S  0.0  0.1   0:00.25 init
root@abc:~# ps lax
F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  16   0  1528  528 -      S    ?          0:00 init [2]

Muutetaan kokeeksi top-komennon omaa prioriteettia renice-komennolla:

Top-ohjelman nice-arvo NI on oletuksena 0:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1423 root      17   0  2096 1032 1884 R  0.7  0.3   0:00.06 top
  ---

Muutetaan nice-arvo renice-komennolla 5:ksi:

 root@abc:~# renice 5 1423
1423: old priority 0, new priority 5
root@abc:~#

Edellisen komennon muoto on siis:

renice uusi_arvo pid

Renice-komennossa pitää siis tietää prosessin ID-numero (PID), joka näkyy top-listauksessa. Nyt muutettu NI-arvo on 5:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1423 root      21   5  2096 1032 1884 R  0.3  0.3   0:00.44 top

Käynnistettävälle ohjelmalle voidaan vastaavasti nice-komennolla pyytää jotain muuta prioriteettia kuin käynnistettävälle komennolle tai ohjelmalle (prosessille) oletuksena oleva 10. Koska prosessin ID-numeroa ei tässä vaiheesa tiedetä, täytyy tilalla käyttää ohjelman nimeä.

Käynnistettävälle ohjelmalle siis pyydetään prioriteettia nice-komennolla ja jo käynnissä olevan prosessin prioriteettia muutetaan renice-komennolla.

free

Komento free näyttää systeemin käytetyn ja vapaana olevan muistin (myös swap):

root@abc:~# free
             total       used       free     shared    buffers     cached
Mem:        385296      61940     323356          0       3716      37016
-/+ buffers/cache:      21208     364088
Swap:       249944          0     249944
root@abc:~#

Flush, sync

Kerneli kirjoittaa kirjoitusoperaatiot ensin välimuistiin (cache) suorituskyvyn optimoimiseksi. Flush (kernelin pdflush-prosessi) sitten kirjoittaa nämä operaatiot fyysisesti tallennusmedialle (esim. kiintolevylle) tietyin väliajoin. Flush the cache siis tarkoittaa välimuistin tyhjennystä.

Flushin käyttö auttaa myös tiedostojärjestelmää, kun joka operaation kohdalla ei pakoteta käyttöjärjestelmää välittömästi kirjoittamaan tietoa levylle.

Joskus kuitenkin saattaa olla tarpeellista ajaa flush manuaalisesti. Sen voi tehdä yksinkertaisesti vain ajamalla sync-komennon (sync - flush filesystem buffers):

sync
info sync:

`sync': Synchronize data on disk with memory
============================================

`sync' writes any data buffered in memory out to disk.  This can
include (but is not limited to) modified superblocks, modified inodes,
and delayed reads and writes.  This must be implemented by the kernel;
The `sync' program does nothing but exercise the `sync' system call.

   The kernel keeps data in memory to avoid doing (relatively slow) disk
reads and writes.  This improves performance, but if the computer
crashes, data may be lost or the filesystem corrupted as a result.
`sync' ensures everything in memory is written to disk.

Voit seurata flushin käyttöä esim. top-komennon pdflush-prosessin kohdalta.

Oletko koskaan törmännyt tilanteeseen, että levykkeelle kopioimasi tiedosto ei olekaan siellä vaikka varmasti kopioit sen oikein? Syy on juuri äsken selostettu kernelin käyttämä välimuisti, josta sitä ei ollutkaan vielä kirjoitettu levykkeelle ennen levykkeen poisottamista. Monesti flush suoritetaan pienten tiedostojen kohdalla vasta levykkeen irrottamisen (umount) yhteydessä, ja jos irrottaminen on unohdettu tehdä, voi tiedosto tosiaan olla kadonnut.

Ongelman voi myös ratkaista kätevästi lisäämällä sync-komennon /etc/fstab-tiedoston levykeosioon (esimerkki Lindowsista):

/dev/fd0        /mnt/floppy1  auto   noauto,rw,user,noexec,sync   0   0

rsync

Väliviiva_konsoli

Rsync-ohjelma käyttää rsync-etäpäivitysprotokollaa nopeuttamaan jo olemassa olevien tiedostojen päivitystä. Rsync-protokolla sallii rsyncin siirtää vain eroavuudet tiedostojen välillä käyttäen tehokasta tarkistussummien etsintäalgoritmia (checksum-search algorithm) näin nopeuttaen tiedostojen siirtoa huomattavasti.

Rsync-ohjelmaa voi käyttää myös paikallisten tiedostojen kopioimiseen ja päivittämiseen. Ohjelman käyttö on yksinkertaista:

rsync optiot lähde kohde

Kohde voi olla myös toisella koneella (remote). Seuraavassa esimerkissä olen käyttänyt rsync-ohjelmaa linux-sivustoni varmuuskopiointiin toiselle kiintolevylle:

# rsync -r /mnt/hda2/www/linux/* /mnt/hdb1/www/linux

Edellä kopioidaan linux-hakemistosta vain muuttuneet tiedostot hda2-osiolta toisen levyn hdb1-osiolle (vrt. DOSin xcopy). Ilman -r-optiota (recursive) ei alihakemistoja tiedostoineen kopioitaisi.

Sivulla http://www.skolelinux.org/portal/get_started/download on esimerkki kuinka Skolinuxin iso-tiedosto päivitetään rsyncin avulla, jolloin vain muuttuneet kohdat haetaan ja päivitetään jo olemassa oleva iso-tiedosto:

rsync rsync.skolelinux.no::skolelinux-cd/skolelinux-i386-current.iso filename.iso

Edellä filename.iso on olemassa olevan iso-tiedoston nimi levylläsi (muuta nimi oikeaksi).

man rsync:

RSYNC:
       rsync is a program that behaves in much the same way that rcp does, but
       has many more options and uses  the  rsync  remote-update  protocol  to
       greatly  speed  up  file  transfers  when  the destination file already
       exists.

       The rsync remote-update protocol allows rsync to transfer just the dif-
       ferences between two sets of files across the network connection, using
       an efficient  checksum-search  algorithm  described  in  the  technical
       report that accompanies this package.


Seuraavassa on joitakin esimerkkejä man-sivulta rsyncin käytöstä. Katso käytettyjen optioiden merkitys man rsync -manuaalisivulta:

USAGE
       You use rsync in the same way you use rcp. You must specify a source
       and a destination, one of which may be remote.

       Perhaps the best way to explain the syntax is with some examples:

              rsync *.c foo:src/

       This would transfer all files matching the pattern *.c from the
       current directory to the directory src on the machine
       foo.  If  any of the files already exist on the remote system then
       the rsync remote-update protocol is used to update
       the file by sending only the differences. See the tech report for
       details.

              rsync -avz foo:src/bar /data/tmp

       This would recursively transfer all files from the directory src/bar
       on the machine foo into the /data/tmp/bar direc-
       tory  on  the local machine. The files are transferred in "archive"
       mode, which ensures that symbolic links, devices,
       attributes, permissions, ownerships etc. are preserved in the
       transfer.  Additionally, compression will  be  used  to
       reduce the size of data portions of the transfer.

              rsync -avz foo:src/bar/ /data/tmp

       A  trailing slash on the source changes this behavior to avoid
       creating an additional directory level at the destina-
       tion.  You can think of a trailing / on a source as meaning "copy the
       contents of this directory" as opposed to "copy
       the  directory by name", but in both cases the attributes of the
       containing directory are transferred to the contain-
       ing directory on the destination.  In other words, each of the
       following commands copies the files in the  same  way,
       including their setting of the attributes of /dest/foo:

              rsync -avz /src/foo /dest
              rsync -avz /src/foo/ /dest/foo

       You  can  also  use  rsync in local-only mode, where both the source
       and destination don't have a ':' in the name. In
       this case it behaves like an improved copy command.

              rsync somehost.mydomain.com::

       This would list all the anonymous rsync modules available on the host
       somehost.mydomain.com.  (See the following sec-
       tion for more details.)

Katso lisätietoa Rsync-ohjelmasta sivulta http://rsync.samba.org/, jossa on myös esimerkkejä Rsyncin käytöstä backup-tiedostojen ottoon.

Graafisten ohjelmien käynnistys

Väliviiva_konsoli

Konsolista voi käynnistää myös graafisia ohjelmia kirjoittamalla käynnistyvän ohjelman nimen, (esim. kwrite tai mozilla). Tällöin niille voi antaa myös lisäparametreja, esim. 'env LANG=fi_FI.iso88591 gaim ', jolloin gaim-'nyystin' näyttää RH 9:ssä skandit oikein :) Myös ongelmatapauksissa konsoliin tulostuvat virheilmoitukset auttavat ongelmien selvityksessä.

Tekstin kopiointi ja liittäminen

Väliviiva_konsoli

Leikepöydän käsittelylle (copy - paste) ei Linuxissa ole olemassa yhtenäistä standardia mutta graafisella puolella, esim. KDE:ssä, ohjelmat alkavat yhä enemmän noudattaa Windowsissa käytettyä tapaa, Ctrl-c (kopioi), Ctrl-v (liitä), Ctrl-x (leikkaa). Tekstitilassa ei taas Ctrl-c:tä voi käyttää, koska se on Unixin yleinen ohjelman lopetuskomento.

Hiiri Mutta voiko konsolissa sitten kopioida tekstiä hiirellä? Kyllä voi, jos gpm on asennettu (gpm - a cut and paste utility and mouse server for virtual consoles). Debianissa voit asentaa sen esim. Aptilla

apt-get install gpm

Nyt vaan valitset alueen painamalla vasenta hiiren näppäintä ja raahaamalla hiirtä halutulla alueella. Tekstin voi sitten liittää painamalla hiiren keskimmäistä näppäintä tai rullaa. Voit kopioida ja liittää tekstiä halutessasi myös eri konsoleissa.

Joissakin ohjelmissa voit joutua painamaan myös Shift-näppäintä samanaikaisesti, kun maalaat tekstiä (esim. links-tekstipohjainen selain) ja samoin myös kun liität tekstiä (esim. mc). Katso lisätietoa tekstin kopioimisesta man gpm.

Jos gpm on asennettu, mutta hiiri ei kuitenkaan toimi virtuaalikonsolissa, kokeile seuraavaa ps/2-hiirellä:

gpm -m /dev/mouse -t ps2

Ja sama lyhemmin, koska /dev/mouse on oletuksena:

gpm -t ps2

Näit saat hiiren toimimaan esim. Knoppix 3.6:n live-CD:llä. Katso lisätietoa man-sivuilta man gpm. Seuraavassa selvitys em. -m ja -t -optioiden merkityksestä:

       -m filename
              Choose the mouse file to open. It defaults to /dev/mouse'.


       -t name
              Set the mouse type. Use -t help' to get a list of allowable
              types. Since version 1.18.1, the list also  shows
              which protocols are available as repeaters (see -R above), by
              marking them with an asterisk (`*'').

Jälkimmäisestä optiosta (-t) saat luettelon mahdollisista hiirityypeistä:

gpm -t help

Jos haluat kopioda tekstiä hiirellä virtuaalikonsolista esin. Mozilla News -ohjelmassa kirjoittamaasi viestiin, joudut ehkä tallentamaan viestin ensin ja sitten 'välikäden' kautta kopioimaan sen news-lukijaan.

Levytilan käyttö

Väliviiva_konsoli

df

Levytilan käyttö Linuxissa on monelle mysteeri. Kuitenkin sen seuranta on hyvin helppoa df (tai df -h) -komennolla, joka näyttää sillä hetkellä liitetyt osiot ja niiden käyttämän levytilan:

-bash-2.05b# df -h
Tiedostojärjestelmä   Koko  Käyt Vapaa  Käy% Liitospiste
/dev/hdb5             2,2G  2,1G   44M  98% /
tmpfs                 189M     0  189M   0% /dev/shm
/dev/hda1             4,0G  3,4G  643M  85% /mnt/windows
-bash-2.05b# df
Tiedostojärjestelmä  1K-lohkot  Käytetty   Vapaana Käy% Liitospiste
/dev/hdb5              2273968   2113508     44948  98% /
tmpfs                   192648         0    192648   0% /dev/shm
/dev/hda1              4192752   3534436    658316  85% /mnt/windows

Jos edellä olisi ollut jokin muukin osio tai vaikkapa cd-asema liitettynä, niin sekin näkyisi listauksessa. Huomaa ero mount-komentoon, joka näyttää vain liitetyt osiot mutta ei niiden käyttämää levytilaa.

Huomaa, että df ei näytä swap-osiota. Sen saa näkyviin free-komennolla.

du

Yksityiskohtaisemman tiedon tilankäytöstä saat du-komennolla (disk usage), joka tulostaa hakemistojen ja alihakemistojen tilankäytön. Seuraavassa esimerkissä rajataan haku vain tiettyihin valittuihin hakemistoihin ja tulos ilmoitetaan megatavuina:

root@:/etc# du /etc /home /var /usr /tmp -ms
41      /etc
18      /home
124     /var
1774    /usr
1       /tmp

Näin voit seurata esim. kotihakemiston viemää levytilaa. Luettelon eri valitsimista näet komennolla man du.

fdisk -l

Täydellisen listauksen kaikista koneessa olevista osioista saat fdisk -l:

-bash-2.05b# fdisk -l

Disk /dev/hda: 4303 MB, 4303272960 bytes
255 heads, 63 sectors/track, 523 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         523     4200966    b  W95 FAT32

Disk /dev/hdb: 2625 MB, 2625005568 bytes
128 heads, 63 sectors/track, 635 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1          62      249952+  82  Linux swap
/dev/hdb2              63         635     2310336    5  Extended
/dev/hdb5   *          63         635     2310304+  83  Linux
-bash-2.05b#

Huomaa listauksessa tähdellä (*) merkityt osiot, jotka tarkoittavat boottaavia osioita.

Käyttäjätiedot ja niiden muuttaminen

Väliviiva_konsoli

KäyttäjätLinuxin kerneli käsittelee käyttäjätunnuksia (UID) ja ryhmätunnuksia (GID) numeerisina arvoina nimien sijaan. Alle sadan olevat UID-arvot (UID < 100) ovat pääkäyttäjän ja palveluiden käytössä (eutoikeutetut käyttäjät, priviledged users). Ohjelmat käyttävä arvoja sadan ja viidensadan välillä ja tavallisten käyttäjien UID-arvot alkavat vasta viidestäsadasta ylöspäin (UID > 500) ja Debianissa tuhannesta ylöspäin.

Käyttäjien tiedot ovat kolmessa hakemistossa:

/etc/passwd
/etc/shadow
/etc/group
Käyttäjätiedot

Käyttäjätiedot on määritelty /etc/passwd-tiedostossa (jokaisella käyttäjällä on oma rivinsä):

root@abc:~# cat /etc/passwd
tapsa:x:1002:1002:Tapani Räikkönen,,,:/home/tapsa:/bin/bash

Käyttäjätiedot ovat yhdellä rivillä seitsemässä kentässä, jotka erotellaan kaksoispisteellä (:) toisistaan:

Selvennetäänpä vielä hieman edellä esiteltyjen kenttien merkityksiä:

Jos /etc/passwd-tiedoston salasana-kentässä on x salasanan kohdalla, silloin on käytössä kryptatut sasanat, jotka sijaitsevat /etc/shadow-tiedostossa.

Käyttäjäryhmät

Käyttäjäryhmät riveittäin on määritelty /etc/group-tiedostossa (poimittu vain tapsa-käyttäjän GID-ryhmä):

root@abc:~# cat /etc/group
tapsa:x:1002:

Käyttäjä voi kuulua myös useampiin ryhmiin samanaikaisesti. Seuraavassa on audio-ryhmään lisätty käyttäjät tapsa ja samu (/etc/group-tiedosto):

audio:x:29:tapsa,samu

Jos tapsa-käyttäjä ei olisi kuulunut audio-ryhmään aikaisemmin, lisäys ryhmään olisi voitu tehdä adduser-komennolla seuraavasti:

adduser tapsa audio

Näet ryhmät, joihin kuulut groups-komennolla (vrt. id-komento):

tapsa@abc:~$ groups
tapsa audio
tapsa@abc:~$
Salasanat

Salasanat ovat /etc/passwd-tiedostossa mutta nykyään käytetään salattuja (kryptattuja) salasanoja, jolloin /etc/passwd-tiedostossa on salasanan kohdalla vain x. Salatut salasanat ovat /etc/shadow-tiedostossa (mallitiedostoa muutettu):

root@abc:~# cat /etc/shadow
tapsa:$1$KhWwY2ay$6D6dlSXwo2eMCqUcyEOEy/:12627:0:99999:7:::

Käyttäjä voidaan asettaa väliaikaiseen käyttökieltoon panemalla /etc/shadow-tiedoston salasanakenttään tähden (*) tai huutomerkin (!). Käyttäjän kaikki tiedot ovat silloin tallessa mutta sisäänkirjautuminen on estetty. Käyttäjä voi taas kirjautua normaalisti sisään, kun lisätty merkki on poistettu.

Käyttäjien lisääminen ja salasanan vaihto

adduser, deluser, addgroup, delgroup

Käyttäjät ovat Linuxin kernelille pelkkiä numeroita (nopeampi prosessoroida kuin tekstiä sisätävät nimet) ja jokaiselle käyttäjälle on oma tunnistenumero user id (tai uid). Jokaiselle user id:lle on sitten olemassa käyttäjänimi (username) erillisessä tietokannassa.

Käyttäjän lisääminen tehdään perinteisesti adduser-käskyllä ja poistaminen deluser-käskyllä (userdel -r kayttajatunnus, poistaa myös kotihakemiston ja /var/spool/mail/käyttäjätunnus-hakemiston). Ryhmän lisääminen tehdään vastaavasti addgroup- ja poistaminen delgroup-käskyllä. Useimmissa uusimmissa distroissa on myös erillinen graafinen ohjelma käyttäjätietojen muuttamiseen (esim. redhat-config-users). Käyttäjän lisäämisen (adduser) yhteydessä luodaan myös samanninimen käyttäjäryhmä. Esimerkiksi 'samu'-nimisen käyttäjän luonnin yhteydessä luodaan myös 'samu'-käyttäjäryhmä samulle.

Käyttäjän lisääminen adduser-komennolla kysyy myös kaikki muut tarvittavat tiedot ja tekee kotihakemiston ja antaa normaalin käyttäjän käyttöoikeudet. Seuraavassa on mallina 'samu'-nimisen käyttäjän lisääminen Debianissa:

tapsa:/home/tapsa# adduser
Enter a username to add: samu
Adding user samu...
Adding new group samu (1002).
Adding new user samu (1002) with group samu.
Creating home directory /home/samu.
Copying files from /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for samu
Enter the new value, or press return for the default
        Full Name []: Samuel Räikkönen
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [y/n] y
tapsa:/home/tapsa#

Kuten edellä olevasta esimerkistä huomataan, niin hakemistot ja tiedostot uuden käyttäjän kotihakemistoon kopioidaan /etc/skel-hakemistosta (Copying files from /etc/skel). Systeemin ylläpitäjä voi säätää uusien käyttäjien työpöydän jo ennakolta mahdollisimman hienoksi muokkaamalla /etc/skel-hakemistoa halutunlaiseksi. Yleensä kylläkin /etc/skel-hakemisto kannattaa pitää mahdollisimman yksinkertaisena.

Jos haluat muuttaa jälkeenpäin esim. käyttäjän täydellistä nimeä, niin sen voit tehdä komennolla chfn (change the full name). Katso lisätietoa sivulta Changing user properties.

Käyttäjän luonnin yhteydessä käyttäjällä on vain yksi samanniminen käyttäjäryhmä, johon hän kuuluu. Käyttäjälle voi lisätä helposti eri käyttäjäryhmään addgroup-käskyllä. Seuraavassa esimerkissä samu lisätään sudo-ryhmään.

tapsa:/home/tapsa# addgroup samu sudo
Adding user samu to group sudo...
Done.
tapsa:/home/tapsa#

Voit myös muuttaa käyttäjän ensisijaisen ryhmän newgrp-komennolla.

Jos adduser ei toimi omassa distrossasi, kokeile useradd-komentoa. Sen käyttö on hieman hankalampaa ja vaatii mm. käyttöoikeuksien antamisen erikseen (luultavasti distrossasi on silloin graafinen apuohjelma käyttöoikeuksien määrittelemiseen, jonka käyttö on aloittelijalle suositeltavampaa). Seuraavassa esimerkissä on kuitenkin mallina 'useradd'-komennon käyttö:

tapsa:/home/tapsa # useradd tera

Edellä on luotu uusi käyttäjä 'tera', jolle annetaan vielä salasana:

tapsa:/home/tapsa # passwd tera
Changing password for tera.
New password:
Password changed
tapsa:/home/tapsa #

Katso man adduser saadaksesi lisätietoa uusien käyttäjien lisäämisestä. Huolehdi myös uusien käyttäjien oikeuksista (rwx) ainakin omaan kotihakemistoonsa (pitäisi saada oikeudet kyllä oletuksena).

Btw, moni on ihmetellyt, miksi uuden käyttäjän kotihakemistoon on muilla oletuksena lukuoikeus, jolloin oikeudet 'ls -l' -komennolla ovat drwxr-xr-x (0755). Jos ei halua kaikkien käyttäjien lukevan omia tiedostojaan, voi oikeudet muuttaa hyvinkin, esim. 'chmod 0751' (drwxr-x--x) tai 'chmod 0750' (drwxr-x---). Ehkäpä hyvät oletusoikeudet olisivatkin pelkästään 'drwx------', jotka saat 'chmod 0700'. Ensimmäinen numero jätetään yleensä pois, jos se on nolla (0), koska se on silloin tarpeeton.

Debianissa voit muuttaa uusien käyttäjien oletusoikeutta kirjoittamalla konsolissa:

# dpkg-reconfigure --priority low adduser 

jonka jälkeen eteesi tulee seuraava teksti (sama kuin Debianin asennuksen aikana, jolloin siihen ei yleensä kiinnitetä mitään huomoiota):

                 Adduser

Normally, home directories can be viewed by all users on the system. If
you want to increase the security/privacy on your system, you might want
your home directories only readable by the user. If you are unsure,
enable system wide readable home directories.

This will only affect home directories of users added with the adduser program later.

Do you want system wide readable home directories?

                    <Kyllä>                     <Ei>

Jos vastaat 'ei', niin uusien käyttäjien kohdalla muiden lukuoikeudet on poistettu drwxr-x--x (chmod 751), kun okeudet aikaisemmin olivat oletuksena drwxr-xr-x (chmod 755).

passwd

Salasanan vaihtoSalasanaa vaihdetaan komennolla passwd. Ensin kysytään vanhaa salasanaa ja sitten syötetään uusi salasana. Uusi salasana ei saa olla liikaa entisen kaltainen eikä liian yksinkertainen eikä yli 8 merkin pituinen, jos MD5-salasanoja (max. 256 merkkiä) ei ole valittu käyttöön. Seuraavassa esimerkissä on kaikki vaihtoehdot esillä:

tapsa@tapsa:~> passwd
Changing password for tapsa.
Old Password:
New password:
Bad password: too similar
New password:
Bad password: too simple
New password:
Password will be truncated to 8 characters
Re-enter new password:
Password changed

/etc/skel - luuranko (skeleton)?

KotihakemistoOnko sinua koskaan askarruttanut, mistä Linux hakee asetukset, kun uusia käyttäjätunnuksia luodaan? Eipä siinä mitään mystistä ole - Linux vain kopioi /etc/skel-hakemiston sellaisenaan uusille käyttäjille. Hakemisto /etc/skel onkin eräänlainen suppea 'luuranko'-hakemisto, jossa olevat tiedostot ja alihakemistot kopioidaan automaattisesti uuden käyttäjän hakemistoon, kun käyttäjätunnus luodaan.

Voit myös tehdä muutoksia /et/skel-hakemistoon ja vaikkapa kopioda sinne omat asetuksesi, jolloin ne tulevat käyttöön kaikille uusille käyttäjille automaattisesti. Yleensä suositellaan kuitenkin hakemiston pitämistä mahdollisimman suppeana - 'luurankomaisena'.

fstab ja mount

Väliviiva_konsoli

Johdanto: laitetiedostot

LohkolaiteTiedosto /etc/fstab on laitteiden (devices) määritystiedosto, jossa määritellään, mitkä laitteet (liitokset) joko otetaan automaattisesti käyttöön käynnistymisen yhteydessä tai ovat tarvittaessa otettavaksi käyttöön. Huomaa myös, että Linux tukee vain niitä tiedostojärjestelmiä (filesystems), joille on tuki kernelissä.

Linuxissa ei käytetä asematunnuksia A, C, D jne. kuten Windowsissa vaan laitenimiä (/dev/fd0, /dev/hda1, /dev/hda2 jne.) ja laitteet (devices) pitää ensin liittää (mount) hakemistorakenteeseen ennen kuin niitä voi käyttää.

Laitteita on kahdenlaisia: lohkolaitteita (random-access block devices, tyyppi b) ja merkkilaitteita (character devices, tyyppi c). Laitteet voidaan liittää tiedostojärjestelmään vasta kun ne on luotu. Normaalisti tarvittaville laitteille luodaan laitetiedostot Linuxin asennuksen yhteydessä mutta niitä voidaan myös tehdä jälkeenpäin lisää MAKEDEV-skriptillä, esim.:

  # /dev/MAKEDEV -v ttyS0
  create ttyS0   c 4 64 root:dialout 0660

Edellä luotiin laitetiedosto sarjaportille (ttyS0 = COM1).

Voit luoda myös laitetiedoston mknod-komennolla, jos MAKEDEV-skripti ei tunnista laitettasi.

# mknod /dev/ttyS0 c 4 64

Selite:
komento laitenimi laitetyyppi major-nro minor-nro 

Edellä olevassa piti tietää laitteen pää- (major) ja alinumero (minor), jotka löytyvät /usr/src/linux/Documentation/devices.txt-tiedostosta, jos kernelin lähdekoodipaketti on asennettu. Käyttäjille tarvitsee antaa laitteiden luonnin jälkeen myös tarvittavat käyttöoikeudet.

Lisätietoa laitetiedostojen luonnista saat mm. sivulta http://www.faqs.org/docs/lnag/lnag_basic_conf.html#devices.

ide-kiintolevyjen (ja osioiden) liittäminen

Kiintolevyn liittäminenKiintolevyt (hd = hard disk) nimetään Linuxissa (IDE-levy) seuraavasti: 1. levy = /dev/hda, 2. levy = /dev/hdb, 3. levy = /dev/hdc, 4. levy = /dev/hdd, 5. levy = /dev/hde jne. Jos asentaa Linuxin ensimmäiselle kiintolevylle ja sen ensimmäiselle osiolle (Windowsissahan usein on juuri näin), niin laitenimi on silloin /dev/hda1. Ensimmäinen looginen asema (logical drive) jatko-osiolla (extended partition) taas on /dev/hda5 (Linuxit asentuvat usein oletuksena loogisille asemille).

Haluttu osio (partitio) tai kiintolevy voidaan liittää automaattisesti Linuxin käynnistyessä lisäämällä se tiedostoon /etc/fstab ja antamalla tarvittavat optiot. Käynnistyksen yhteydessä automaattisesti liitettävät laitteet näkyvät riveinä, joissa on defaults, ja koska ne liitetään jo valmiiksi käynnistyksen yhteydessä, mount-komentoa ei enää tarvita.

/dev/hda1 /mnt/c vfat defaults 0 0

Tässä esimerkissä vfat = FAT32-osio ja /dev/hda1 = C:\. Näillä 'perusasetuksilla' osio liitetään automaattisesti mutta vain pääkäyttäjä voi käyttää sitä.

Usein on kuitenkin hyödyllistä antaa myös tavalliselle käyttäjälle oikeuksia osion liittämiseen ja ohjelmien suorittamiseen osiolta, jolloin seuraava /etc/fstab-tiedoston rivi voisi olla käyttökelpoinen:

/dev/hda1 /mnt/c vfat noauto,users,exec,umask=000 0 0

Edellä on /mnt-hakemistoon tehty c-niminen alihakemisto valmiiksi (/mnt/c). Hakemisto voi tietysti olla minkä niminen tahansa jos /etc/fstab-tiedostossa on vastaava hakemisto, esim. /mnt/win98 tai /mnt/XP.

Huomaa, että voit lisätä rivejä fstab-tiedostoon ja kokeilla eri asetuksia, kun vain kommentoit pois ne rivit, joita et halua käyttää, esim.:

# /dev/hda1 /mnt/c vfat defaults 0 0
/dev/hda1 /mnt/c vfat noauto,users,exec,umask=000 0 0

Jos ajat vielä komennon mount -a, niin muutokset tulevat heti voimaan eikä koneen uudelleen käynnistystä tarvita. Samalla myös ilmoitetaan mahdollisista virheistä fstab-rivillä. Huomaa, että /etc/fstab-tiedoston viimeisenä merkkinä pitää olla rivinvaihto - älä siis lopeta tiedoston viimeisen rivin kirjoittamista rivin loppuun vaan paina vielä lopuksi enteriä. Muuten saat ilmoituksen syntaksivirheestä.

Kiintolevy voidaan myös liittää väliaikaisesti ja irrottaa tekemättä muutoksia /etx/fstab-tiedostoon.

mount /dev/hda1
umount /dev/hda1

Joskus joudutaan liittämisessä käyttämään pitkää muotoa, jos liittäminen ei muuten onnistu:

mount -t vfat /dev/hda1 /mnt/c    

Jos liittäminen ei onnistu käyttäen lyhyttä muotoa, saadaan seuraavantapainen ilmoitus:

# mount /dev/hdb6
mount: väärä tiedostojärjestelmätyyppi, virheellinen valitsin, viallinen
       superlohko laitteella /dev/hdb6, tai liian monta liitettyä
       tiedostojärjestelmää
# mount -t hpfs /dev/hdb6 /mnt/hdb6

Edellä siis liitettiin jouduttiin käyttämään pitkää muotoa OS/2:n HPFS-osion liittämiseen.

Valitsin -t tarvitaan edeltämään annettavaa tiedostojärjestelmää:

       -t vfstype
              The argument following the -t is used to indicate the file sys-
              tem type.  The file system types which are currently  supported
              are:  adfs,  affs, autofs, coda, coherent, cramfs, devpts, efs,
              ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos,  ncpfs,
              nfs,  ntfs,  proc,  qnx4,  reiserfs, romfs, smbfs, sysv, tmpfs,
              udf, ufs, umsdos, vfat, xenix, xfs, xiafs.  Note that coherent,
              sysv  and xenix are equivalent and that xenix and coherent will
              be removed at some point in the future  --  use  sysv  instead.
              Since  kernel  version  2.1.21  the  types ext and xiafs do not
              exist anymore.

levykeaseman liittäminen

Levykkeen liittäminenMyös levykeasema pitää ensin liittää (mount) järjestelmään ennen kuin se on käytettävissä. Laitetiedostot (device files) ovat /dev-hakemistossa ja levyke (fd = floppy disk) liitetään (mount) ja irrotetaan (umount) seuraavasti:

mount /dev/fd0
umount /dev/fd0  

Jos fstabissa ei ole /dev/fd0-alkuista riviä valmiina, täytyy käyttää pitempää muotoa (yleensä vain root voi käyttää):

# mount -t vfat /dev/fd0 /floppy

Tässä levyke (haluttu käytettäväksi Windowsin vfat-tiedostojärjestelmää, vfat = FAT32) liitetään juuressa olevaan floppy-hakemistoon, jonka pitää olla luotu valmiiksi. Yleensä täyspitkää liittämismuotoa ei oletuksena sallita tavalliselle käyttäjälle vaan käyttäjän on pakko käyttää lyhyempää muotoa mount /floppy. Joissakin distroissa levyke näkyy /mnt-hakemiston alla (/mnt/floppy), jolloin on käytettävä muotoa 'mount /mnt/floppy'.

Oikea paikka levykkeen liittämiselle olisi FHS:n mukaan /media/-hakemisto (/media : Mount point for removeable media; /mnt : Mount point for a temporarily mounted filesystem).

Levykkeen liittämiselle annetaan 'ohjeet' käynnistyksen yhteydessä /etc/fstab-tiedostossa annettujen määritysten mukaan, jossa määritellään myös kaikki muutkin laitteet, mitä liitetään hakemistojärjestelmään ja miten. Seuraavassa malliksi Lindowsin, Knoppixin ja SUSE:n levyke-osio /etc/fstab-tiedostosta:

LindowsOS:

/dev/fd0        /mnt/floppy1  auto   noauto,rw,user,noexec,sync   0   0

Knoppix 3.3

/dev/fd0  /floppy  vfat  defaults,user,noauto,showexec,umask=022  0  0

SUSE LINUX 9.1

/dev/fd0     /media/floppy     subfs   fs=floppyfss,procuid,nodev,no,sync 0 0

Huomaa erityisesti optio noauto, koska muuten levyke yritettäisiin liittää automaattisesti joka käynnistyksen yhteydessä ja sehän on huono idea - etenkin jos asemassa ei ole levykettä! Myös user on tärkeä, koska muuten tavalliselle käyttäjälle ei anneta oikeutta liittää eli 'mountata' levykettä.

Lindows ja SUSE käyttää myös sync-määritettä, jolloin levyke synkronoidaan automaattisesti välimuistin kanssa eli tieto kirjoitetaan välittömästi levykkeelle eikä se jää välimuistiin. Yleensä välimuisti tyhjennetään ja tieto kirjoitetaan levykkeelle vasta levykkeen irrotuksen (umount) yhteydessä ja jos se jää tekemättä, tieto saattaa kadota bittiavaruuteen :-/

SUSEssa on myös nosuid-optio käytössä, joka tarkoittaa, että SUID-ohjelmia (Set User ID, Substitute User ID) ei voi ajaa suid-oikeuksin. Ohjelman omistaja voi sallia ohjelmansa käytön muille omilla oikeuksillaan, jolloin ohjelmaa kutsutaan SUID-ohjelmaksi.

Muista siis ajaa umount-komento ennen kuin poistat levykkeen asemasta, jos sync-määrettä ei ole fstabissa levykeasemarivillä!

Voit poistaa SUSEn submount-tiedostojärjestelmän (subfs) käytöstä ja vaihtaa sen normaalin kommentoimalla alkuperäisen rivin pois ja lisäämällä /etc/fstab-tiedostoon uuden rivin seuraavasti:

# /dev/fd0     /media/floppy     subfs   fs=floppyfss,procuid,nodev,nosuid,sync 0 0
/dev/fd0     /media/floppy     auto    noauto,user,exec,sync        0 0

Vertaa oman fstab-tiedostosi levyke-osiota edelliseen ja kotitehtäväksi jääköön ottaa selvää, mitä muut määreet tarkoittavat. Lisätietoa saat man-sivuilta man fstab ja man mount. Ja itseopiskelussa muista, että Google on aina ystäväsi :)

Ja ettei nyt tärkein asia unohtuisi, niin lisää user,noauto fstabiin levykeosio-riville, jos ne puuttuvat sieltä, koska silloin levykettä ei liitetä käynnistyksen yhteydessä (noauto) ja käyttäjä (user) voi mountata levykkeen yksinkertaisesti mount /floppy ja irrottaa levykkeen lyhyesti umount /floppy - tai miksipäs ei vaikkapa mount /korppu, jos olet tehnyt sen nimisen hakemiston ja pannut sen fstabiin levyke-osion nimeksi! Itse käytän kyllä 'virallista' mount /dev/fd0, jota suosittelen muidenkin käytettäväksi, koska se on kaikissa Linuxeissa oletuksena eikä koneelta toiselle vaihtaessa tarvitse miettiä, mitä siellä fstabissa nyt lukikaan juuri tässä koneessa.

Voit myös käyttää user tilalla users, joka antaa kaikille käyttäjille oikeuden levykkeen liittämiseen (mount) ja irrottamiseen (umount). Users on oikeastaan suositeltavampi, koska jos tavallinen käyttäjä jättää esim. CD-levyn asemaan eikä ole irrottanut sitä, niin pelkällä user-asetuksella asema olisi lukittu eikä toiset käyttäjät saisi sitä pois vaan ainoastaan user itse, joka on sen liittänyt, tai root.

Muista aina testata fstabin oikeellisuus mount -a muutoksien jälkeen (ilmoittaa mahdolliset virheet ja liittää fstabissa olevat laitteet) ettei seuraavan käynnistyksen yhteydessä tule ikäviä yllätyksiä.

Joskus saatat törmätä ilmoitukseen mount: fs type supermount not supported by kernel (kuten vaikkapa itselläni kävi itse käännetyn kernelin kanssa, jossa ei ole tukea supermountille):

root@abc:~# mount /floppy
mount: fs type supermount not supported by kernel

Ratkaisu on yksinkertaisesti liittää levyasema käyttäen pitkää muotoa, jonka jälkeen 'mount /floppy' toimii:

root@abc:~# mount -t vfat /dev/fd0 /floppy

Tietysti supermount kannattaa myös poistaa /etc/fstab-tiedostosta, jolloin virheilmoituksia ei vastaisuudessa tule.

CD-aseman liittäminen

CD-aseman liittäminenCd-asema liitetään hakemistojärjestelmään mount-komennolla samalla tavalla kuin diskettiasema ja kiintolevyn osiot:

$ mount /mnt/cdrom

Useissa jakeluissa on lisäksi tehty symbolinen linkki /mnt/cdrom-hakemistosta /cdrom-hakemistoon:

ln -s /mnt/cdrom /cdrom

jolloin liittäminen onnistuu myös:

$ mount /cdrom

Jos cd-asemaa ei ole mainittu /etc/fstab-tiedostossa, pitää käyttää pitkää muotoa (vain root), jossa kerrotaan, mikä laite liitetään ja miten:

# mount -t iso9660 /dev/hdc /mnt/cdrom

Seuraava virheilmoitus osoittaa selvästi, mistä on kysymys:

root@abc:~# mount /dev/hdc
mount: can't find /dev/hdc in /etc/fstab or /etc/mtab

Yritetäänpä liittämistä uudelleen käyttäen pitkää muotoa:

root@abc:~# mount -t iso9660 /dev/hdc /mnt/cdrom
mount: block device /dev/hdc is write-protected, mounting read-only
root@abc:~# umount /dev/hdc

CD-levyn saa pois päinvastaisella umount-komennolla (älä yritä ottaa cd:tä ulos väkisin!). Asema ei saa olla varattuna tai muuten saat ilmoituksen 'device busy' eikä irrottaminen onnistu. Joskus Konqueror-selain KDE:ssä saattaa jättää aseman varatuksi vaikka CD:n mikään hakemisto ei enää olisikaan auki. Tarvittaessa voit katsoa, mikä prosessi käyttää CD-asemaa komennolla:

fuser -vum /mnt/cdrom

Voit myös käyttää irrottamiseen 'lazy umount' -optiota:

umount -l /mnt/cdrom

Hakemiston /mnt/cdrom pitää olla valmiiksi luotuna - liittämisen yhteydessä sitä ei tehdä. Yleensä distrot tekevät cd-asemille hakemiston /mnt-hakemiston alihakemistoiksi /mnt/cdrom ja /mnt/cdrom2 tai suoraan juurihakemiston alle /cdrom, mutta muitakin hakemistoja on käytössä - ainakin SuSE 8.1 käyttää /media-nimistä hakemistoa ja tekee alihakemistot sinne, esim. /media/cdrecorder polttavalle asemalle.

Cd-aseman tunnus on yleensä joko /dev/hdc tai /dev/hdd, koska CD-asema on kiinni ide-ohjaimen toisessa liitännässä, ensimmäisessähän on normaalisti kiintolevy(t).

Polttava asema näkyy kuitenkin 2.4-sarjan kerneleillä scsi-laitteena, esim. /dev/scd0 ja aseman vaihto scsi-laitteeksi tehdään käynnistyslataajan parametrilla hdc=ide-scsi (CD-asema tässä /dev/hdc), jos sitä ei ole jo ytimessä (kernelissä) valmiina. Onneksi asennusohjelma huolehtii yleensä tarvittavista asetuksista automaattisesti eikä niistä tarvitse itse huolehtia. 2.6-sarjan kernelissä ei scsi-emulointia enää tarvita ja jos käynnistyslataajassa on ko. parametrit, ne ohitetaan.

Ide-liitännän tunnukset:
1. master = /dev/hda
1. slave = /dev/hdb
2. master = /dev/hdc (yleensä 1. cd-asema)
2. slave = /dev/hdd (yleensä 2. cd-asema)

USB-muistitikun liittäminen

Usb-mustitikun liittäminenUsb-muistitikut näkyvät Linuxissa scsi-laitteina. Oletus on /dev/sda1, jos koneessa on ide-kiintolevy. Jos käytössä on scsi-kiintolevy, usb-laite näkyy /dev/sdb1 jne. Usb-muisteja voidaan käyttää kuten mitä tahansa muutakin levyasemaa. Usb-muistin mbr voidaan tyhjentää, luoda uusi mbr, luoda osioita, formatoida osiot jne. Itse kokeilemassani tikussa (SanDisk Cruzer Micro, 256 MB) ainoana rajoituksena on, että ensimmäisen osion pitää olla ensiöosio (primary partition).

Seuraavassa vielä malliksi tiedostojärjestelmien luominen muistitikulle, jolle on luotu cfdiskillä ensiöosio (/dev/sda1) ja looginen osio (/dev/sda5):

   sda1       Ensiö     FAT16       46,45
   sda5       Looginen  Linux ext3  209,02

Osioille on luotu tiedostojärjestelmät vfat ja ext3 seuraavasti:

root@ttyp0[knoppix]# mkfs.vfat /dev/sda1
mkfs.vfat 2.10 (22 Sep 2003)
root@ttyp0[knoppix]#
root@ttyp0[knoppix]# mke2fs -j /dev/sda5
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
51200 inodes, 204088 blocks
10204 blocks (5.00%) reserved for the super user
First data block=1
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
root@ttyp0[knoppix]#

Muistitikku on formatoitu oletuksena FAT-tiedostojärjestelmää käyttäen ja osio pitää liittää (mount) kuten muutkin osiot, jotta sitä voitaisiin käyttää, esim.:

mount -t vfat /dev/sda1 /mnt/sda1

Tarvittava tiedostojärjestelmä ja halutut optiot voidaan myös ilmoittaa valmiiksi /etc/fstab-tiedostossa:

/dev/sda1  /mnt/tikku  auto  noauto,users  0 0

Nyt muistitikun voi littää lyhyesti:

mount /dev/sda1

Swap-osion teko jälkeenpäin

Swap-osioSwap-osio on RAM-muistin jatke kiintolevyllä, joten sitä kutsutaan virtuaalimuistiksi (VM = Virtual Memory). Swap-osio tehdään yleensä Linuxin asennuksen yhteydessä ja sen kooksi suositellaan 2 x RAM-muistin määrää. Swap-osiota ei normaalissa työpöytäkäytössä kuitenkaan välttämättä tarvita lainkaan, jos keskusmuistia on yli 512 Mt.

Swap-osion voi myös tehdä jälkeenpäin (esimerkissä /dev/hda2), jolloin sille pitää tehdä ensin tiedostojärjestelmä mkswap-komennolla:

# mkswap /dev/hda2

Swap-osio otetaan käyttöön swapon-komennolla ja pois käytöstä swapoff-komennolla.

# swapon /dev/hda2
# swapoff /dev/hda2

Kaikki virtuaalimuisti otetaan pois käytöstä:

# swapoff -a

Swap-osio tulee pysyvästi käyttöön lisäämällä se /etc/fstab-tiedostoon:

/dev/hda2 none swap defaults 0 0

Aja fstab-tiedoston muokkauksen jälkeen mount -a, niin ei tarvitse käynnistää konetta uudelleen vaan muutokset tulevat heti käyttöön.

Swap-osion sijasta voidaan tehdä myös swap-tiedosto:

# Tee swap-tiedosto 128 Mt:
dd if=/dev/zero of=/swapfile bs=1048576 count=128 

# Muuta halutessasi swapfilen oikeuksia, esim. rw vain rootilla
chmod 600 /swapfile

# Tehdään tiedostojärjestelmä swap-tiedostolle
mkswap /swapfile

# Ajetaan sync-komento, jotta tiedosto varmasti otetaan käyttöön
sync

# otetaan swap-tiedosto käyttöön
swapon /swapfile

Käytössä olevan swap-muistin määrän näet free-komennolla.

Toisen koneen osion liittäminen

SambaVoit liittää myös toisen koneen osioita mount-komennolla käyttäen smbfs-tiedostojärjestelmää (tuki oltava kernelissä):

# mount -t smbfs -o username=tapsa,password=salasanasi //Vauhtihirmu/c /mnt/vauhtihirmu

Edellä on liitetty oman koneen /mnt/vauhtihirmu-hakemistoon toisen Vauhtihirmu-nimisen Windows-koneen c-asema. Verkkoaseman tunnuksena on käytettävä // (kaksi kauttaviivaa). Liitoskohdassa (//Vauhtihirmu/c) ei voi olla tyhjiä välilyöntejä.

Seuraavassa vielä pysyvä littäminen /etc/fstab-tiedostoon:

//Vauhtihirmu/c /mnt/vauhtihirmu smbfs defaults,username=tapsa,password=tähän_salasanasi 0 0 

Huomaa, että edellä Sambaa käytetään kaikkein yksinkertaisemmalla ja samalla myös tietoturvattomimmalla tavalla.

NFS-jakoMyös NFS-levyjaoissa on /etc/fstab-tiedostossa tieto siitä, mitkä tiedostojärjestelmät liitetään, mihin, ja millä optioilla. Seuraava esimerkki on man sivulta (man nfs) ja siitä ilmenee NFS-jaon periaate: palvelimen nimi ja hakemisto, paikallinen hakemisto (mount point), tiedostojärjestelmä ja nfs-tiedostojärjestelmän optiot:

server:/usr/local/pub    /pub   nfs    rsize=8192,wsize=8192,timeo=14,intr

fstab-rivin eri osien merkitys

Palataan vielä hetkeksi tutkimaan, mitä fstab-rivillä oikeastaan kerrotaan.

# filesystem  mountpoint  type  options  dump  pass

#      1.     2.   3.                          4. 5.6. 
/dev/hda1 /mnt/c vfat noauto,users,exec,umask=000 0 0
  1. fs_spec kuvaa lohkolaitteen (block special device)
  2. fs_file tiedostojärjestelmän liitospiste (mount point)
  3. fs_vfstype tiedostojärjestelmän tyyppi (type)
  4. fs_mntops optiot
  5. fs_freq tieto dump-komennolle, jos tarvitaan dump-varmistuksen ottoa: kyllä = 1; ei = 0
  6. fs_passno fsck-ohjelmalle tieto levyn tarkistamisesta käynnistyksen yhteydessä: root-osio = 1; muut osiot = 2; ei tarkistusta = 0
      The first field, (fs_spec),  describes  the  block  special  device  or
       remote filesystem to be mounted.

       For  ordinary  mounts  it  will hold (a link to) a block special device
       node (as created by mknod(8))  for  the  device  to  be  mounted,  like
       `/dev/cdrom'   or   `/dev/sdb7'.    For   NFS   mounts  one  will  have
       <host>:<dir>, e.g., `knuth.aeb.nl:/'.  For procfs, use `proc'.

       Instead of giving the device explicitly, one may indicate the (ext2  or
       xfs)  filesystem that is to be mounted by its UUID or volume label (cf.
       e2label(8) or  xfs_admin(8)),  writing  LABEL=<label>  or  UUID=<uuid>,
       e.g.,   `LABEL=Boot'   or  `UUID=3e6be9de-8139-11d1-9106-a43f08d823a6'.
       This will make the system more robust: adding or removing a  SCSI  disk
       changes the disk device name but not the filesystem volume label.

       The second field, (fs_file), describes the mount point for the filesys-
       tem.  For swap partitions, this field should be specified as `none'. If
       the  name  of  the  mount point contains spaces these can be escaped as
       `\040'.

       The third field, (fs_vfstype), describes the type  of  the  filesystem.
       Linux  supports  lots  of filesystem types, such as adfs, affs, autofs,
       coda, coherent, cramfs, devpts, efs, ext2, ext3,  hfs,  hpfs,  iso9660,
       jfs,  minix,  msdos,  ncpfs,  nfs,  ntfs,  proc, qnx4, reiserfs, romfs,
       smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix,  xfs,  and  possibly
       others.  For more details, see mount(8).  For the filesystems currently
       supported by the running kernel, see /proc/filesystems.  An entry  swap
       denotes a file or partition to be used for swapping, cf. swapon(8).  An
       entry ignore causes the line to be ignored.  This  is  useful  to  show
       disk partitions which are currently unused.

       The  fourth  field, (fs_mntops), describes the mount options associated
       with the filesystem.

       It is formatted as a comma separated list of options.  It  contains  at
       least  the type of mount plus any additional options appropriate to the
       filesystem type.  For documentation on the available options  for  non-
       nfs  file systems, see mount(8).  For documentation on all nfs-specific
       options have a look at nfs(5).  Common for all types of file system are
       the options ``noauto'' (do not mount when "mount -a" is given, e.g., at
       boot time), ``user'' (allow a user  to  mount),  and  ``owner''  (allow
       device  owner to mount), and ``_netdev'' (device requires network to be
       available).  The ``owner'' and ``_netdev'' options are  Linux-specific.
       For more details, see mount(8).

       The  fifth  field,  (fs_freq),  is  used  for  these filesystems by the
       dump(8) command to determine which filesystems need to be  dumped.   If
       the  fifth  field  is not present, a value of zero is returned and dump
       will assume that the filesystem does not need to be dumped.

       The sixth field, (fs_passno), is used by the fsck(8) program to  deter-
       mine the order in which filesystem checks are done at reboot time.  The
       root filesystem should be specified with a fs_passno of  1,  and  other
       filesystems  should  have a fs_passno of 2.  Filesystems within a drive
       will be checked sequentially, but filesystems on different drives  will
       be  checked  at  the  same time to utilize parallelism available in the
       hardware.  If the sixth field is not present or zero, a value  of  zero
       is  returned  and fsck will assume that the filesystem does not need to
       be checked.

Tiedostojärjestelmät (fs_vfstype)

Kolmas kenttä fstab-rivillä on tiedostojärjestelmän tyyppi (fs_vfstype). Linux tukee useita tiedostojärjestelmätyyppejä:

       -t vfstype
              The argument following the -t is used to indicate the file sys-
              tem type.  The file system types which are currently  supported
              are:  adfs,  affs, autofs, coda, coherent, cramfs, devpts, efs,
              ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos,  ncpfs,
              nfs,  ntfs,  proc,  qnx4,  reiserfs, romfs, smbfs, sysv, tmpfs,
              udf, ufs, umsdos, vfat, xenix, xfs, xiafs.  Note that coherent,
              sysv  and xenix are equivalent and that xenix and coherent will
              be removed at some point in the future  --  use  sysv  instead.
              Since  kernel  version  2.1.21  the  types ext and xiafs do not
              exist anymore.

Valitsin -t tarvitaan edeltämään annettavaa tiedostojärjestelmää, jos laite liitetään väliaikaisesti tekemättä muutoksia /etc/fstab-tiedostoon. Seuraavassa ide-levyn ensimmäinen osio liitetään liitospisteeseen /mnt/c käyttäen Windowsin liittämiseen tarvittavaa vfat-tiedostojärjestelmää:

mount -t vfat /dev/hda1 /mnt/c    

Kernelin tunnistamat tiedostojärjestelmät (file systems) näet cat /proc/filesystems (uudelleenohjataan tulostus näytöltä filesystems-nimiseen tiedostoon rootin kotihakemistoon):

root@abc:~# cat /proc/filesystems > ~/filesystems

nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev futexfs
nodev tmpfs
nodev pipefs
nodev eventpollfs
nodev devpts
  ext2
nodev ramfs
nodev hugetlbfs
  vfat
  iso9660
nodev mqueue
nodev selinuxfs
nodev usbfs
nodev usbdevfs
  ext3
  hpfs
nodev autofs

Edellinen tulostus on Knoppix 3.7:n live-CD:ltä (kerneli 2.6.7) omalta koneeltani. Joskus tuki tarvittavalle tiedostojärjestelmälle on jätetty kernelistä pois, jolloin kerneli on käännettävä itse ja lisättävä tuki ko. tiedostojärjestelmälle. Itselläni kävi näin Red Hatin kanssa, joka ei tunnistanut OS/2:n hpfs-tiedostojärjestelmää.

Liitosoptiot (fs_mntops)

Neljäs kenttä fstab-rivillä on liitosoptiot (fs_mntops).

Seuraavassa on lueteltu muutamia yleisimpiä optioita:

Kiinnitä edellä huomota etenkin defaults ja user-optioihin, jotka ovat osittain toisensa poissulkevia. Jos /etc/fstab-tiedostossa on esim. rivi:

/dev/hda1 /mnt/windows vfat defaults 0 0

user-option lisääminen (defaults,user) poistaisi ohjelmien ajo-oikeuden (noexec), joka kuitenkin on defaults-optiossa oletuksena mukana (exec).

Usein on kuitenkin hyödyllistä antaa myös tavalliselle käyttäjälle oikeuksia liittämiseen ja ohjelmien suorittamiseen Windows-osiolta, jolloin seuraava /etc/fstab-tiedoston rivi voisi olla käyttökelpoinen:

/dev/hda1 /mnt/windows vfat auto,users,exec,umask=000 0 0

Katso lisätietoa optioista man mount.

Iso-tiedoston sisällön katsominen Linuxissa

Iso-loppuisen image-tiedoston sisällön (esimerkissä boot.iso-niminen tiedosto) näet Linuxissa kuten minkä tahansa muunkin laitteen mount-komennolla liittämällä sen jonnekin, esim. /mnt-hakemistoon:

# mount -o loop boot.iso /mnt

Voit myös käyttää '# mount -t auto -o loop boot.iso /mnt'.

Tavallisen /mnt-hakemiston sisällön saat näkyviin taas:

# umount boot.iso /mnt

Huomaa, että kernelissä täytyy olla tuki loop-laitteelle tai saat seuraavan virheilmoituksen:

# mount -o loop /boot.iso /mnt
mount: Could not find any loop device. Maybe this kernel does not know
       about the loop device? (If so, recompile or `modprobe loop'), or
       maybe /dev/loop# has the wrong major number?

iso-imagen teko mkisofs-ohjelmalla

Iso-imaget tehdään mkisofs-ohjelmalla (MaKe ISO File System). Tehdään seuraavassa esimerkissä /etc-hakemistosta iso-tiedosto, joka poltetaan sitten myöhemmin CD-RW:lle:

root@abc:~# mkisofs -R -J -o /home/tapsa/etc.iso /etc

Edellä -R tarkoittaa Linuxin Rock Ridge -laajennoksia ja -J tarkoittaa Joliet-laajennuksia, joita tarvitaan, jos levyä halutaan lukea Windowsissa. Iso-tiedoston teko ja poltto CD:lle on kätevä tapa tehdä backup tarpeellisista hakemistoista (asetukset, kotihakemisto ym.).

Tyhjennetään seuraavaksi käytetty CD-RW-levy:

root@abc:~# cdrecord blank=fast dev=/dev/hdc

Poltetaan CD (käytössä 2.6-sarjan kerneli):

root@abc:~# cdrecord -v speed=4 dev=/dev/hdc /home/tapsa/etc.iso

Tarpeellista tietoa ohjelman käytöstä löytyy mm. CD-Writing HOWTO -sivulta http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html ja IBM:n sivulta Burning CDs on Linux.

Vielä malliksi iso-imagen poltto CD:ksi koneessa, jossa on 2.4-sarjan kerneli:
$ cdrecord -v -eject speed=4 dev=0,0,0 tiedosto.iso

mount, mtab, mounts, fstab?

Hakemistopuuhun liitetyt laitteet näet pelkällä mount-komennolla:

tapsa@abc:~$ mount
/dev/hdb5 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
sysfs on /sys type sysfs (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
automount(pid1386) on /mnt/auto type autofs (rw,fd=5,pgrp=1386,minproto=2,maxproto=4)

Mikä sitten on /etc/mtab-tiedosto? Tiedosto mtab listaa tällä hetkellä liitetyt laitteet eli aktiivisena olevat osiot. Mtab päivittyy automaattisesti aina kun mount-komentoa käytetään. Huomaa, että muutokset liitoksissa pitää aina tehdä /etc/fstab-tiedostoon - ei mtabiin!

tapsa@abc:~$ cat /etc/mtab
/dev/hdb5 / ext3 rw,errors=remount-ro 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
sysfs /sys sysfs rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
automount(pid1386) /mnt/auto autofs rw,fd=5,pgrp=1386,minproto=2,maxproto=4 0 0

Voit myös hakea tiedot liitetyistä tiedostojärjestelmistä suoraan kerneliltä cat /proc/mounts. Proc-hakemistoa ei ole 'oikeasti' olemassa kiintolevyllä vaan se on kernelin muistiin luoma virtuaalitiedosto.

tapsa@abc:~$ cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext2 rw 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw 0 0
sysfs /sys sysfs rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
automount(pid1386) /mnt/auto autofs rw 0 0

Seuraavassa on malli fstab-tiedostosta, jossa mainitut osiot liitetään automaattisesti käynnistyksen yhteydessä:

tapsa@abc:~$ cat /etc/fstab
# /etc/fstab: filesystem table.
#
# filesystem  mountpoint  type  options  dump  pass
/dev/hdb5  /  ext3  defaults,errors=remount-ro  0  1

proc  /proc  proc  defaults  0  0
/dev/fd0  /floppy  vfat  defaults,user,noauto,showexec,umask=022  0  0
usbdevfs  /proc/bus/usb  usbdevfs  defaults  0  0
sysfs  /sys  sysfs  defaults  0  0
/dev/dvd /dvd  iso9660  defaults,ro,user,noexec,noauto  0  0
/dev/cdaudio /cdaudio  iso9660  defaults,ro,user,noexec,noauto  0  0
  
# Added by KNOPPIX
/dev/hdb1 none swap defaults 0 0
tapsa@abc:~$

remount

Jos käynnistät Linuxin Grubista (tai Lilosta) single user -tilaan boot: linux single tai:

boot: linux 1

saatat joutua liittämään juuriosion uudelleen, koska tiedostojärjestelmä on kirjoitussuojattu (read-only - vain lukuoikeus):

mount -o remount,rw /

fsck

Väliviiva_konsoli

Komentoa fsck käytetään tiedostojärjestelmien (file systems) tarkistamiseen ja korjaamiseen. Tiedostojärjestelmä voi olla mm. osio (esim. /dev/hdb1) tai liitospiste (esim. / tai /home). Jos tiedostojärjestelmää ei anneta, niin fsck käy läpi /etc/fstab-tiedostossa olevat tiedostojärjestelmät.

Nykyisillä journaloivilla tiedostojärjestelmillä (esim. ext3) ei tarkistusta enää välttämättä tarvita, koska tiedostojärjestelmä pitää itse kirjaa siitä, mihin kohtaa levyä se aikoo seuraavaksi kirjoittaa, ja jos kirjaaminen ei onnistu (esim. sähkökatkos), kirjoitustapahtuma vain yksinkertaisesti hylätään seuraavan käynnistyksen yhteydessä.

Oikeastaan komento fsck on vain apuohjelma (frontend) erilaisille tiedostojärjestelmien tarkistusohjelmille, jotka löytyvät /sbin-hakemistosta Tarkistusohjelmia ei tarvitse erikseen käynnistää, koska fsck käynnistää ohjelman automaattisesti. Seuraavassa on luettelo omasta koneestani löytyvistä tarkistusohjelmista:

root@abc:~# ls /sbin/fsck*
/sbin/fsck         /sbin/fsck.ext3   /sbin/fsck.msdos     /sbin/fsck.vfat
/sbin/fsck.cramfs  /sbin/fsck.jfs    /sbin/fsck.nfs       /sbin/fsck.xfs
/sbin/fsck.ext2    /sbin/fsck.minix  /sbin/fsck.reiserfs
root@abc:~#

Huomaa, että tiedostojärjestelmä, joka aiotaan tarkistaa, ei saa olla liitettynä (irrota se umount-komennolla):

root@abc:~# fsck
fsck 1.35 (28-Feb-2004)
e2fsck 1.35 (28-Feb-2004)
/dev/hdb5 is mounted.

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Turvallisinta on käynnistää Linux Grubista (tai Lilosta) single user -tilaan boot: linux single. Tuossa linuxin tilalla pitää tietysti olla se label, jolla käynnistät linuxin normaalistikin mutta pelkkä 'linux' on yleensä oletuksena asennuksen jälkeen. Single user -tilaan pääset myös lisäämällä ykkösen (1) labelin jälkeen välilyönnillä erotuttuna boot: linux 1.

Fsck-komennolle voidaan antaa myös optioita, joista ainakin -a ja -V ovat harkinnan arvoisia normaalikäytössä:

       -a     Automatically repair the file system without any questions  (use
              this  option with caution).  Note that e2fsck(8) supports -a for
              backwards compatibility only.  This option is mapped to e2fsck's
              -p  option  which is safe to use, unlike the -a option that some
              file system checkers support.

      -V     Produce  verbose output, including all file system-specific com-
              mands that are executed.
root@abc:~# fsck -aV /dev/hdb5

Joskus fsck:n ajo ei onnistu levyn vioittuneen superlohkon takia:

fsck.ext2: Bad magic number in super-block while trying to open /dev/hdb5: 

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

Ratkaisu on ajaa e2fsck -b-optiolla, joka palauttaa levyn ensimmäisen lohkon (superblock) varmuuskopion. Huomaa kuitenkin, että varmuuskopion paikka vaihtelee tiedostojärjestelmän lohkokoon mukaan. Lohkokoko (blocksize) 8193 on vain esimerkki ja pätee 1k lohkokoolla mutta nykyisin on käytössä 4k lohkokoko, joten arvo on silloin 32768, man 2sfsck:

       -b superblock
              Instead of using  the  normal  superblock,  use  an
              alternative  superblock  specified  by  superblock.
              This option  is  normally  used  when  the  primary
              superblock has been corrupted.  The location of the
              backup superblock is dependent on the  filesystem's
              blocksize.   For  filesystems with 1k blocksizes, a
              backup superblock can be found at block  8193;  for
              filesystems with 2k blocksizes, at block 16384; and
              for 4k blocksizes, at block 32768.

Superlohkon palautus onnistuu siis seuraavasti hdb5:lle:

e2fsck -b 32768 /dev/hdb5

Tiedostojärjestelmän tarkistus voidaan myös suorittaa käynnistyksen yhteydessä muuttamalla /etc/fstab-tiedostossa olevien rivien viimeinen numero eli kuudes kenttä (fs_passno) nollasta ykköseksi tai kakkoseksi. Ja tietysti päinvastoin saat tarkistuksen pois muuttamalla viimeiseksi numeroksi nollan. Fsck-ohjelma saa tiedon levyn tarkistamisesta käynnistyksen yhteydessä seuraavasti:

Tarkista muutoksien jälkeen fstab-tiedoston oikeellisuus:

root@abc:~# mount -a

ext3:n luonti ja korjaus fsck:llä

Vanhemman ext2-tiedostojärjestelmän voi vaihtaa jälkeenpäin ext3:ksi seuraavasti:

tune2fs -j /dev/hdXX

No miten ext3-osio sitten tehdään jälkeenpäin?

mke2fs -j /dev/hdXX

Edellä -j -valitsin osoittaa, että kyse on ext3-järjestelmästä, joka on journaloitu ext2-tiedostojärjestelmä! Katso lisätietoa tiedostojärjestelmien luonnista 'Alphabetical Directory of Linux Commands' -oppaasta mke2fs (= mkfs.ext2) ja mkfs

Vioittuneen ext3-tiedostojärjestelmän voi korjata seuraavasti:

e2fsck -fy /dev/hdXX

man-sivut

Väliviiva_konsoli

Käsikirja (manuaali)Linuxin asennuksen yhteydessä asennetaan myös Linuxin manuaali eli käsikirja, jota voi tutkia man-komennolla (man - an interface to the on-line reference manuals) antamalla sen perään halutun komennon nimen, esim. man fstab.

Man-sivut löytyvät /usr/share/man-hakemiston alihakemistoista ja sivuja on yhdeksän (man1 - man9) seuraavan jaottelun mukaan:

       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages and conven-
           tions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]

Ohjeet ovat oletuksena englantia mutta myös suomenkielisiä ohjeita on ja ne löytyvät (jos on asennettu) fi-alihakemistosta (/usr/share/man/fi).

Man-sivut on pakattu gzip-ohjelmalla (pääte .gz) tilankäytön minimoimiseksi ja lukemisessa käytetään apuna less-ohjelmaa, jolla manuaaleja voi lukea sivu kerrallaan (nuolinäppäimillä ja PageUp - PageDown). Sivuilta voi etsiä tekstiä /-kirjaimella (kauttaviiva). Man-sivujen lukeminen lopetetaan q-kirjaimella.

Konsolissa ja virtuaalikonsolissa käytettävän man-komennon lisäksi sivuja voi tutkia myös X:ssä (hiiren oikea näppäin ja Työpöydän ohje).

Jos komennon tarkkaa nimeä ei muisteta, voidaan etsimisessä käyttää apuna k-optiota (k = keyword), esim. man -k fstab. Myös apropos-komento (apropos - search the manual page names and descriptions) on suosittu ja sitä käytetään omana komentonaan, esim. apropos fstab. Kokeile molempia tapoja, niin huomaat, että saat saman tulosteen. Jos tutkit seuraavaa man-komennon ohjetta, niin huomaat, että man-komento k-valitsemen kanssa on vastaava kuin apropos, jota siis voi käyttää myös omana komentonaan.

usage: man [-c|-f|-k|-w|-tZT device] [-i|-I] [-adlhu7V] [-Mpath] [-Ppager]
           [-Cfile] [-Slist] [-msystem] [-pstring] [-Llocale] [-eextension]
           [section] page ...
-a, --all                   find all matching manual pages.
-d, --debug                 emit debugging messages.
-e, --extension             limit search to extension type `extension'.
-f, --whatis                equivalent to whatis.
-k, --apropos               equivalent to apropos.
-w, --where, --location     print physical location of man page(s).
-W, --where-cat,
    --location-cat          print physical location of cat file(s).
-l, --local-file            interpret `page' argument(s) as local filename(s).
-u, --update                force a cache consistency check.
-i, --ignore-case           look for pages case-insensitively (default).
-I, --match-case            look for pages case-sensitively.
-r, --prompt string         provide the `less' pager with a prompt
-c, --catman                used by catman to reformat out of date cat pages.
-7, --ascii                 display ASCII translation of certain latin1 chars.
-E, --encoding encoding     use the selected nroff device and display in pager.
-t, --troff                 use groff to format pages.
-T, --troff-device device   use groff with selected device.
-H, --html                  use lynx or argument to display html output.
-Z, --ditroff               use groff and force it to produce ditroff.
-X, --gxditview             use groff and display through gditview (X11):
                            -X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12.
-D, --default               reset all options to their default values.
-C, --config-file file      use this user configuration file.
-M, --manpath path          set search path for manual pages to `path'.
-P, --pager pager           use program `pager' to display output.
-S, --sections list         use colon separated section list.
-m, --systems system        search for man pages from other unix system(s).
-L, --locale locale         define the locale for this particular man search.
-p, --preprocessor string   string indicates which preprocessors to run.
                             e - [n]eqn   p - pic    t - tbl
                             g - grap     r - refer  v - vgrind
-V, --version               show version.
-h, --help                  show this usage message.

Lisätietoa man-komennosta saat man man.

Kovat ja 'pehmeät' linkit

Väliviiva_konsoli

Linuxissa linkit tehdään ln-komennolla ja ne voivat olla joko kovia linkkejä (hard link) tai symbolisi