ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr
It seems very simple. It is very simple. But if you don t know what the key is its virtually indecipherable.
Εκτέλεση εντολών σε συγκεκριμένη ώρα (1/2) Στις 08:00 το πρωί θέλουμε να τρέξει η εντολή echo «It's 8 o'clock» και το αποτέλεσμά της να μπει στο αρχείο «wakeup» που βρίσκεται στο home directory at 08:00 at> echo " It's 8 o'clock!!!" > ~/wakeup at>(εδώ πιέστε Control-D) warning: commands will be executed using /bin/sh job 2 at 2013-12-14 08:00
Εκτέλεση εντολών σε συγκεκριμένη ώρα (2/2) Μπορούμε να καλέσουμε το πρόγραμμα mpg123 και να παίξει κάποιο αρχείο mpeg ή αλλιώς, «ξυπνήστε με το αγαπημένο σας μουσικό κομμάτι» at 07:00 at> mpg123 ~/Desktop/explosion-01.mp3 at>(εδώ πιέστε Control-D) warning: commands will be executed using /bin/sh job 3 at 2013-12-15 07:00
Διεργασίες (1/4) Μια διεργασία είναι ένα πρόγραμμα που εκτελείτε και αναγνωρίζεται από ένα μοναδικό χαρακτηριστικό PID Για εμφάνιση πληροφοριών για τις διεργασίες, η εντολή είναι: ps [επιλογές] ps : εμφανίζει τις ενεργές διεργασίες του χρήστη την παρούσα στιγμή ps e: θα εμφανίσει όλες τις διεργασίες που εκτελούνται εκείνη τη στιγμή
Διεργασίες (2/4) ps f: παράγει μια πλήρη λίστα UID: αριθμός ταυτότητας χρήστη PID: η ταυτότητα της διεργασίας PPID: η ταυτότητα της πατρικής διεργασίας C: το ποσοστό χρόνου CPU που χρησιμοποιήθηκε η διεργασία STIME: ώρα δημιουργίας της διεργασίας TTY: το τερματικό της διεργασίας Time: ο χρόνος CPU που χρησιμοποιήθηκε ως τώρα CMD: το όνομα της εντολής
Διεργασίες (3/4) ps U root -u root u: Εμφανίζει κάθε διεργασία που τρέχει σαν root (κατευθείαν ή έμμεσα) σε τρόπο εμφάνισης χρήστη: pstree: εμφανίζει το δέντρο των διεργασιών Μια διεργασία μπορεί να βρίσκετε στο προσκήνιο, στο παρασκήνιο ή σε παύση
Διεργασίες (4/4) top: παράγει μια λίστα με περιοδική ενημέρωση των διεργασιών που τρέχουν στο σύστημα
Εκτέλεση εντολών στο παρασκήνιο (1/2) Μια διεργασία που παίρνει πολύ χρόνο, μπορούμε να την μεταφέρουμε στο παρασκήνιο Για να ξεκινήσουμε μια διεργασία στο παρασκήνιο, προσθέτουμε & στο τέλος της γραμμής εντολής και μπορούμε να εκτελέσουμε στο προσκήνιο άλλα προγράμματα sleep: εισάγει μια αναμονή, για όσα δευτερόλεπτα της δώσουμε Σύνταξη: sleep [δευτερόλεπτα] Εκτελείτε μέχρι να: Διανυθούν τα δευτερόλεπτα στο όρισμα Πιεστεί ένα πλήκτρο Συμβεί κάποιο γεγονός Παράδειγμα sleep 10: περιμένει 10 δευτερόλεπτα πριν επιστρέψει η προτροπή στο κέλυφος
Εκτέλεση εντολών στο παρασκήνιο (2/2) sleep 10 &: εκτελείτε στο παρασκήνιο ^Ζ: βάζουμε μια διεργασία που εκτελείτε στο προσκήνιο σε αναμονή bg: βάζουμε μια διεργασία που βρίσκεται σε αναμονή στο παρασκήνιο Προσοχή!!! ΔΕΝ βάζουμε στο παρασκήνιο διεργασίες που χρειάζονται είσοδο από το χρήστη, π.χ. το vi
Λίστα Διεργασιών που Έχουν Διακοπεί - Εκτελούνται στο Παρασκήνιο jobs: εμφανίζει μια λίστα με τις διεργασίες που εκτελούνται στο παρασκήνιο ή έχουν διακοπεί fg %αριθμός job: ξεκινάει μια διεργασία που έχει διακοπεί ή βρίσκεται στο παρασκήνιο Παράδειγμα: fg %1: ξεκινάει την διεργασία [1] που έχει διακοπεί Εάν γράψουμε μόνο fg, θα επαναφέρει στο προσκήνιο την τελευταία διεργασία που έχουμε διακόψει ή μεταφέρει στο παρασκήνιο
Τερματισμός ή αποστολή σήματος σε μια διεργασία (1/2) Μερικές φορές είναι απαραίτητο να τερματίσουμε μια διεργασία (π.χ σε ατέρμονα βρόγχο) ^C (control c): τερματίζουμε μια διεργασία που εκτελείται στο προσκήνιο kill %αριθμός job: τερματίζουμε μια διεργασία που εκτελείται στο παρασκήνιο Εντολή kill: στέλνει σήμα με κωδικό signalid στην διεργασία pid Σύνταξη: kill [signalid] pid signalid: ο αριθμός ή το όνομα ενός σήματος
Τερματισμός ή αποστολή σήματος σε μια διεργασία (2/2) kill l: εμφανίζει μια λίστα ονομάτων σημάτων Η εξ ορισμού τιμή σήματος είναι η 15 Μόνο ο ιδιοκτήτης ή ο διαχειριστής root μπορεί να στείλει σήμα σε μια διεργασία kill 9 pid : στέλνει σήμα τερματισμού στην διεργασία pid kill 0: τερματίζει όλες τις διεργασίες που σχετίζονται με το φλοιό (το 0 σαν pid) Παράδειγμα τερματισμού διεργασίας: kill -9 13183
Παράδειγμα (1/3) Δημιουργείστε ένα script το οποίο να θα κάνει mirror ένα site στο δίσκο μας το βράδυ και θα το διαβάζουμε το πρωί. Ονομάστε το work_at_night.sh και αποθηκεύστε στο home directory
Παράδειγμα (2/3) #!/bin/bash /sbin/ifup ppp0 while [ $(ifconfig grep ppp wc -l) -eq 0 ] do sleep 3 done cd ~ wget -r -l1 http://www.news.gr/ /sbin/ifdown ppp0 exit 0
Παράδειγμα (3/3) Εκτέλεση του script: $ at 07:00 at> /home/nikos/work_at_night.sh at>(εδώ πιέστε Control-D) warning: commands will be executed using /bin/sh job 7 at 2015-01-11 07:00 $
root@oslab:~$ sudo shutdown h now