Først noen oppgaver relatert til C og assembly-programmering fra ukens forelesning; det er viktig å jobbet med dette i praksis for å få en grundigere forståelse. Dette er datamaskinarkitektur i praksis: hvordan utføres høynivåkode egentlig i en datamaskin? Deretter er det fokus på scripting i Linux-delen denne uken. Script av økende vanskelighetsgrad og etterhvert noen ganske avanserte shell-script. Hvis man sikter mot karakterene A og B, bør man få med seg ukens utfordringer!
Når du er ferdig med de obligatoriske oppgavene denne uken, kan oblig1 leveres inn. Meld gruppen inn i en av de eksisterende os-gruppene i Canvas og lever inn der. Start fra toppen (os1) og velg første ledige gruppe. Det anbefales å være to eller tre på gruppen, men inntil fem er mulig hvis dere er en sammensveiset gruppe som gjerne vil fortsette å jobbe sammen.
$ ./a.outKompiler det så med gcc hello.c -o hello. Hvordan kan du nå også kjøre programmet? Hvis du ikke har programmert i C før, kan starten av denne C-tutorial være nyttig.
gcc sumMain.c as.sEndre så assembly-koden as.s slik at løkken gjennomløpes en gang til og sjekk at du får svaret 10. Hva er likheten mellom koden i as.s og maskinkoden i oppgave 5 i uke 5?
S = 0; for(i=1;i < 3;i++) { S = S + 2; }istedet. Lag gjerne en ny versjon av sum.c også slik at du er sikker på at as2.s virker som den skal.
int sum() { int S=0,i; for(i=1; i < 4; i++) { S = S + i; } return(S); }Kompiler den deretter sammen med sumMain.c med
gcc sumMain.c esum.cog kjør programmet. Hva er likheten mellom as.s og esum.c? Kompiler så esum.c med
gcc -S esum.cHva er likeheten mellom as.s og den resulterende filen esum.s med tanke på hva de totalt sett utfører?
Klarer du å se noen likheter mellom koden i esum.s og as.s? Endre koden i esum.s slik at løkken går en gang til og gir 10 som resultat.
$ ./rename wav mp3 Endrer fil.wav til fil.mp3 Endrer fil2.wav til fil2.mp3skal alle filer i katalogen som har filendelse wav endres til mp3. En opplysning om hver endring skal gis som i eksempelet. Hvis brukeren ikke angir to argumenter skal scriptet avslutte og oppgi riktig syntaks. Hvis det ikke finnes filer med den filendelsen brukeren angir som første argument, skal scriptet gi en melding om det.
########### Fant "ord" i fil "filnavn" i følgende linje(r):Og så skrive ut alle linjene (Hint: bruk find . og grep).
Linux data2500 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:29:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux cpu MHz : 2294.248 MemTotal: 8175152 kB model name : Common KVM processor /etc/lsb-release:DISTRIB_CODENAME=xenial /etc/os-release:VERSION_CODENAME=xenial /etc/os-release:UBUNTU_CODENAME=xenial /etc/lsb-release:DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"Hint: Test ut kommandoen uname og se på innholdet i /proc/meminfo, /proc/cpuinfo og /etc/*release.
Gå inn på Canvas der du skal ha bli tilordent en s-gruppe. Det er en gruppe som heter noe sånt som s135 hvis du er tilordnet enkeltstudentgruppe nr 135; det skal kun være en student pr gruppe (de vanlige gruppene med flere studenter heter os?? hvor ?? er gruppenummeret). (Istedet for å lete igjennom alle de 341 gruppene, klikk på grupper i venstremenyen i Canvas, før du går inn i et kurs, da vil du få opp kun de gruppene du er medlem av.) Du kan da få tilgang til en egen server gjennom passordet som ligger i en annonsering i denne s-gruppen på Canvas. Hvis du f.eks. er i gruppe s135 kan du logge inn med (svar yes og ok på alle spørsmål):
$ ssh -p 5135 s135@intel3.vlab.cs.oslomet.no s135@intel3.vlab.cs.oslomet.no's password: s135@os5135:~$hvor du skriver passordet som står i announcment i s135 gruppen. Merk at hvis du bruker putty må du legge inn at portnummeret er 5135 og ikke det standard ssh-portnummeret 22 (135 + 5000 = 5135 skal kun brukes for student s135, er du i student-gruppe s1 er portnummeret 1 + 5000 = 5001, etc.).
Oppgaven går ut på at det inne på hjemme-mappen til din s-bruker nå er lagt til en ny fil som du skal prøve å finne. Problemet er at det nå er 1000 mapper i tre nivåer med 10 mapper på hvert nivå og det er derfor ikke så enkelt å finne filen. I tillegg er det lagt inn 10 andre filer i filsystemet som ikke inneholder den rette koden; noe som er opplagt når du ser innholdet av disse filene. Og etter at du har funnet den riktige filen er det ikke så lett å lese den. Men filen inneholder et ord med 10 tegn. For å sjekke at du har funnet det rette ordet, skriv strengen med 10 tegn inn på siden os.php og du får beskjed om du har skrevet riktig. I tilegg blir du da med på konkurransen om å finne denne koden fortest mulig!
NB! Det er viktig at hvert medlem på gruppen gjør oppgaven på egen s-server. Hvert medlem må finne sitt ord og skrive det inn i rapporten. Skriv inn ordene sammen med s-nummeret det tilhører. Skriv i tillegg resultatet inn på os.php siden for å få oppgaven godkjent som oblig.