Αβδέλαρου Κωνσταντίνα



Σχετικά έγγραφα
ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Μερικές άλλες χρήσιμες εντολές

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Shell Scripts: loops / if / test

Λειτουργικά Συστήματα

Μερικές άλλες χρήσιμες εντολές

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Λειτουργικά Συστήματα. Shell Programming

Επαναληπτικές Ασκήσεις

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Linux με τη χρήση κονσόλας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

Εισαγωγή στην Αριθμητική Ανάλυση

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 3o ΕΡΓΑΣΤΗΡΙΟ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

-Δεν υπάρχουν.java αρχεία στο φάκελο.μόνο.class και το text file -Δεν γίνεται έλεγχος για Ν<0

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ I. 1. Εισαγωγή 3 ΠΡΟΛΟΓΟΣ

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Προγραµµατισµός 2 The shell

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

2.1. Οι λογαριασµοί χρηστών Σύνδεση (login) και αποσύνδεση (logout)

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

2ο Εργαστήριο. Εισαγωγική στο Λ.Σ. LINUX Γενικές εντολές συστήματος και χρηστών

Εισαγωγή στα Λειτουργικά Συστήματα

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Εισαγωγή στον Προγραμματισμό

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

ΕΠΑΝΑΛΗΨΗ ΧΩΡΙΣ ΠΡΟΚΑΘΟΡΙΣΜΕΝΑ ΒΗΜΑΤΑ,ΜΕΤΡΗΤΕΣ,ΜΕΓΙΣΤΟΣ,ΜΕΓΙΣΤΟ ΟΝΟΜΑ Χαμηλόμισθος

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Λειτουργικά Συστήματα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

1st exercise of work2 - REMARKS

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Εισαγωγή στον Προγραμματισμό

Διάλεξη 5η: Εντολές Επανάληψης

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στα Λειτουργικά Συστήματα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Σημειωματάριο Τετάρτης 11 Οκτ. 2017

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Παίρνοντας Αποφάσεις 1

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ- Ακαδημαϊκό Φροντιστήριο ΕΠΑΛ-Κάνιγγος 13 Αθήνα 2017

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ ΛΥΚΕΙΟΥ-ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 09/09/2012

Προγραµµατισµός στην Basic

FAIL PASS PASS οριακά

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Μεταφορά Αρχείων µε χρήση της Υπηρεσίας FTP σελ. 1

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Εισαγωγή στον Προγραμματισμό

Διαχειρίζομαι αριθμούς έως το

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Πρόγραμμα όρασης. Στη συνέχεια θα περιγράψουμε πώς δουλεύει το ρομπότ.

Transcript:

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Αβδέλαρου Κωνσταντίνα 1 η Εργασία στο μάθημα Λειτουργικά Συστήματα Ταύρος, 9 Δεκεμβρίου 2014

Άσκηση 1.1 Το shell script που δημιουργήθηκε είναι: #!/bin/bash select CHOOSE in "Name & Command" "Size" "Disk Usage & Free Space" "Full Path" "Files Modified Last Hour or Day" "Exit" do case $CHOOSE in "Name & Command") echo "Give a filename or path: " read filename echo "Give command: " read command find. -name $filename xargs $command "Size") echo "Give size (MB): " read size ((size=size*1048576)) size=$size+c find. -size +$size -exec ls -lh {} \; more "Disk Usage & Free Space") echo "Disk Usage: " du -s -h -a ~ who -m grep "10.100.51.*" > vpn a=`wc vpn awk '{print $1}'` if [ "$a" -eq 0 ]; then echo "You are not in lab" else echo "You are in lab" x=`du -s -k -a awk '{print $1}'` if [ $x \< 1048576 ]; then ((x=$x/1024)) ((o=$x\*100)) ((e=$o/5))

((e=$e/1000)) ((r=100-$e)) echo "Used Space: $e % and Free Space: $r %" else ((x=$x\*100)) ((e=$x/5)) ((e=$e/1000000)) ((r=100-$e)) echo "Used Space: $e % and Free Space: $r %" fi fi "Full Path") ls -d -1 $PWD/* more "Files Modified Last Hour or Day") echo "For last day choose 1 or For last hour choose 2" read choice day=`date awk '{print $3}'` month=`date awk '{print $2}'` hour=`date +%H` min=`date +%M` var=`tz=gmt-1 date +%H` if [ "$choice" -eq 1 ]; then ls -ltr grep " $day " grep $month grep ":" more elif [ "$choice" -eq 2 ]; then ls -ltr grep " $day " grep $month grep "$hour:" more ls -ltr grep " $day " grep $month grep "$var:" more fi "Exit") break *) echo "ERROR: Invalid selection" esac done

Σχόλια/Παρατηρήσεις 1. Αρχικα χρησιμοποιουμε την εντολη select για να δημιουργησουμε το απαιτουμενο μενου ενεργειων και οριζουμε τις αντιστοιχες επιλογες που χρειαζομαστε. Με τη χρηση της case οριζουμε καθε μια επιλογη να αντιστοιχει σε ενα συνολο ενεργειων. 2. Στη πρωτη επιλογη ζητουμενο ειναι να εφαρμουζουμε μια εντολη στα αρχεια του τρεχοντος καταλαγου και στου υποκαταλογους, ζηταμε επομενως απο το χρηστη να μας δωσει ενα ονομα αρχειου ή ενα path, και την αντιστοιχη εντολη που θελει να εκτελεσουμε στο αρχειο ή το path. Επειτα, αφου διαβασουμε τα στοιχεια που μας δινει ο χρηστης, με τη βοηθεια της find, ελεχουμε τον τρεχοντα καταλογο και τους υποκαταλογους του (find.) και αναζηταμε το ονομα του αρχειου που μας δοθηκε (find. name $filename). Με τη βοηθεια της xargs τρεχουμε την αντιστοιχη εντολη που μας εχει ζητηθει (xargs $command). 3. Στο δευτερο υποερωτημα της ασκησης και αντιστοιχα στη δευτερη επιλογη του μενου ενεργειων, ζητειται να βρισκουμε για τον τρεχοντα χρηστη αρχεια τα οποια εχουν μεγεθος μεγαλυτερο απο μια τιμη. Επομενως, ζηταμε απο το χρηστη να μας δωσει το μεγεθος που θελει σε MB και επειτα μετατρεπουμε τα MB σε byte (size=size*1048576), και προσθετουμε σε αυτον τον αριθμο το c. Με τη χρηση της find ψαχνουμε στους καταλογους και μολις βρουμε το size που θελουμε (find. size $size) εκτελουμε την ls ( exec ls lh {} \; ), οπου απο lh {} \; το l χρησιμοποιειται διοτι θελουμε να εμφανισουμε ολοκληρο το ονομα, τα δικαιωματα, τον τυπο, τον ιδιοκτητη, το μεγεθος, τις μερες τροποποιησης και το ονομα του αρχειου, το h χρησιμοποιειται για να εμφανιστουν τα μεγεθη σε μορφη ευαναγνωστη (K,M,G etc). Τελος, για να λειτουργησει σωστα η εντολη, επειτα απο ερευνα βρηκα οτι χρειαζεται να προσθεσω και το {} \; που βοηθαει στο να εντοπισει τα σωστα αρχεια. 4. Στο τριτο ερωτημα μας ζητειται να εμφανισουμε το χωρο που χρησιμοποιειτε και το ποσοστο χρησης του. Για να βρουμε το χωρο που χρησιμοποιουμε στο δισκο εκτελουμε την εντολη (du s h a ~) οπου η du εμφανιζει καθε αρχειο που εχουμε στον υπολογιστη και τον χωρο που κατεχει στο δισκο και στο τελος το τελικο αθροισμα που εχουν τα αρχεια σε bytes. Το s μας εμφανιζει μονο το τελικο αθροισμα χωρις να μας εμφανισει τη λιστα με ολα τα αρχεια. To h μας εμφανιζει το αθροισμα σε τροπο πιο ευαναγνωστο (K,M,G etc) και το a περιλαμβανει ολα τα αρχεια. Το ~ χρησιμοποιειται για να δηλωσουμε διπλα απο το χωρο που χρησιμοποιουμε, σε ποιο path βρισκομαστε. Επιπροσθετα, με την εντολη (who m grep 10.100.51.* >vpn) ελεγχουμε αν ειμαστε συνδεδεμενοι και απο που ειμαστε συνδεδεμενοι στο εργαστηριο, αν το ip μας ειναι της μορφης 10.100.51.* τοτε κανουμε ανακατευθυνση στο αρχειο vpn την συνδεση μας, δηλαδη το αρχειο θα περιεχει μεσα οτι συνδεθηκαμε απο το εργαστηριο. Επομενως, αν το αρχειο μας θα περιεχει κατι διαφορετικο απο το 0, αυτο σημαινει οτι θα ειμαστε

συνδεδεμενοι απο το εργαστηριο. Με το (a=`wc vpn awk {print $1} `) παιρνουμε την πρωτη στηλη της wc που ειναι ποσες γραμμες εχει μεσα το αρχειο vpn και τον αριθμο αυτον τον μεταβιβαζουμε στην μεταβλητη a. Αν η a ειναι ιση με 0 τοτε δεν βρισκομαστε στο εργαστηριο, ενω αν ειμαστε τοτε βρισκομαστε οποτε συνεχιζουμε την διαδικασια για να βρουμε το ποσοστο.οποτε χρησιμοποιουμε την εντολη (x=`du s k a awk '{print $1}'`) προκειμενου να παρουμε αρχικα το αθροισμα του χωρου σε kilobytes (du s k a) και επειτα, επειδη το αποτελεσμα ειναι σε δυο στηλες, χρησιμοποιουμε την (awk '{print $1}') για να κρατησουμε στη μεταβλητη x μονο την πρωτη στηλη, δηλαδη μονο τον αριθμο των kilobytes. Τωρα θα πρεπει να ελεγξουμε αν τα kilobytes αυτα αντιστοιχουν σε MB ή σε GB κανοντας εναν απλο ελεγχο για να ειναι το x μικροτερα του 1048576=1GΒ. Αν ειναι μικροτερο τοτε αναφερομαστε σε Mb οποτε διαιρουμε τν αριθμο με το 1024 για να τον μετατρεψουμε σε gb και επειτα με την μεθοδο των τριων, πολλαπλασιαζουμε τν αριθμο με το 100, τον διαιρουμε με το 5 (συνολικος χωρος) και το αποτελεσμα το διαιρουμε με το 1000 για να βρουμε ποσοστο. Επειτα απο το 100 αφαιρουμε αυτο που βρηκαμε για να βρουμε τον ελευθερο χωρο και εμφανιζουμε τα αντιστοιχα αποτελεσματα. Αν τωρα εχουμε GB αντι για MB τοτε απλα πολλαπλασιαζουμε τα Gb με το 100, τα διαιρουμε με το 5 και επειτα διαιρουμε με το 1000000. Στη συνεχεια κανουμε παλι την αφαιρεση για τον ελευθερο χωρο και εμφανιζουμε τα αποτελεσματα. 5. Στο τεταρτο ερωτημα πρεπει να τυπωσουμε τα αρχεια του τρεχοντος καταλογου με full path. Με την εντολη (ls d 1 $PWD/* more) επιτυχανεται το απαιτουμενο αποτελεσμα. Η ls μας δειχνει τα αρχεια του καταλογου, το d διλωνει οτι ειναι directory, το $PWD δηλωνει που βρισκομαστε, το /* εμφανιζει μονο τα αρχεια του τρεχοντος καταλογου πχ. /home/it21301, αν θελαμε και τα αρχεια των υποκαταλογων θα γραφαμε ( ls d 1 $PWD/**/* more). 6. Στο πεμπτο ερωτημα πρεπει να τυπωνουμε τα αρχεια που εχουν τροποποιηθει την τελευταια ωρα και μερα. Αφου διαβασουμε την αποφαση του χρηστη (1 ή 2) αναθετουμε τιμες. Η εντολη date μας εμφανιζει ολη την ημερομηνια. Με την εντολη (day=`date awk '{print $3}'`) αναθετουμε στην μεταβλητη day μονο την ημερα(1 30), με την (month=`date awk '{print $2}'`) αναθετουμε στην μεταβλητη month μονο τον μηνα (Jan Dec), με την (hour=`date +%H`) αναθετουμε στην μεταβλητη hour μονο την ωρα(0 24), με την (min=`date +%M`) αναθετουμε στην μεταβλητη min μονο τα λεπτα (0 59) και με την (var=`tz=gmt 1 date +%H`) αναθετουμε στην μεταβλητη var την ωρα 1, δηλαδη μια ωρα πισω. Αν ο χρηστης εχει επιλεξει να δει τα αρχεια για την τελευταια μερα τοτε χρησιμοποιειται η εντολη (ls ltr grep " $day " grep $month grep ":" more) οπου μας εμφανιζονται τα αρχεια της ls που εχουν την αντιστοιχη μερα και μηνα, ομως επειδη ειναι πιθανο να εμφανιστουν και τα αρχεια του αντιστοιχου μηνα των προηγουμενων ετων κανουμε ελεγχο να εχουμε και : ωστε να ξερουμε οτι το αρχειο ειναι φετινο. Αν επιλεξουμε να δουμε τα αρχεια της τελευταιας ωρας χρησιμοποιουμε τις εντολες (ls ltr grep " $day " grep $month grep "$hour:" more) και (ls ltr grep " $day " grep $month grep "$var:" more) οπου ειναι παρομοιες μονο που στο τελευταιο grep της πρωτης ελεγχουμε ωστε η ωρα να ειναι αυτη που εχουμε τωρα και της δευτερης να ειναι η προηγουμενη. 7. Χρησιμοποιουμε και μια εκτη εντολη για να τερματισουμε το μενου και την ασκηση

8. Εχουμε χρησιμοποιησει και μια εβδομη εντολη οπου αν ο χρηστης δεν δωσει μια απο τις απαιτουμενες εντολες 1 6 να εμφανισει μηνυμα λαθους. Με δυσκόλεψε / δεν υλοποίησα ΔΥΣΚΟΛΙΑ 1. Αρχικα το να βρω το size στο δευτερο ερωτημα με δυσκολεψε αρκετα, γι αυτο και ζηταω απο το χρηστη να μου δινει το size μονο σε MB, διοτι δεν γνωριζω πως αλλιως να υλοποιησω την ασκηση αν μου δωσει GB, ή KB. 2. Παρομοιο προβλημα αντιμετωπισα και για το ποσοστο του τριτου ερωτηματος διοτι επρεπε με καποιο τροπο να διωξω την καταληξη απο την εντολη du s h, και αφου καταφερα να βρω εναν τροπο να προσπερασω αυτο το εμποδιο, επειτα επρεπε να σκεφτω την περιπτωση των MB και GB και αναλογα να κανω τις πραξεις, οι οποιες πραξεις ηταν αυτο που στην ουσια με δυσκολεψε περισσοτερο γιατι τα αποτελεσματα ειναι δυσκολο να βρεθουν βαση μαθηματικων. Επισης, ειχα μεγαλο μπερδεμα με το ποσοστο που εμφανιζοταν με την df για το capacity. 3. Επισης μεγαλο προβλημα ειχα οταν επρεπε να βρω τα αρχεια της τελευταιας ωρας. Ειδικα για τα λεπτα τα οποια δεν μπορουσα να τα βαλω στην αναζητηση. ΥΛΟΠΟΙΗΣΗ Καταφερα να τα υλοποιησω ολα τα ερωτηματα, το μονο που δεν καταφερα να ολοκληρωσω ηταν το δευτερο μισο του πεμπτου ερωτηματος που αφορα την ωρα. Άσκηση 1.2 Το shell script που δημιουργήθηκε είναι: #!/bin/bash echo "Give command" read command type -P $command &>/dev/null

OUT=$? if [ $OUT -eq 0 ];then echo "Command found" $command else echo "Command not found" (find / -name "$command" 2>/dev/null) > u chmod +x u while read line; do type -P $line OUT1=$? if [ $OUT1 -eq 0 ];then var=`dirname $line` export PATH=$PATH:$var echo "PATH=$PATH" >.profile date >> log dirname $var >> log $command fi done < u fi Σχόλια/Παρατηρήσεις 1. Στην ασκηση 2, ζηταμε απο το χρηστη να μας δωσει μια εντολη και επειτα ψαχνουμε αν αυτη η εντολη υπαρχει στο συστημα, δηλαδη αν εκτελειται. Αυτο επιτυγχανεται μεσα απο τη χρηση της (type P $command &>/dev/null ). Το type p $command διαβαζει την εντολη και ελεγχει αν τρεχει, και το >/dev/null κανει ανακατευθυνση τα λαθη σε ενα αλλο αρχειο. Το αποτελεσμα για το αν εκτελειται η οχι η εντολη ($?) δηλαδη αν το $? ειναι 0 (εκτελειται) ή οχι, το μεταβιβαζουμε σε μια μεταβλητη OUT. Αν η OUT ειναι ιση με το μηδεν τοτε θα εμφανισουμε μηνυμα οτι η εντολη υπαρχει ηδη και θα τρεξουμε την εντολη, ενω αν δεν υπαρχει θα εμφανισουμε το αντιστοιχο μηνυμα, και επειτα θα προσπαθησουμε να την εντοπισουμε και συνεχισουμε τις εντολες για την προσθηκη της εντολης στο PATH. 2. Με τη χρηση της find /, θα ψαξουμε σε ολους τους καταλογους να βρουμε την εντολη

ομως επειδη δεν θελουμε ο χρηστης να βλεπει αν σε καποιον καταλογο δεν εχουμε προσβαση, δικαιωματα ή καποιο λαθος, τα λαθη τα ανακατευθηνουμε σε ενα αλλο αρχειο με τη χρηση της 2>/dev/null. Οτι τωρα περισσευει δηλαδη οι εντολες που χρειαζομαστε, αποθηκευονται σε ενα αρχειο ονοματι u. 3. Κανουμε το αρχειο u εκτελεσιμο και επειτα διαβαζουμε γραμμη γραμμη να δουμε αν καθε εντολη μεσα σε αυτο τρεχει. 4. Με τη (type P $line) εκτελουμε καθε γραμμη και το αποτελεσμα της, δηλαδη αν εκτελειται η οχι το αποθηκευουμε στην μεταβλητη OUT1. Αν εκτελειται τοτε το OUT1 θα ειναι ισο με 0 οποτε θα μπει στο if και θα προσθεσουμε την εντολη στο PATH. 5. Στην εντολη var βαζουμε το αποτελεσμα της dirname $line, δηλαδη περνουμε το κομματι που θελουμε απο καθε σειρα. 6. Επειτα κανουμε (export PATH) και αναθετουμε στη PATH την PATH που εχουμε τωρα συν το var που περιεχει το PATH του καταλογου που θελουμε. 7. Επειτα διαβαζουμε το καινουργιο PATH και το αποθηκευουμε καθε φορα στο αρχειο.profile. 8. Στη συνεχεια κραταμε σε ενα αρχειο log την ημερομηνια (date >> log) και τον καταλογο που προσθεσαμε στο PATH (dirname $ var>> log) και επειτα τρεχουμε την εντολη που βρηκαμε. 9. Το while read line τερματιζει οταν το διαβασουμε ολο το αρχειο. Με δυσκόλεψε / δεν υλοποίησα ΔΥΣΚΟΛΙΑ Γενικα αυτη η ασκηση με δυσκολεψε αρκετα, διοτι ειδικα στην αρχη δεν καταλαβαινα τη διατυπωση. Επιπροσθετα, χρειαστηκε να την μελετησω ιδιαιτερα και να κοιταξω ποικιλους διαφορετικους τροπους για να καταληξω σε αυτο το αποτελεσμα. Επισης ειχα μεγαλο θεμα με το PATH και την προσθηκη καθε γραμμης που εκτελειται στο PATH. ΥΛΟΠΟΙΗΣΗ Δεν ξερω αν το προγραμμα ειναι σωστο, διοτι εμενα πολλες φορες τρεχει και δεν μου βαζει το καταλογο που θελω στο PATH, ενω αλλες φορες το βγαζει. Οστοσο φαινεται να τρεχει σωστα

για εντολες οπως nano, netbeans, ls. Άσκηση 1.3 Το cronjob που δημιουργήθηκε είναι: 36 13 * * 0 /home/it21301/script1_3 >> /home/it21301/leitourgika1/apotelesmatakia.txt Το shell script που δημιουργήθηκε είναι: #!/bin/bash x=`date awk '{print $2}'` y=`date awk '{print $6}'` echo $x $y last it21301 grep $x wc -l Σχόλια/Παρατηρήσεις 1. Στην ασκηση 3, δημιουργησα ενα cron job το οποιο τρεχει καθε κυριακη στη μια και τριαντα εξι το μεσημερι. 2. Το cron job τρεχει το script1_3 που εχω δημιουργησει και τα αποτελεσματα του τα αποθηκευει σε ενα αρχειο.txt ονοματι apotelesmatakia μεσα στο φακελο LEITOURGIKA1. 3. Επισης η ανακατευθυνση γινεται >> που σημαινει οτι τα προηγουμενα δεδομενα δεν διαγραφονται, απλα συνεχως προστιθονται καινουργια. 4. Στο αντιστοιχο shell script ανεθεσα στην μεταβλητη x τον τρεχοντα μηνα (x=`date awk '{print $2}'`) και στην μεταβλητη y τον τρεχοντα χρονο (y=`date awk '{print $6}'`)

επειτα εμφανιζω το μηνα και το χρονο πχ Dec 2014. 5. Τελος με τη βοηθεια της last εμφανιζω για το it213 μου τις τελευταιες μου συνδεσεις,ομως επειδη η ασκηση μου ζηταει για το τρεχοντα μηνα, με τη βοηθεια της grep αναζητω στις συνδεσεις μου τον τρεχοντα μηνα και εμφανιζω τον αντιστοιχο αριθμο γραμμων, αρα συνδεσεων με την (wc l). Με δυσκόλεψε / δεν υλοποίησα ΔΥΣΚΟΛΙΑ Η μονη δυσκολια εμφανιστηκε οταν προσπαθησα να ελεγξω αν οι συνδεσεις που φαινονται στη last ειναι μονο φετινες. Η last δεν εμφανιζει χρονολογια οποτε μου ηταν δυσκολο να ελεγξω αν ολες οι συνδεσεις εγιναν φετος, γι αυτο και κατεληξα να χρησιμοποιω μονο το μηνα για την ευρεση των φορων που συνδεθηκα. ΥΛΟΠΟΙΗΣΗ Πιστευω πως αυτη η ασκηση εχει υλοποιηθει σωστα.