Κ24:...

65
Κ24: Προγραμματισμός Συστήματος ∆ιδάσκουσα ∆ιδάσκουσα: Μέμα Μέμα Ρουσσοπούλου Ρουσσοπούλου ∆ιδασκαλία ∆ιδασκαλία: Τρίτη Τρίτη 11:00 11:00- 13:00 ( 13:00 ( Αίθουσα Αίθουσα ΣΤ ΣΤ) Πέμπτη Πέμπτη 12:00 12:00- 14:00 ( 14:00 ( Αίθουσα Αίθουσα ΣΤ ΣΤ) Γραφείο Γραφείο:Α 38 38 Ώρες Ώρες Γραφείου Γραφείου : : Μετά Μετά το το μάθημα μάθημα Email Email: mema mema @di.uoa.gr @di.uoa.gr Web Page: Web Page: http://cgi.di.uoa.gr/~mema/courses/k24/k24.html http://cgi.di.uoa.gr/~mema/courses/k24/k24.html

Upload: others

Post on 20-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

Κ24: Προγραµµατισµός Συστήµατος

∆ιδάσκουσα∆ιδάσκουσα:: ΜέµαΜέµα ΡουσσοπούλουΡουσσοπούλου

∆ιδασκαλία∆ιδασκαλία::ΤρίτηΤρίτη 11:0011:00--13:00 (13:00 (ΑίθουσαΑίθουσα ΣΤΣΤ))ΠέµπτηΠέµπτη 12:0012:00--14:00 (14:00 (ΑίθουσαΑίθουσα ΣΤΣΤ))

ΓραφείοΓραφείο::ΑΑ3838

ΏρεςΏρες ΓραφείουΓραφείου: : ΜετάΜετά τοτο µάθηµαµάθηµαEmailEmail:: [email protected]@di.uoa.gr

Web Page:Web Page:http://cgi.di.uoa.gr/~mema/courses/k24/k24.htmlhttp://cgi.di.uoa.gr/~mema/courses/k24/k24.html

Page 2: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

03/08/09

Γενικές Πληροφορίες

Μεταπτυχιακοί ΣυνεργάτεςChristos AgorasGiorgos BalatsourasNikos ChondrosAthanasios DoukoudakisManos KouvarakisDimitris Rabiolos

Ανακοινώσεις, εργασίες, χρήσιµοισύνδεσµοι, και άλλες πληροφορίεςστην ιστοσελίδα.Να γραφτείτε στη mailing list τουµαθήµατος.

Page 3: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

03/08/09

Βιβλίο

M.J. Rochkind, Advanced Unix Programming, Prentice-Hall Software Series, Englewood Cliffs, NJ, 2004 Άλλες χρήσιµες αναφορές στηνιστοσελίδα µαθήµατος∆ιαφάνειες στην ιστοσελίδα τουµαθήµατος (ευχαριστίες στους κκ. Τάκη Σταµατόπουλο, Αντώνιο∆ελιγιαννάκη, και Αλέξη ∆ελή).

Page 4: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

03/08/09

Βαθµολογία

Τρεις εργασίες (50%)Τελική εξέταση (50%)

Page 5: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

5

Περιεχόµενα Μαθήµατος

Λειτουργικό σύστηµα UNIXΠρογραµµατισµός σε κελύφηΠρογραµµατισµός λειτουργιώνσυστήµατος σε C

Χειρισµό λαθώνΑποστολή/παραλαβή σηµάτωνΕίσοδο/έξοδο χαµηλού επιπέδου∆ηµιουργία/τερµατισµό διεργασιώνΕπικοινωνία µεταξύ διεργασιών µέσωσωλήνων, υποδοχών, ουρών µηνυµάτων, κοινής µνήµης, και σηµατοφόρων∆ηµιουργία, τερµατισµό καισυγχρονισµό νηµάτων

Page 6: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

Topic 4 (pdf)Topic 4: Process: concept, process state machine execution, syscalls getpid, getppid, exit, fork, wait, waitpid, exec, orphan processes, zombie processes, pipes, file descriptors after exec

Τρίτη13/4

Easter break – no class.

Τρίτη30/3-Πεµπτη8/4

----Holiday – no class.Πέµπτη25/3

Φροντιστήριο – θέµα: HW 1.Τρίτη23/3

Topic 3 (cont’d).Πέµπτη18/3

HW1 assignedTopic 3 (cont’d).Τρίτη

16/3

Topic 3 (pdf)--Topic 3: Error handling, perror, errno, low-level I/O, system calls link, unlink, mkdir, rmdir, rename, symlink, readlink, signals, signal handling actions, syscalls raise, pause, alarm.

Πέµπτη11/3

Topic 2 (cont’d).Τρίτη 9/3

Topic 2 (cont’d).Πέµπτη4/3

Topic 2 (pdf)Topic 2: Bash shell programming: parameters, arithmetics, expr, conditional statements, if stmt, case stmt, for loops, while loops, sample script programs.

Τρίτη 2/3

Topic 1 (cont’d).Πέµπτη25/2

Topic 1 (continued). Τρίτη23/2

Topic 1 (pdf)Topic 1: Intro to Unix, basic commands, file processing, C shell, metacharacters, environment variables, process management, makefiles.

Πέµπτη18/2

Class overview.Τρίτη16/2

Lecture NotesHandouts, Assignments

TopicDate

Page 7: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

HW 3 dueTopic 7 (cont’d)Πέµπτη27/5

Topic 7 (cont’d)Τρίτη25/5

Topic 7: Interprocess Communication: System V, message queues, shared memory, semaphores, deadlock

Πέµπτη20/5

Topic 6 (cont’d)Τρίτη18/5

Φροντιστήριο – θέµα: HW 3Πέµπτη13/5

Topic 6 (cont’d)Τρίτη11/5

Topic 6 (pdf)HW 2 dueHW3 assigned

Topic 6: Threads: concept, thread creation, termination, going from single-threaded to multi-threaded, synchronization, binary semaphores, conditional variables, producer-consumer problem

Πέµπτη6/5

Topic 5 (cont’d)Τρίτη 4/5

Topic 5 (cont’d)Πέµπτη29/4

Topic 5: Interprocess Communication across the Net: client-server model, handling client requests, socket syscalls, bind, connect, listen, accept, bzero, bcopy, TCP, UDP

Τρίτη27/4

Topic 5 (pdf)Topic 4 (cont’d)Πέµπτη22/4

Φροντιστήριο – θέµα: HW 2Τρίτη20/4

HW 1 due,HW2 assigned

Topic 4 (cont’d)Πέµπτη15/4

Page 8: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

8

Λειτουργικό σύστηµα

Ενδιάµεσο πρόγραµµα µεταξύχρήστη-υλικού συστήµατοςΣτόχος∆ιευκόλυνση χρήσης υπολογιστήΑποδοτική χρήση υπολογιστή

∆ιαχείρηση ΠόρωνΕπεξεργαστέςΚύρια και δευτερεύουσα µνήµηΣυσκευές εισόδου/εξόδου

Σύστηµα διαχείρισης αρχείωνµακροπρόθεσµη αποθήκευσηπληροφοριών

Page 9: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

9

Unix

1969 Bell Laboratories (AT&T) σε µορφή assembly1973 υλοποίηση σε γλώσσα CΠολλές αλλαγές βελτιώσειςαπό τότε

Major Revision από Univ. of California, Berkeley

Χρήση σε προσωπικούςυπολογιστές ως Linux (αλλάκαι σε servers).

Page 10: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

10

Χαρακτηριστικά Unix

Πολλαπλοί χρήστες

Πολλαπλές διεργασίες, διαµέρισηχρόνου

Παροχή ασφάλειας

Υποστήριξη δικτύων

∆οµή:Πυρήνας (kernel)Βοηθητικά προγράµµαταΜεταγλωττιστές, διορθωτές, γλώσσεςδιαταγών

ΚέλυφοςC, Bourne, Bash, Korn…

Page 11: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

11

Χαρακτηριστικά Unix (2)

Παροχή C συναρτήσεις για κλήσειςσυστήµατος

∆ιαλογική επικοινωνία χρήστη µέσωτου κελύφους

Επιτρέπει προγραµµατισµό τουκελύφους

∆ιάκριση πεζών-κεφαλαίων

Page 12: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

12

Ιεραρχική Οργάνωση

/

bin etc home dev var usr tmp

jim john mary tmp spool local bin

Κατάλογος-Ρίζα (/)

Τρέχων κατάλογος (.)

Γονικός κατάλογος (..)

Μονοπάτια απόλυτα και σχετικά

Αρχεία

Σύνδεσµοι

Συσκευές

Page 13: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

13

Λογαριασµός Χρήστη

Όνοµα και συνθηµατικό χρήστη

Κέλυφος αρχικής σύνδεσης

Οµάδες χρήστη

Κατάλογος αφετηρίας

mema@bowser's password: Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26 00:13:11 UTC 2009 i686

The programs included with the Ubuntu system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted byapplicable law.

To access official Ubuntu documentation, please visit:http://help.ubuntu.com/Last login: Mon Jan 7 01:25:54 2008mema@bowser:~$ pwd/home/mema

Page 14: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

14

Βασικές Εντολές

Κειµενογράφος οθόνηςviΕκτύπωση αρχείουlprΕµφάνιση περιεχοµένων αρχείουcat∆ιαγραφή αρχείουrmΜετακίνηση αρχείουmvΑντιγραφή αρχείου/καταλόγουcp∆ιαγραφή καταλόγουrmdir∆ηµιουργία καταλόγουmkdirΑλλαγή τρέχοντος καταλόγουcdΜονοπάτι τρέχοντος καταλόγουpwdΕµφάνιση περιεχοµένων καταλόγουlsΕµφάνιση οδηγιών χρήσης εντολώνman

Page 15: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

15

Εντολή man

PWD(1) User Commands PWD(1)‏

NAMEpwd - print name of current/working directory

SYNOPSISpwd [OPTION]

DESCRIPTIONPrint the full filename of the current working directory.

--help display this help and exit

--versionoutput version information and exit

NOTE: your shell may have its own version of pwd, which usually super�sedes the version described here. Please refer to your shell’s docu�mentation for details about the options it supports.

AUTHORWritten by Jim Meyering.

REPORTING BUGSReport bugs to <[email protected]>.

COPYRIGHTCopyright © 2008 Free Software Foundation, Inc. License GPLv3+: GNUGPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.

SEE ALSOgetcwd(3)‏

The full documentation for pwd is maintained as a Texinfo manual. Ifthe info and pwd programs are properly installed at your site, the com�mand

info coreutils ’pwd invocation’

should give you access to the complete manual.

GNU coreutils 6.10 April 2008 PWD(1)‏

Page 16: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

16

Εντολή man (-k)

Όλα όσα περιέχουν τη λέξη manual (-k) mema@bowser:~$ man -k manual‏apropos (1) - search the manual page names and descriptionsark (1) - manual page for Arkcatman (8) - create or update the pre-formatted manual pagescddb-slave2-properties (1) - manual page for Gnome cddb-slave2-properties 2.0.0ecj (1) - manual page for eclipse JDT Compilerecj-gcj (1) - manual page for eclipse JDT Compileresdcompat (1) - manual page for pulseaudio esd wrapper 0.9.5gnome-volume-control (1) - manual page for Gnome gnome-volume-control 2.1.0grub-reboot (8) - manual page for grub-reboot 0.01gstreamer-properties (1) - manual page for Gnome gstreamer-properties 2.2.1.1kwifimanager (1) - manual page for kwifimanagerman (1) - an interface to the on-line reference manualsmanconv (1) - convert manual page from one encoding to anothermandb (8) - create or update the manual page index cachesmanpath (1) - determine search path for manual pagesmissing (7) - missing manual pagespdfclose (1) - manual page for pdfopen 0.4: Acrobat Reader remote con...pdfopen (1) - manual page for pdfopen 0.4: Acrobat Reader remote con...pulseaudio (1) - manual page for pulseaudio 0.9.5readahead-list (8) - manual page for readahead-list: 0.20050517.0220readahead-watch (8) - manual page for readahead-watch: 0.20050517.0220vumeter (1) - manual page for Gnome Volume Meter 2.1.0w3mman (1) - an interface to the on-line reference manuals by w3m(1)‏whatis (1) - display manual page descriptionswhereis (1) - locate the binary, source, and manual page files for a...xman (1) - Manual page display program for the X Window System

Page 17: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

17

Εντολή ls (-a, -l, -r)

Ότι το προηγούµενο, λεπτοµερώς (-l)

Αντίστροφη εκτύπωση (-r)

Τύπωσε και περιεχόµενα από ‘.’ (-a)

Αρχείο που εκτελείται όταν ξεκινάει το κέλυφος:bash: .bashrccsh: .cshrctcsh: .tcshrc

Page 18: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

18

∆ικαιώµατα χρηστών

Κάθε αρχείο/κατάλογος ανήκειστον δηµιουργό τουΚάθε χρήστης ανήκει σε µια ήπερισσότερες οµάδες. Πχ:

users, postgrads, dep, undergrads,.10 bits- rwx r-x r-x

ιδιοκτήτη οµάδα υπόλοιποι

1o bit συνήθως d (κατάλογος) ή‘-’ (κανονικό αρχείο)3 οµάδες τριών bit (ανάγνωση, εγγραφή, εκτέλεση)

Page 19: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

19

∆ικαιώµατα χρηστών

x

w

r

ΚατάλογοςΑρχείο

Πρόσβαση µεεντολή cd. Αν δενέχω ‘r’ δεν βλέπωόµως ονόµατα των

αρχείων

Εκτέλεσηαρχείου

∆ιαγραφή, δηµιουργία αρχείων

Αλλαγήαρχείου. ΟΧΙδιαγραφή

Περιεχόµενακαταλόγου

Ανάγνωση, αντιγραφή

Page 20: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

20

Εντολή ls (-d, -R, -t)

Μόνο για τον κατάλογο (-d)

Ταξινόµηση µε βάση τελευταία µεταβολή (-t)

Αναδροµική εκτύπωση υποκαταλόγων (-R)

Page 21: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

21

Εντολές pwd, cd, mkdir, rmdir

rmdir -r (όχι για καταλόγους)

Μονοπάτι τρέχοντος καταλόγου

Έξτρα σύµβολα στο τέλος ονόµατος (-F)

Page 22: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

22

Εντολές cp (-i, -r), mv (-i), rm (-i, -r, -f)‏

rm -f (διαγραφή χωρίς ερώτηση – λιγότερο ισχυρό από το -i)

Αναδροµική αντιγραφή (-r)

Αν υπάρχει, επιβεβαίωση (-i)

Αν υπάρχει, επιβεβαίωση (-i)

Αναδροµική διαγραφή (-r)

Page 23: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

23

Κειµενογράφος vi

vi filename

Οδηγίες χρήσης στο βιβλίο(Kernighan & Pike) και στο Web

Page 24: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

24

Εντολές cat (-n), lpr (-P), emacs

Εµφάνισε και αριθµούς γραµµών (-n)‏

Page 25: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

25

Επεξεργασία Αρχείων

Αλλαγή δικαιωµάτων προστασίας αρχείωνκαι καταλόγωνchmod

Σύγκριση 2 αρχείωνcmp

Εµφάνιση διαφορών 2 αρχείων κειµένουdiff

∆ηµιουργία συνδέσµωνln

Εµφάνιση τελευταίων κ γραµµών.tailΕµφάνιση πρώτων κ γραµµώνhead

Παρουσίαση συγκεκριµένων τµηµάτωνγραµµών αρχείουcut

Χρονική ενηµέρωση αρχείου/ καταλόγουtouchΤαξινόµηση αρχείουsortΛεξικο-στατιστικά αρχείουwc

Εµφάνιση συγκεκριµένου περιεχοµένου σεαρχείοgrepΣταδιακή εµφάνιση περιεχοµένουmore

Page 26: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

26

Εντολή chmod (-R)‏

Αφαίρεσε ανάγνωση από υπόλοιπουςΠρόσθεσε εγγραφή, εκτέλεσησε οµάδα

Αναδροµικά στον κατάλογο (-R)

Page 27: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

27

Θέµα εξέτασης

Σαν owner, µπορώ. Αλλιώς όχι.

∆εν έχει δικαίωµα ανάγνωσης

Page 28: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

28

Εντολή more

Page 29: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

29

Εντολές grep (-n, -i, -v), wc (-l, -w, -c)‏

Τύπωσε # γραµµής

Αγνόησεκεφαλαία-µικρά

Όλες τις γραµµές ΕΚΤΟΣαπό όσες ταιριάζουν

# Γραµµές, λέξεις, χαρακτήρες

Μόνο # λέξεωνΜόνο # γραµµών

Μόνο # χαρακτήρων

Γραµµές που περιέχουν 6000

Page 30: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

30

Εντολή sort

Ταξινόµηση (ανάγραµµή, σαν κείµενο)‏

Με βάση 2η στήλη, σαν κείµενο

Με βάση 2η στήλη,

Αριθµητική (-n),

Αντίστροφη (-r)‏

>sort -k 2 example.txt

>sort -r -n -k 2 example.txt

Page 31: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

31

Εντολές touch, ln (-s)Αν υπάρχει ήδη, άλλαξε χρόνοτροποποίησης. Αλλιώς δηµιούργησε

Σκληρός σύνδεσµος

Συµβολικός Σύνδεσµος (-s)

∆ε σβήνει ούτε το .bashrcούτε το /etc/group

Page 32: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

32

Εντολή ln (συνέχεια)

Ίδιο inode

Page 33: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

33

Σκληροί και Συµβολικοί Σύνδεσµοι

∆ιαγραφή ∆ΕΝεπηρεάζει αρχικόαρχείο

Αρχείο σβήνεταιόταν ΟΛΟΙ οι δείκτεςσε αυτό σβηστούν

Αλλαγές σε σύνδεσµοή αρχικό αρχείοεπηρεάζουν και τα 2

Αλλαγές σεσύνδεσµο ή αρχικόαρχείο επηρεάζουνκαι τα 2

Μετονοµασία αρχικούαρχείου “σπάει” τοσύνδεσµο

Μετονοµασίααρχικού αρχείου δεδηµιουργεί πρόβληµα

Εφαρµόζεται σεκαταλόγους

∆εν εφαρµόζεται σεκαταλόγους

Αντιγράφει µονοπάτιαρχείου ΜΟΝΟ

∆είκτης σε κοινόαρχείο

ΣυµβολικοίΣκληροί

Page 34: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

Θέµα Εξέτασης

Page 35: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

35

Θέµα Εξέτασης

Ο adeli (επόµενη σελ.) φτιάχνει συνδέσµους σε αρχείατου spro (παραπάνω). Πρέπει να σβήσουν όλοι οι δείκτεςσε 1 αρχείο για να διαγραφεί αυτό. Όλα καλά αν ο adeliέχει ‘x’ στον ~spro/popo και ‘w’ στον δικό του. Ο sproδιαγράφει µε ‘wx’ στο ~adeli/popo.

1.

Ιδιοκτήτης, αλλά όχι ‘w’στο κατάλογο

4.

7.

Page 36: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

Θέµα Εξέτασης

Katv

2. Όλα ΟΚ

3.

5.

6.

Page 37: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

37

Έντολή cut (-f, -d)‏

-f (επιλογή στηλών που θέλουµε)-d (διαχωριστικό στηλών – αν δεν οριστείείναι το tab ‘\t’)

Αν δυνατότητες της cut δεν είναι επαρκείς, τότε γλώσσες awk, perl, python, ruby…

Page 38: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

38

Εντολές cmp, diff, head (-n), tail (-n)‏

Αν διέφεραν, θα τύπωνε1ο σηµείο διαφοράς

Χωρίς όρισµα, πρώτες 10 γραµµές

Πρώτες 2 γραµµές (-n)

Page 39: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

39

Λοιπές Εντολές: echo (-n), date, passwd, hostname, whoami, lpq (-P), lprm (-P) ‏

Με αλλαγή γραµµής

Όνοµα µηχανήµατος

Κατάσταση ουράς εκτυπωτή

Χωρίς αλλαγήγραµµής

∆ιαγραφή εργασίας εκτύπωσης

Page 40: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

40

Κέλυφος C (csh ή tcsh)

Συχνά το κέλυφος αρχικής σύνδεσης (bash στο Linux)Η εντολή logout αποσυνδέει το χρήστηΜε csh (tcsh) δηµιουργείται νεό κέλυφος CΗ εντολή exit τερµατίζει ένα κέλυφος CTo ~ συµβολίζει τον κατάλογο αφετηρίαςΚατά την ενεργοποίηση εκτελείται το~/.cshrcΚατά την αρχική σύνδεση εκτελείται το~/.loginΚατά την διακοπή της σύνδεσης εκτελείταιτο ~/.logout

Page 41: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

41

Κέλυφος C (συνέχεια)

Προκαθορισµένη είσοδος stdin(πληκτρολόγιο)Προκαθορισµένη έξοδος stdout (οθόνη) Προκαθορισµένη έξοδος διαγνωστικώνσφαλµάτων stderr (οθόνη)

Για ορισµένες εντολές (cat, lpr, grep, wc, sort, head, tail κτλ) τα ορίσµατα τωναρχείων είναι προαιρετικά

Αν παραλειφθούν χρησιµοποιείται το stdin

Τέλος εισόδου για εντολή

Page 42: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

42

Ανακατευθύνσεις

Ηµεροµηνία στο a_file

Το > δεν γράφει σε υπάρχον αρχείο σεκάποια UNIX συστήµατα

Είσοδος από το .screenrc

Το >! οµως ναι

Ανακατεύθυνση stdout και stderr

Γράψε πάνω στο αρχείο

ΠΡΟΣΟΧΗ: Για να προστατέψετε τα υπάρχοντααρχεία σε συστήµατα όπου η συµπεριφορά είναιδιαφορετική, γράψτε: set noclobberγια να µην γράφει σε υπάρχοντα αρχεία.

Page 43: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

43

Ανακατευθύνσεις µεπροσάρτηση

Γράψε έξοδο του date στο ΤΕΛΟΣ του c_file

Γράψε µε έµφαση στο c_fileτα στατιστικά του .bashrc

Προσάρτηση stdout και stderr

Τύπωσε ταξινοµηµένες τις τελευταίες 5 γραµµέςτου .bashrc

Page 44: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

44

Ανακατευθύνσεις

1) Για ανακατεύθυνση stdout and stderr σεδιαφορετικά αρχεία:

(command > stdout_file) >& stderr_file

1) Για ανακατεύθυνση µόνο stderr

sh –c ’command 2> stderr_file’mema@bowser> mema@bowser> more bllbll: No such file or directorymema@bowser> more balheymema@bowser> (cat bll bal > outFile) >& errFilemema@bowser> more outFileheymema@bowser> more errFilecat: bll: No such file or directorymema@bowser> sh -c 'cat bll bal 2> errFile2'heybowser.eecs.harvard.edu> more errFile2cat: bll: No such file or directorybowser.eecs.harvard.edu>

Page 45: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

45

Ακολουθίες και ΟµάδεςΕντολών (;)

Με παρένθεση παραµένουµεστον ίδιο κατάλογο που δώσαµετις εντολές

Με παρένθεση

Page 46: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

46

Εντολή umask

ΠΡΟΣΟΧΗ: Ο αριθµός της umaskδείχνει ποια δικαιώµατα ∆ΕΝθέλουµε να δίνουµεΣυγκρίνετε µε chmod

022: Όχι εγγραφή σε οµάδα, υπόλοιπους

077: Όλα κοµµένα σε οµάδα, υπόλοιπους

Page 47: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

47

Μεταχαρακτήρες

cd

cd

Page 48: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

48

ΜεταβλητέςΠεριβάλλοντος καιΜεταβλητές κελύφους

setenv displays/sets all environment (i.e., global) variables usable by any program.Αν θέλουµε όλα τα προγράµµαταπου τρέχουµε από µέσα από τοκέλυφος να έχουν πρόσβαση σεκάποιες µεταβλητές τότε τιςκαθορίζουµε µε setenv.

set displays/sets properties specific to the shell

e.g., prompt, path, etc.

Page 49: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

49

Μεταβλητές Περιβάλλοντος(setenv, unsetenv)‏

Τελευταίες 5 ορισµένες µεταβλητές

Ακύρωση εντολής

Page 50: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

50

Τοπικές ΜεταβλητέςΚελύφους C (set, unset)

∆ε χρειάζεται τώρα το !Αγνόησε το ^D ως logout

Μεταβλητές που ξεκινάνεαπό [i-t]

Page 51: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

51

Ιστορία εντολών

Page 52: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

52

Ψευδώνυµα Εντολών(alias, unalias)

Πάντα ερώτηση σε διαγραφή

Ακύρωση ψευδώνυµου

Για όταν ξεχνιέµαι (windows)

Page 53: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

53

∆ιαχείρηση ∆ιεργασιών

Στατιστικά διαχείρισης επεξεργαστή, µνήµης κτλ για προγράµµαταtop

Βάλε διεργασία να τρέχει στο προσκήνιο(foreground)fg

Βάλε διεργασία να τρέχει στο παρασκήνιο(background)bgΣκότωσε µια διεργασίαkillΕµφάνιση ενεργών διεργασιών που έχουν διακοπείjobs

Εµφάνιση κατάστασης τρέχουσωνδιεργασιώνps

Page 54: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

54

Εντολές ps (-u), jobs, kill (-9)‏

Page 55: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

55

Εντολές bg, fg

Page 56: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

56

Εντολή top

Page 57: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

57

Συµπίεση, αποσυµπίεσηαρχείωνΠολλά προγράµµατα (tar, zip, gzip, gunzip, zcat, uuencode…)

gzip compr.tar

gunzip compr.tar.gz

Συµπίεση των αρχείων Makefile *.c *.h καιτου καταλόγου experiments στο αρχείοcompr.tar:

tar cvf compr.tar Makefile *.c *.h experiments

Αποσυµπίεση µε:

tar xvf compr.tar

Σε .gz χρησιµοποιήστε gunzip

Σε .tgz χρησιµοποιήστε gunzip και µετά tar xvf

Σε .uue χρησιµοποιήστε uudecode

Page 58: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

58

Κι άλλες Εντολές

Μετατροπή χαρακτήρων σε αρχείαtr

Αναµονή για χρονικό διάστηµαsleepΚαθάρισµα οθόνηςclear

Καταγραφή αλληλεπίδρασης µεκέλυφος σε αρχείαscript

Εµφάνιση πρόσφατων συνδέσεωνχρηστώνlast

Ανεύρεση αρχείων ή καταλόγωνfind∆ιαγραφή στηλών από αρχείαcolrm

Page 59: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

59

Εντολές tr (-d), colrm

Τύπωσε στην οθόνη το/etc/resolv.conf αντικαθιστώντας τουςχαρακτήρες του 56789abc µε τουςαντίστοιχους από το 012345xyz

Όλα εκτός από τους χαρακτήρες…

Όλους τους χαρακτήρες σεστήλες 8-14

Όλoυς τους χαρακτήρες σεστήλες >= 15

tr: translate, squeeze, and/or delete characters from standard input, writing to standard output

Page 60: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

60

Εντολή find (-name, -exec) ‏

Τύπωσε περιεχόµενα από τααρχεία (-exec την cat εντολή) ‏

Τύπωσε πλήρες όνοµααρχείων (-print) και ταπεριεχόµενά τους

Page 61: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

61

Εντολές last (-n), script, sleep, clear

Κατέγραψε τα πάντα απόεδώ και πέρα στοmy_session

Επίσης µε ^D, τέλος καταγραφής

Page 62: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

62

Άλλα Χρήσιµα…

Ηλεκτρονικό ταχυδροµείοΠρογράµµατα mail ή pine

Μεταγλωτιστές της C gcc ή cc

Page 63: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

63

Makefiles

Οργάνωση µεταγλώττισης αρχείων

Στη µορφή:Στόχος: Απαιτούµενα

\t Εντολή

Προσοχή στο tab.

Τα Απαιτούµενα πρέπει να υλοποιηθούνπριν το Στόχο.

Αν τα Απαιτούµενα δεν έχουν αλλάξει, δενεκτελείται η εντολή

Συχνά ο Στόχος του εκτελέσιµουπρογράµµατος έχει το όνοµα all

Συχνά ο Στόχος clean διαγράφει ταπαραγόµενα εκτελέσιµα και *.o

Page 64: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

64

Παράδειγµα Makefile

Αν αλλάξει το kbd.c, υπολογίζεται τοkbd.o, και στη συνέχεια το edit

Page 65: Κ24: ΠρογραµµατισµόςΣυστήµατοςcgi.di.uoa.gr/~mema/courses/k24/lectures/old/topic1... · 2009-03-08  · Linux bowser 2.6.24-23-generic #1 SMP Mon Jan 26

65

Παράδειγµα Makefile

OBJS = main.o iodat.o dorun.oLIB = /usr/lib/crtn.oCC = /usr/bin/gcc

program: ${OBJ} ${LIB} mylibops.a${CC} -o $@ ${OBJS} ${LIB} mylibops.a

main.o: main.c${CC} -c $?

iodat.o: iodat.c${CC} -c $?

dorun.o: dorun.c${CC} -c $?

mylibops.a: interact.o sched.o gen.oar r $@ $?

interact.o: interact.c${CC} -c $?

gen.o: gen.c${CC} -c $?

sched.o: sched.c${CC} -c $?

$? : current list of prerequisites$@: current target

tab