René Krewinkel vroeger: 15 jaar unix systeem beheer/software development en 5 jaar infrastructuur architect (unix/blades) tegenwoordig: interaction designer web/apps (8 uur/week) docent software development (24 uur/week) freelance cartoonist (oa. Joop.nl) en illustrator (10 uur/week)
geschiedenis archictectuur basis commando’s scripting mogelijkheden
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
2010 Google android 2001 Apple osx op BSD Unix 1998 alle grote spelers ondersteunen linux 1991 Linus torvalds knutselt linux 1987 X11 ziet het licht 1983 eerste release System V 1982 AT&T verweft licentie 1973 eerste BSD versie, beschikbaar buiten BELL/AT&T 1969 Unix wordt bij Bell/AT&T ontwikkeld voor met name mainframe systemen
Standaard programma’s en systeem tools bijvoorbeeld: ls, grep, cat
user functies
Software
Library
Unix Kernel proces management, memory management, disk i/o, netwerk communicatie
Hardware CPU, memory, disk, USB devices, printers, netwerk
kernel functies
Basis interface routines. open, pipe, fork, stream
Let’s complicate life... A lot....
HTTP HTTPS FTP
NFS
ssh
VOIP
PRINT TCP
IP Deamon processen “Listeners”
UDP
Netwerk services
#> cat /etc/services | more tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname
Netwerk tools
#> ping decorrespondent.nl PING decorrespondent.nl (95.211.235.78): 56 data bytes Request timeout for icmp_seq 0 #> nslookup decorrespondent.nl Server: 192.168.178.1 Address: 192.168.178.1#53 Non-authoritative answer: Name: decorrespondent.nl Address: 95.211.235.78 #> traceroute decorrespondent.nl traceroute to decorrespondent.nl (95.211.235.78), 64 hops max 1 fritz.box (192.168.178.1) 3.653 ms 1.439 ms 1.349 ms 2 lo0.dr13.d12.xs4all.net (194.109.5.212) 24.511 ms 3 1318.ae3.xr3.3d12.xs4all.net (194.109.7.53) 23.043 ms 1323.ae3.xr3.3d12.xs4all.net (194.109.7.141) 22.770 ms 4 0.so-1-2-0.xr1.tc2.xs4all.net (194.109.5.14) 23.246 ms 0.so-0-2-0.xr1.tc2.xs4all.net (194.109.5.10) 23.888 ms 5 he-0-4-0-0.bb03.ams-01.as16265.net (80.249.208.215) 6 tengige0-0-0-3.br02.ams-01.leaseweb.net (31.31.38.55) xe-0-1-2.br01.ams-01.leaseweb.nl (31.31.38.49) 23.795 ms tengige0-4-0-4.br02.ams-01.leaseweb.net (31.31.38.53) 7 tengigabitethernet6-2.evo-sr10.leaseweb.net (81.17.32.55)
Process management #> ps -ef | more root 6911 538 root 6923 6911 webadmin 7036 11273 webadmin 7043 11273 root 7047 538 sshd 7048 7047 root 7050 6923 root 7051 6923 www-data 11273 3739 www-data 11276 3739 www-data 11428 3739 www-data 12227 3739 www-data 18112 3739 root 19523 1 sw-cp-s+ 19526 19523 drweb 19768 1
#> kill -9 7051 Connection closed
0 0 3 1 0 0 0 0 0 0 0 0 0 0 0 0
10:08 10:08 10:14 10:15 10:15 10:15 10:15 10:15 Aug31 Aug31 Aug31 Sep01 Aug31 Aug28 Aug28 Aug28
? pts/0 ? ? ? ? pts/0 pts/0 ? ? ? ? ? ? ? ?
00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:09 00:00:30 00:00:29 00:00:18 00:00:26 00:00:00 00:00:00 00:00:05
sshd: root@pts/0 -bash /usr/bin/php5-cgi -c /var/www/vhosts/system/... /usr/bin/php5-cgi -c /var/www/vhosts/system/... sshd: root [priv] sshd: root [net] ps -ef -bash /usr/sbin/apache2 -k start /usr/sbin/apache2 -k start /usr/sbin/apache2 -k start /usr/sbin/apache2 -k start /usr/sbin/apache2 -k start sw-cp-server: master process /usr/sbin/sw-cp-serverd sw-cp-server: worker process /opt/drweb/drwebd.real
Programeren in de shell
## Variabelen #> export VAR=”waarde” #> echo $VAR waarde ## Condities #> if [ -f getSite.sh ]; > then > echo "File is er" > else > echo "Niet aanwezig" > fi File is er ## Loops/lussen #> while true > do > clear > df -h > sleep 2 > done
Geavanceerde mogelijkheden
## Bestanden zoeken ## Zoek bestanden ouder dan 7 dagen met php in de bestandsnaam #> find /var -mtime -7 | grep php ## Achtergrond processen ## Als programma’s lang duren dan kunnen ze eventueel in de ## achtergrond opgestart worden. ## Let op: als je uitlogt “sterven” de achtergrondprocessen #> programma & [1] 88945 [1]+ done #>
programma
## Achtergrond processen die door blijven lopen ## Soms duren zaken wel erg lang (backup bijvoorbeeld) en wil ## je dat de programma’s gewoon door blijven lopen, ook als ## je uitlogt. Dat kan met nohup (no hangup) #> nohup programma & [1] 99984 nohup: ignoring input and appending output to 'nohup.out' [1]+ done #>
programma
Combinatie PHP en Shell scripting
## PHP Script track . ";" . $track->album . "\n"; } ## Shell script #!/bin/bash php prog.php $1 > /tmp/output.txt while read line do track=`echo $line | cut -d";" -f1` album=`echo $line | cut -d";" -f2` echo "$track ------ $album" done < /tmp/output.txt rm /tmp/output.txt
Login
## Login # Username wsNN (waarbij NN=01 t/m 20) # Password: 123 ssh
[email protected] Password: 123 #>
Belangrijke directory’s
/---
-
-
bin dev etc home ---lib opt usr ----tmp var ----
[user1] [user2] [etc...]
bin local bin [etc...] log www [etc...]