Linux – Shell enzo… deel 6
Welkom terug bij het 6e deel van āLinux ā Shell Enzoā. Leuk dat je er nog steeds bij bent en deze maandelijkse blog nog steeds volgt. Vandaag gaan we verder met een aantal hele belangrijke zaken. Namelijk āmountenā, en bekijken we diverse disk en netwerk commandoās. Tenslotte kijken we nog even naar Linux services en processen.
We bijten de spits af met āmountenā.
Mounten
Mounten is een anglicistische term, wat feitelijk betekend dat de term geleend is uit het āEngelsā maar niet goed te vertalen is. Mounten zou afkomstig kunnen zijn van de Engelse term āMountingā wat āmonterenā betekend maar beter vertaald kan worden naar ākoppelenā. Met mounten bedoelen we het aankoppelen van opslagmedia (of digitale opslag zoals een ISO bestand) op een besturingssysteem (in dit geval Linux).
Het mounting proces in Windows is vaak automatisch en is ook in Linux steeds meer geautomatiseerd. USB schijf inpluggen en āhoppaā hij is beschikbaar (hij is gemount).
Om te kunnen mounten moet het systeem beschikken over een āmount pointā. Dit āmount pointā is feitelijk een voor gedefinieerde directory waarop het apparaat kan worden gemount. Deze directory kan inhoud bevatten maar deze inhoud is niet meer zichtbaar zodra er een device gemount is op deze directory. Na het mounten is namelijk de inhoud van het apparaat zichtbaar. Na het unmounten (apparaat loskoppelen en verbinding verbreken) wordt vervolgens de originele inhoudt weer beschikbaar.
Alle mount points (behalve de swapspace, ofwel de diskspace die gereserveerd is voor processing taken als het fysieke RAM vol zit) zijn gespecificeerd in het bestand ā/etc/fstabā. Zo zien we op onderstaande voorbeeld dat device āsr0ā (de eerste SCSI CD-Rom) gemount is in de directory (mount point) ā/media/cdrom0ā.
Een korte intro in device naming in Linux:
fd
De āfdā afkorting staat voor floppy disk en is dus de benaming voor een floppy disk apparaat. āfd0ā is het eerste floppy disk apparaat, āfd1ā de 2e etc.
sda
SD staat voor āSCSI Deviceā. Deze afkorting is nog afkomstig uit het begin tijdperk. Tegenwoordig is SD de Linux afkorting voor alle data dragende apparaten (block devices) die geen andere toekenning hebben binnen het linux systeem. Het eerste SD apparaat wordt aangegeven met een A (sda) en het tweede SD apparaat met een B (sdb)ā¦etc. Daarnaast kunnen deze apparaten ook nog bestaan uit verschillende partities. Deze worden aangegeven met een cijfer. De 3e partitie op het eerste SD apparaat (de eerste hard drive) wordt dan aangegeven als āsda3ā.
hdd
De āhddā term refereert naar een IDE Block Device (ofwel een IDE hard disk). Deze komen we tegenwoordig niet zoveel meer tegen. De eerste IDE disk wordt aangeduid als āhdaā en de 3e als āhdcā etc. De hda is meestal de master drive op de eerste IDE controller en de hdd is meestal de slave op de 2e IDE controller.
scd / sr
De oudere term āsrā gaf de SCSI CD-Rom apparaten aan. De meeste Linux distributies gebruiken tegenwoordig de logischere term āscdā welke staat voor āScsi CD-rom. De eerste CD-Rom drive die gevonden wordt is sr0/scd0 en de tweede is sr1/scd1 etc.
Stel je voor dat we een nieuw apparaat (in dit voorbeeld een nieuwe SCSI HD slave ā sdb) willen mounten (en Linux deze niet automatisch herkent) dan hanteren we de volgende werkwijze.
1. Sluit de hdd aan als secondary drive op de 1e SCSI controller. Linux maakt hier dan hdb van omdat de hdd de 2e SCSI hdd is welke op deze controller gevonden wordt.
2. De drive is leeg en we willen een extra partitie aanmaken. Dit doen we met het āfdiskā commando. Allereerst zorgen we ervoor dat we op de juiste hdd aan het werken zijn. Voer het volgende commando uit:
fdisk /dev/hdb |
Vervolgens krijgen we een aantal opties, waaronder:
- a
De āaā flag zet de ābootable flagā op deze disk / partitie - b
De ābā flag geeft je de optie om de schijf / partitie te labelen - d
De ādā flag verwijderd een partitie - l
De ālā flag geeft een overzicht van alle aanwezige partities - n
De ānā flag laat je een nieuwe partitie toevoegen - v
De āvā flag geeft je de optie om de partitietabel te verifieren - w
De āwā flag schrijft de aangepaste partitietabel naar de schijf (en sluit fdisk) - 0 ā No errors
- 1 ā Filesystem errors corrected
- 2 ā System should be rebooted
- 4 ā Filesystem errors left uncorrected
- 8 ā Operational error
- 16 ā Usage or syntax error
- 32 ā Fsck canceled by user request
- 128 ā Shared-library error
- eth: dit staat voor āethernetā ofwel een netwerkkaart met een bekabelde interface.
- wlan: dit staat voor āWireless LANā ofwel een netwerkkaart met een draadloze interface.
- lo: dit staat voor āloopbackā. De loopback interface is een virtuele netwerkinterface die Linux gebruikt om met zichzelf te communiceren. De āloā interface wordt vooral gebruikt voor troubleshooting en diagnostische doeleinden.
Wij willen op deze lege schijf een nieuwe partitie maken en kiezen dus voor:
n |
Vervolgens kiezen we een āextendedā partitie omdat we alleen data op willen slaan.
e |
Voer het partitienummer in. Hier hanteren we gewoon 1 omdat het de eerste extended partitie is:
1 |
We willen de partitie vervolgens formatteren met een bestandssysteem (NTFS / FAT / EXT). In dit geval āext3ā. Om dit te doen gebruiken we het volgende commando:
mkfs āt ext3 /dev/hdb1 |
Nu maken we een mount point aan voor deze schijf. Het mount point willen we plaatsen in de root van de schijf en noemen we ādatadisk1ā. We maken hiervoor eerst een nieuwe directory:
mkdir /datadisk1 |
Vervolgens mounten we de schijf naar zijn mount point toe en maken deze toegankelijk vanuit het actieve Linux systeem.
mount āt ext3 /dev/hdb1 /datadisk1 |
En tenslotte voegen we deze nieuwe schijf toe aan het āfstabā bestand zodat de schijf automatisch gemount wordt tijdens het booten van Linux. Open hiervoor het /etc/fstab bestand en voeg de volgende regel toe:
filesystem: /dev/hdb1 mount point: /datadisk1 type: ext3 options: defaults dump: 1 pass: 2 Dus: /dev/hdb1 /datadisk1 ext3 defaults 1 2 |
Als we ādumpā op 1 zetten dan betekend dit dat deze partitie ook gebackupped wordt wanneer het ādumpā commando gebruikt wordt. Als je dit niet wilt dan kun je deze waarde op 0 zetten. De pass waarde hebben we hier op 2 gezet. Dit betekend dat deze disk de 2e disk is welke het fsck commando controleert. De waarde ā1ā wordt altijd aan de partitie gegeven waar het primaire systeem op draait. Elke vervolgdisk mag waarde 2 of hoger hebben. Hoe hoger de waarde des te later in de volgorde dat de disk gecontroleerd wordt. Als disks eenzelfde ordernummer hebben dan bepaald het fsck commando zelf de volgorde.
Bovenstaande volgorde is omslachtig omdat dit ook het partitioneren van een nieuwe hdd omvat. Een CR-Rom drive mappen is een stuk sneller. In het kort is dit een mount point aanmaken, de juiste drivice naming opzoeken (āfdisk -lā – of ā/proc/partitionsā) en mounten naar het mount point.
Nu we zo lekker aan het mounten zijn en ook het fdisk commando al aangeraakt hebben gaan we lekker even door met nog meer disk commandoās:
Disk Commandoās
Zoals we al in het vorige hoofdstuk hebben gezien kunnen we heel veel met āfdiskā. Zo kunnen we partities bekijken, maken, bootable maken en verwijderen. Hieronder nog een voorbeeldje van een nieuwe SWAP partitie maken met fdisk. Deze partitie wordt 5GB groot.
fdisk /dev/hdb n l +5G De nieuwe partitie is nu een default Linux partitie. We moeten dus het type veranderen. Dit doen we als volgt: t (voer hex code in van het nieuwe type of zoek de hex code op via de āLā optie. Deze is:)82 |
Het āmkfsā ofwel āMaKe FileSystemā commando gebruiken we voor het formatteren van disks. Dit werkt als volgt:
sudo mkfs.ext4 /dev/sda5 |
Voor het labelen van disks / partities zijn diverse commandoās aanwezig. Het commando dat gebruikt moet worden is afhankelijk van het aanwezige bestandssysteem. Hieronder een kort overzicht:
ext2, ext3, ext4:
Comando: e2label
Voorbeeld:
/sbin/e2label /dev/sda5 LABEL |
NTFS
Comando: ntfslabel
Voorbeeld:
ntfslabel /dev/sda5 LABEL |
FAT(32):
Comando: mlabel
!Let op: om “mlabel” te gebruiken moet “mtools” geinstalleerd worden
Voorbeeld:
mlabel -i /dev/sda5 ::LABEL |
Naast āfdiskā zijn er in Linux uiteraard ook grafische tools. āDisksā ofwel āGnome partition editorā is een grafische partitie editor welke geĆÆnstalleerd is op vrijwel alle Ubuntu distributies die gebruik maken van Gnome. Disks is de grafische variant van āfdiskā. Er zijn meer grafische partitiemanagers zoals QtParted en GParted. GParted is de grafische variant van de āPartedā CLI tool.
Parted selecteert standaard de āprimary partitionā als default partitie. Om Parted te starten, te kijken welke versie van āPartedā uw distributie draait en welke disk momenteel gebruikt wordt door Parted wordt gebruikt voer je het volgende commando uit:
parted |
Om een andere partitie te kiezen gebruik je het commando:
select /dev/sdb |
Alle partities laten zien welkt met het volgende āprintā commando:
print |
Een partitie aanmaken doe je met het āmkpartā commando. Een primary partitie maak je als volgt aan:
mkpart primary 0.0 15360 |
Het bovenstaande commando maakt de partitie van 0 MB (begin van de disk) tot 15360 MB (15GB) op de disk. Om de bootable flag te plaatsen moeten we weten welk nummer de partitie heeft die we zojuist aangemaakt hebben. Hiervoor gebruik je gewoon het āprintā commando. Als het nummer van de primary disk 1 is dan gebruiken we:
set 1 boot on |
Een logische partitie maken gebeurt op eenzelfde manier:
mkpart logical 15361 30721 |
Net zoals bij fdisk hebben we ook āmkfsā nodig om de partitie te voorzien van een bestandssysteem. Echter kunnen we āmkfsā gebruiken binnenin de āPartedā tool. We hoeven Parted (in tegenstelling tot fdisk) dus niet af te sluiten. Om de partitie te voorzien van een bestandssysteem doen we:
mkfs
y
2
ext4 |
We roepen hierboven de āmkfsā tool op en geven akkoord op de voorwaarden. Vervolgens kiezen we partitie nummer 2 en geven we aan dat we deze willen formatteren als het āext4ā bestandssysteem.
Het mooie is dat we in Parted ook een partitie kunnen maken en deze meteen kunnen formatteren. Hiervoor gebruiken we het āmkpartfsā commando en dat doen we als volgt:
mkpartfs logical ext4 15361 30721 |
Met parted kunnen we ook gemakkelijk partities groter en kleiner maken. Dit doen we als volgt:
resize 2 |
Hierboven selecteren we partitie 2 om te resizen. Vervolgens geeft je het startpunt en het eindpunt op. Je kunt met dit commando dus ook partities verplaatsen.
Wil je nog geavanceerder te werk gaan dan kun je ook data van partitie A naar partitie B kopiƫren. Alvorens je dit doet moet je eerst beide partities unmounten:
umount /dev/sda |
Vervolgens gebruiken we het ācpā commando gevolgd door de partitie welke fungeert als data bron en de partitie die fungeert als data bestemming.
cp 2 3 |
Een partitie verwijderen doen we met het ārmā commando gevolgd door het nummer van de partitie:
rm 2 |
We kunnen zelfs een verloren partitie herstellen middels Parted als deze per ongeluk verwijderd is. Om dit te doen ga je als volgt te werkt:
unit s print rescue 63 305602123 |
Hierboven zetten we allereerst de units op āsā welke āsectorsā betekend zodat Parted de sectors van de bestaande partities weergeeft. Vervolgens gebruiken we āprintā om alle partities weer te geven en hun start en eind sectoren te noteren. Dan voeren we het ārescueā commando uit om verloren partities te herstellen. Dan geef je de start en eindsectors op van de partitie en de verloren partitie zal hersteld worden.
Uiteraard kunnen we ook nog andere commandoās uitvoeren om info over de HD te verkrijgen. Een veelgebruikt commando is ādfā. Het ādfā (ofwel āDisk Freeā) commando laat alle bezette en beschikbare ruimte zien van alle volumes. Df toont standaard zijn output in blokken. De hier onderstaande methode gebruiken we om de output in MB / GB te zien:
df -h |
Linux genereerd dagelijks, wekelijks en maandelijks diverse logbestanden. In sommige gevallen worden deze gewoon te groot en bezetten ze teveel schijfruimte. Om systeembeheerders te verlichten zijn er een aantal commandoās om effectief en snel om te gaan met deze logbestanden die de harde schijf vervuilen. Het ālogrotateā commando archiveert de logbestanden als %logfile%1ā bestand. Een nieuwe log zal dan worden aangemaakt en wij kunnen vervolgens de gearchiveerde bestanden netjes verwijderen.
Om ālogrotateā dagelijks te draaien maken we een CRON aan. Later meer over CRON bestanden. Deze CRON maken we als volgt aan:
sudo /etc/cron.daily/logrotate |
Om alle gearchiveerde logrotate bestanden te verwijderen voeren we het volgende commando uit:
find /var/log ātype f āregex ā.*\.[0-9]$ā ādelete |
Niet alle logs (zoals syslog en deamon.log) worden meteen opgeschoond. Deze worden pas na 7 dagen gearchiveerd. Om deze netjes te verwijderen (en opnieuw aan te maken) gebruik je het commando:
rm āv /var/log/syslog /var/log/daemon.log && /usr/sbin/logrotate āf /etc/logrotate.d/rsyslog |
Disk Maintenance
Windows systemen moeten regelmatig gedefragmenteerd worden. Defragmentatie betekend dat bestanden niet meer als geheel bij elkaar staan en in delen over de HD verspreid staan. Hierdoor treed performance verlies op. Bij Linux systemen is defragmentatie niet nodig. Dit komt door het bestandssysteem dat Linux gebruikt. Linux gebruikt de ext2, ext3, en ext4 bestandssystemen. Dit bestandssysteem wijst bestanden op een meer intelligente manier toe aan de schijf. In plaats van meerdere bestanden naast elkaar op de harde schijf (zoals bij Windows) zorgt het Linux bestandssystemen ervoor dat verschillende bestanden over de schijf verspreid worden., waardoor een grote hoeveelheid vrije ruimte tussen de bestanden ontstaat. Als een bestand wordt bewerkt en moet groeien is er meestal voldoende vrije ruimte voor het bestand om dit te doen. Indien fragmentatie optreedt, zal het bestandssysteem proberen de bestanden verplaatsen naar een locatie meer vrije ruimte. Op deze manier komt er geen fragmentatie voor. Als er al fragmentatie optreed dan heb je eigenlijk altijd een grotere HD nodig.
Wat wel soms nodig is, is een schijfcontrole. In Windows kennen we āchkdskā (checkdisk) en in Linux heet dit proces āfsckā. Om een bepaalde partitie op fouten te controleren gebruiken we:
fsck /dev/hdb1 |
Alle aanwezige partities / schijven controleren:
fsck -A |
Bovenstaande optie is niet aan te raden. Het is aan te raden om de primary partitie uit te sluiten tijdens de scan. Dit doe je als volgt:
fsck -AR -y |
Om alle ext4 partities te controleren gebruik je:
fsck -AR -t ext4 -y |
Het is zelfs nog beter om je partitie eerst te unmouten alvorens deze gecontroleerd wordt. Door toevoeging van de āM flag zorg je ervoor dat de schijfcontrole alleen gedaan wordt op unmounted partities:
fsck -AM ext4 |
Standaard slaat āfsckā partities over welke als ācleanā vermeld staan. Om deze toch te controleren kun je de ā-fā flag toevoegen:
fsck /dev/hdb1 -f |
We kunnen de checkdisk ook automatisch problemen laten repareren wanneer deze gevonden worden. Dit doen we met de āy optie:
fsck -AM ext4 -y |
Om alle problemen te repareren zonder user interventie gebruik dan de ā-aā flag:
fsck -a -AM |
Als de checkdisk klaar is dan zijn er verschillende statuscode ās die getoond kunnen worden om te laten weten wat het proces gevonden en gedaan heeft:
Netwerk commandoās
Nu we de disk commandoās al aardig onder de knie hebben leek het me handig om ook nog even te kijken naar de Linux netwerk commandoās. Want ook hier kunnen we ontzettend veel mee.
āifconfigā is het allereerste netwerk commando die elke Linux shell gebruiker moet kennen. Het ifconfig commando geeft namelijk inzicht in de huidige netwerkstatus van de machine. ifconfig staat voor āinterface configuratorā en maakt het mogelijk om een netwerk interface te configureren. Denk hierbij aan het toevoegen van IP adressen, aanpassen MTU en veranderen van subnet.
Het zusje van āifconfigā is āiwconfigā. Het āiwconfigā commando is de āwireless interface configuratorā en regelt de draadloze aspecten van draadloze verbindingen zoals SSIDās, WPA sleutels etc.
Om de huidige netwerkstatus te bekijken van alle netwertkkaarten type je simpelweg āifconfigā (vergelijkbaar met het āipconfigā commando in Windows):
ifconfig |
āifconfigā laat je nog niet alle details van de netwerkkaarten zien. De toevoeging ā-aā laat echter wel alle details zijn, zelfs uitgeschakelde kaarten en minder belangrijke eigenschappen van de netwerkkaarten worden hiermee zichtbaar:
ifconfig -a |
Om alleen de details van een specifieke kaart te zien specificeren we de kaart:
ifconfig eth0 |
Linux specificeert netwerkkaarten als volgt:
Het cijfer achter de specificatie is de volgorde waarin Linux de kaarten herkent. āwlan0ā is dus de eerste draadloze interface die Linux herkent. āwlan1ā de 2e enzovoorts.
Om een bepaalde interface te activeren doe je het volgende:
ifup eth0 |
En om de interface uit te schakelen doe je:
ifdown eth0 |
De MTU (Maximum Transmission Unit) waarde aanpassen (default is 1500) gaat als volgt:
ifconfig eth0 mtu 1800 |
Een kaart in āluistermodusā (ofwel promiscuous mode) zetten doen we zo:
ifconfig eth0 -promisc |
Zo voegen we een nieuw IP adres toe aan de interface (deze setting is tijdelijk en wordt ongedaan gemaakt bij een reboot):
ifconfig eth0 192.168.50.5 netmask 255.255.255.0 up |
Om bovenstaande setting permanent te maken moeten we het ā/etc/network/interfacesā bestand aanpassen met de volgende settings:
auto eth0:1 iface eth0:1 inet static address 192.168.50.5 gateway 192.168.50.254 netmask 255.255.255.0 |
Zoals al gezegd kunnen we met āiwconfigā de draadloze eigenschappen van een draadloze NIC configureren. Om b.v. het ESSID in te stellen naar āmijnnetwerkā gebruiken we:
iwconfig wlan0 essid āmijnnetwerkā |
Het instellen van het kanaal gaat zo:
iwconfig wlan0 channel 5 |
En op een bepaalde frequentie:
iwconfig wlan0 freq 2.422G |
Om te verbinden bij een specifiek access point geven we het volgende commando:
iwconfig wlan0 ap 00:42:1D:02:33:21 |
We kunnen zelfs de bitrate instellen met:
iwconfig wlan0 rate 11M |
De zendkracht (tx power) stellen we als volgt in:
iwconfig wlan0 txpower 15 |
Voor vrijwel alle draadloze opties bestaat ook een automatische (auto) of āelkeā (any) variant zodat de kaart zijn eigen instelling mag kiezen. Denk aan b.v.:
iwconfig wlan0 essid any iwconfig wlan0 channel auto iwconfig wlan0 freq auto iwconfig wlan0 rate auto iwconfig wlan0 txpower auto |
Om alle beschikbare draadloze netwerken weer te geven gebruik je:
iwlist wlan0 scanning |
āifconfigā en āiwconfigā zijn niet de enige commandoās waarmee IP adressen aan te passen zijn. De meeste distributies kennen ook het āip addrā commando waarmee vergelijkbare dingen gedaan kunnen worden zoals:
Bekijken IP gegevens:
ip addr show |
Netwerk interface activeren:
ip link set eth1 up |
IP adres verwijderen:
ip addr del 192.168.50.5/24 dev eth0 |
Met het āip routeā en het ārouteā commando is het mogelijk om de routetabel aan te passen. Zoals het bekijken van de routetabel:
route |
het toevoegen van een route:
route add -net 82.36.55.244 gw 192.168.50.254 netmask 255.255.255.255 dev eth0 |
En het verwijderen van een route:
route del -net 82.36.55.244 gw 192.168.50.254 netmask 255.255.255.255 dev eth0 |
Om de default gateway (0-route) aan te passen gebruiken we het volgende commando:
route add default gw 192.168.50.1 eth0 |
Bovenstaande aanpassingen aan de routetabel zijn tijdelijk. Om ze permanent te maken moeten deze toegevoegd worden in het ā/etc/network/interfacesā voor Debian / Ubuntu en in het ā/etc/sysconfig/networkā bestand voor CentOS, Fedora, RHEL. In deze bestanden zijn de netwerkconfiguraties van de netwerkkaarten geconfigureerd. Om een route aan een netwerkkaart toe te voegen kan onderstaande regel aan dit blok worden toegevoegd:
up route add -net 82.36.55.244 gw 192.168.50.254 netmask 255.255.255.255 |
Netwerken zijn in Linux tot in het kleinste detail te configureren. Bovenstaande voorbeelden zijn slechts een greep uit de mogelijkheden. Laten we nog snel naar een paar andere commandoās kijken waaronder een aantal troubleshooting commandoās.
ping
Het ping (Packet INternet Groper) commando gebruiken we om de layer 3 connectiviteit tussen 2 nodes te testen. Als een ping commando succesvol is dan betekend dit dat device A, device B kan bereiken. Het uitvoeren van een ping commando is vergelijkbaar met Windows. Het grote verschil is dat Linux continue blijft pingen i.p.v. 4x (zoals Windows).
ping 8.8.8.8 |
Om slechts 4x te pingen gebruiken we de āc toevoeging:
ping -c 4 8.8.8.8 |
traceroute
Ping is een mooi commando maar geeft weinig inzicht in de route die het verkeer aflegt en de hoeveelheid nodes deze onderweg tegenkomt. Het ātracerouteā commando geeft hierin een beter inzicht. In Linux schrijven we het ātracerouteā commando voluit terwijl we deze in Windows afkorten naar ātracertā.
traceroute 8.8.8.8 |
netstat
Het ānetstatā (network statistics) commando geeft ons inzicht in de huidige verbindingen. Met netstat kunnen we inkomende en uitgaande verbindingen bekijken. Maar ook kunnen we de routetabel inzien, openstaande poorten monitoren en kijken welke applicaties deze poorten gebruiken. Een zeer nuttig commando dus. Om de routetabel met netstat te raadplegen doen we:
netstat -r |
Alle TCT en UDP “listening” poorten bekijken:
netstat āa | more |
Alleen TCP listening poorten bekijken:
netstat āat |
Alle ālisteningā verbindingen bekijken:
netstat āl |
Alle UNIX listening poorten weergeven:
netstat ālx |
Statistieken per protocol bekijken:
netstat ās |
Bekijken van service namen met bijbehorende PIDās:
netstat ātp |
Ruwe en ongefilterde netwerkstatistieken bekijken:
netstat --statistics --raw |
dig
Het ādigā commando wordt gebruikt om DNS gerelateerde problemen op te sporen. Dig staat voor ādomain information groperā en geeft ons inzage in DNS informatie van een domein zoals A-records, CNAME en MX records etc.
Het dig commando leest het ā/etc/resolv.confā bestand uit en gebruikt de DNS servers die hier opgegeven zijn. De resultaten van deze DNS servers worden door dig zichtbaar gemaakt.
Om simpelweg de A-records te zien van een domein voeren we het volgende commando uit:
dig google.nl |
Omdat het normale (bovenstaande) dig commando veel extra informatie meestuurt (meestal uitgequote met een ā;ā) kan de informatie wat onoverzichtelijk worden. Door ā+shortā toe te voegen wordt alleen de relevante informatie getoond.
dig google.nl +short |
Om meer informatie over de MX records te krijgen gebruik je:
dig google.nl MX |
Een SOA record wordt als volgt opgehaald:
dig google.nl SOA |
En de TTL als volgt:
dig google.nl TTL |
Om een overzicht te krijgen van alle DNS records gebruik je:
dig google.nl ANY +noall +answer |
Ook een reverse DNS loopup is mogelijk met de ā-xā flag:
dig -x 82.94.234.39 +short |
nslookup
Het ānslookupā commando wordt eveneens gebruikt voor het oplossen van DNS gerelateerde problemen. Windows administrators zullen aardig bekend zijn met het ānslookupā commando. In Linux werkt nslookup vrijwel identiek als in Windows.
Om de A-records van www.google.nl te bekijken gebruik je:
nslookup www.google.nl |
Een reverse lookup uitvoeren is vrijwel identiek en in tegenstelling tot ādigā zonder toevoeging van extra flags:
nslookup 82.94.234.39 |
Om de MX records op te vragen gebruiken we:
nslookup -query=mx www.google.nl |
Het opvragen van de nameservers (ns records):
nslookup -query=ns www.google.nl |
Het bekijken van alle DNS records doe je als volgt:
nslookup -query=any www.google.nl |
arp
ARP is het āAddress Resolution Protocolā en is TCP protocol. Het ARP protocol bestaat uit een tabel die door TCP devices wordt bijgehouden welke informatie bevat over MAC en IP adressen van andere hosts op het netwerk. Met de ARP tabel kan het apparaat een IP adres vertalen naar een MAC adres. Stel je voor dat een pakketje van computer A naar computer B gaat. Op de 2e netwerklaag wordt niet met IP adressen maar met MAC adressen gewerkt. De computer moet dus weten welk MAC adres de volgende hop is om het pakketje bij computer B te kunnen bezorgen. Als computer A nog niet het MAC adres weet van computer B, maar wel het IP adres dan zal computer A een ARP request over net netwerk sturen met de vraag āwil computer B zijn MAC adres retournerenā. Als computer B zijn MAC adres retourneert dan is de ARP tabel compleet en kan het pakketje verstuurd worden.
De ARP tabel kan uitgelezen worden met het volgende commando:
arp |
Om ARP entry (IP: 192.168.1.10 ā MAC: 22:34:ad:42:b2:14) aan de tabel toe te voegen gebruik je het volgende commando:
arp -s 192.168.1.10 22:34:ad:42:b2:14 |
Om deze ARP entry te verwijderen gebruik je het volgende commando:
arp -d 192.168.1.10 22:34:ad:42:b2:14 |
Linux services en processen
Tenslotte kijken we nog heel even naar de Linux services en processen. Services draaien op de achtergrond om bepaalde processen te monitoren, controleren en beheren. Services zorgen ervoor dat alle gewenste diensten op de computer goed draaien en beschikbaar zijn wanneer nodig. Een service kan bestaan uit meerdere processen. Een proces is kan automatisch door een service gestart worden of on-demand door een applicatie worden gestart. Sommige processen zijn dus tijdelijk (zolang een applicatie draait en deze nodig heeft) of permanent (denk aan processen die het Linux OS nodig heeft om te draaien of om zijn services beschikbaar te stellen).
Zo kan bijvoorbeeld de service ānetwork-managerā gestart worden tijdens het starten van Linux en beheerd de netwerkadapters, DHCP, DNS, VPN etc. Als de netwerk-manager service gestopt wordt zal het netwerk niet meer functioneren. De ānetwork-managerā service zelf start weer verschillende netwerk gerelateerde processen (afhankelijk van de configuratie) zoals ādhclientā en āBINDā.
In sommige gevallen kan het nodig zijn om een service zoals de ānetwork-serviceā te resetten. Het stopzetten van deze service gaat als volgt:
service network-manager stop |
Het starten van de network manager doen we dan als volgt:
service network-manager start |
Bovenstaande stop en start commandoās kunnen we ook combineren als we de service willen resetten:
service network-manager restart |
Mocht je niet weten hoe een bepaalde service heet, dan kun je onderstaande commando gebruiken om alle services te bekijken:
ls /etc/init.d |
Alle huidige processen incl. hun PID kunnen bekeken worden via:
ps -e |
Om de process-tree (boomweergave waarin duidelijk wordt welk proces een ander proces gestart heeft omdat hij deze nodig heeft) te zien typen we:
ps -ejH |
Om processen te zien welke als een specifieke gebruiker draaien (zoals b.v. ārootā) dan gebruik je:
ps -U root -u root u |
En om te zien welk proces als PID 42 draait type je:
ps -p 42 |
Processen kunnen ook bekeken worden via een duidelijke schematische weergave in de shell met ātopā of āhtopā.
Processen en applicaties in de achtergrond
Het laden van processen en applicaties vanuit de shell zorgt er vaak voor dat de shell pas terugkeert als het proces of de applicatie gesloten is. Het & commando laad deze processen en applicaties in de achtergrond zodat je verder kunt werken in dezelfde shell.
Bekijk het verschil maar tussen āxloadā en āxload &ā. Stel voor dat je vergeten bent om een proces in de achtergrond te laden kun je met CTRL+Z terugkeren naar de shell. Het proces bestaat dan nog wel maar is tijdelijk gestopt. Om het proces weer in de achtergrond te starten type je simpelweg ābgā (afkorting van ābackgroundā).
Processen stoppen
Om een proces te stoppen gebruik je het ākillā commando. Met het ākillā commando worden er signalen naar een process gestuurd. Alle signalen kun je vinden door het ākill ālā commando uit te voeren. Een proces afsluiten met het ākillā commando doe je door het jobnummer in te geven achter het kill commando. Dus:
kill 42 |
Bovenstaande voorbeeld is zo simpel omdat het standaard signaal van ākillā het āTERMā signaal is (15), ofwel āterminateā. Dit signaal wordt ook wel een āgracefull shutdownā genoemd maar kan door het proces genegeerd worden. Nummer 9, het SIGKILL signaal is de āhard-shutdownā optie. Dit signaal kan niet door het proces genegeerd worden. Het proces wordt meteen afgesloten en niet opgeslagen werk zal verloren gaan.
Andere signalen die we kunnen sturen zijn op te vragen met het ākill -l” commando. Een paar voorbeelden:
Een proces (in dit voorbeeld een proces met PID 42) hard afsluiten:
kill SIGKILL 42 |
of
kill -9 42 |
Meerdere processen afsluiten:
kill -9 42 56 91 104 |
Alle processen sluiten (killen) die mogelijkerwijs afgesloten kunnen worden doe je met de -9 (SIGKILL) -1 (SIGHUP) toevoeging.
kill -9 -1 |
Het āpkillā commando is een uitbreiding op het ākillā commando. Met āpkillā kan reguliere expressie worden gebruikt en kan de procesnaam i.p.v. het PID gebruikt worden zoals:
pkill firefox |
Om āFirefoxā te sluiten kan zelfs een gedeelte van de naam gebruikt worden. Onderstaande voorbeeld sluit alle processen die beginnen met āfireā.
pkill fire |
Het ākilallā commando sluit automatisch alle processen die open staan en matchen met de opgegeven naam:
killall firefox |
Er is ook een grafische manier om vastgelopen processen / applicaties te sluiten. Dit is door het gebruik van āxkillā. Wanneer āxkillā wordt ingevoegd veranderd de muisaanwijzer in een kruis. Wanneer de vastgelopen applicatie aangeklikt wordt met het kruis wordt deze gesloten. Wanneer je klaar bent met het afsluiten van applicaties kan āxkillā weer gesloten worden met de toets combinatie āCTRL+Cā.
Het lijkt wel of elk nieuw deel van āLinux ā Shell Enzoā steeds langer wordt. Ook in dit deel was weer een hele hoop te vertellenā¦en daar moet je het dan weer wel een hele maand mee doen š Hopelijk vonden jullie het interessant! In het volgende deel gaan we een aantal commandoās bekijken die het werken in Linux nog makkelijker maken en die de Shell laten glanzen. Na deel 7 weet je het⦠hier doen we het voor. Daarom werken we meestal met de Shell! Tot deel 7!





