Εισαγωγή στις Διεργασίες του Λίνουξ

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 03:47

ΕΙΣΑΓΩΓΗ


Καλησπέρα σε όλους. Μιας και τον τελευταιο καιρό με εχει πιάσει μια μανία με τις διεργασίες , είπα να δοκιμάσω να ανεβάσω εναν οδηγό περισσότερο για εκμάθηση και για πρακτική επίσης. Θέλω να πω πως δεν θα φτάσουμε σε βάθος μεγάλο χρονο-προγραμματισμού παρα μπορούμε να επισημάνουμε 2-3 βασικά πράγματα σχετιζόμενα με τις διεργασίες για κάθε νεοεισερχόμενο χρήστη στον κόσμο του Λίνουξ.

ΠΕΡΙΕΧΟΜΕΝΑ

1. Ορισμός Διεργασίας

2. Διεργασίες

2.1 Διεργασίες ως προς το Λειτουργικό Σύστημα & το HardWare
2.2 H init( )

3. Πρακτική - Εντολές στο Τερματικό

4. Απλός & Βασικός Χρονοπρογραμματισμός Διεργασιών

5. ΕΠΙΛΟΓΟΣ


1.Τις διεργασίες μπορούμε να τις φανταστούμε σαν προγράμματα (που όντως είναι) και εκτελούνται στο συστημά μας. Η εκτέλεση μιας εφαρμογής μπορεί να είναι ενα τυπικό παράδειγμα μιάς διεργασίας. Επίσης διεργασίες συναντάμε και στους δαίμονες που τρέχουν στους διακομιστές :!: :!: :!: Στην ουσία και οι δαίμονες ειναι διεργασίες οι οποίες εκτελούνται συνεχώς στο παρασκήνιο μέχρι να πρόγραμμα πελάτη (client) να ζητήσει απο τον σέρβερ στον οποίο τρέχει η διεργασία σύνδεση (τυπικό παράδειγμα -> ftp clients). Στα συστήματα του UNIX & του Linux κάθε προγραμμα που εκτελείται ειναι μια διεργασία , επίσης περισσότεροι απο ένας χρήστες μπορούν να τρέχουν προγράμματα την ίδια χρονική στιγμή και έτσι περισσότερες απο μια διεργασίες μπορούν να εκτελούνται την ίδια χρονική στιγμή. Για τον λόγο αυτό τα συστήματα του UNIX / Linux χαρακτηρίζονται ως Multiuser-MUltitasking.

2.

2.1 Πρίν προχωρήσουμε στην εξέταση των Διεργασιών ως προς το λειτουργικό σύστημα αλλα και το Hardware (φυσικά ούτε εδώ θα διεισδύσουμε αρκετά) πάμε να δούμε τι ακριβώς συμβαίνει με τα σήματα στις διεργασίες. Η διαδικασία έχει ως εξής ->

Οι διεργασίες περιμένουν για σήματα. Καθένα απο τα οποία ωθεί τις διεργασίες να κάνουν μια συγκεκριμένη λειτουργία. Τα σήματα αναπαρίστανται με αριθμούς και ονόματα , θα παραθέσω μονο μερικά απο αυτά τα σήματα καθώς ο σκοπός του οδηγού μου είναι να καλυφθούν οι έννοιες με σοβαρότητα και αξιοπιστία χωρίς αυτο να σημαίνει μεγάλη ανάλωση σε κατεβατό απο θεωρίες.

Κώδικας: Επιλογή όλων
ΑΡΙΘΜΟΣ -> 1  ΟΝΟΜΑ -> SIGHUP  ΣΗΜΑΣΙΑ -> Hang UP (Κλεισιμο διεργασιας)
ΑΡΙΘΜΟΣ -> 9   ΟΝΟΜΑ -> SIGKILL   ΣΗΜΑΣΙΑ -> Οριστικος τερματισμος που δεν μπορεί να αγνοηθεί


Υπάρχουν πανω απο 30 διαφορετικά σήματα για τα οποία γνωρίζει το Λινουξ αλλα εδώ απεικονίζονται μονο 2 απο τα πιο χρήσιμα. Το SIGHUP ειναι εκείνο το σήμα που στέλνεται σε κάθε διεργασία που εκτελείται ωστε να την ωθήσει να κλείσει πριν αποσυνδεθούμε απο το σύστημα. Το SIGKILL απο την άλλη ωθεί τις διεργασίες να τερματίσουν αμέσως χωρίς ουτε μια ευκαιρία! Ειναι αρκετά πιο απότομο σήμα απο τα υπόλοιπα.

Οι διεργασίες με το λειτουργικό Σύστημα έχουν γόρδια συσχέτιση!!!! :D :D Καταρχήν ο πυρήνας του λειτουργικού μας συστήματος ειναι υπεύθυνος για την προώθηση των σημάτων στις διεργασίες για τα οποία σύντομη αναφορά έγινε πιο πάνω. Ειδικότερα ΧΡΟΝΟΔΡΟΜΟΛΟΓΗΤΗΣ είναι εκείνο το τμήμα του πυρήνα που παίρνει αποφάσεις σχετικά με την ανάθεση της CPU (Central Process Unit) στις διάφορες διεργασίες.
Αφού φανταστήκαμε την διεργασία σαν ένα πρόγραμμα που εκτελείται στο συστημά μας... για να αποφύγουμε την σύγχυση και να καταλάβουμε σε βάθος τι ακριβώς συμβαινει... τελικά η διεργασία είναι είναι ενα στιγμιότυπο του προγράμματος στην RAM που είπαμε πιο πάνω το οποίο υπάρχει στον σκληρό δίσκο εγκατεστημένο (μόνιμα). Ο Λόγος έγκειται στο γεγονός οτι θα πρέπει να φανταστούμε την μνήμη ενος ηλεκτρονικού υπολογιστή με την μορφή μιας πυραμίδας. Κατω κατω στην πυραμίδα βρίσκονται τα μέρη με τον μεγαλύτερο-χειρότερο χρόνο προσπέλασης αλλά την μεγαλύτερη χωρητικότητα μνήμης (σκληροί δίσκοι , μαγνητικές ταινίες κτλπ) ενώ πάνω πάνω στην πυραμίδα βρίσκονται τα μέρη με τους καλύτερους χρόνους προσπέλασης αλλα με την μικρότερη χωρητικότητα σε μνήμη και την πιο ακριβή. (Μνήμες ΡΑΜ - Κρυφές μνήμες)

Έτσι λοιπον για να υπάρχει καλύτερος χρόνος προσπέλασης ενός προγράμματος και έτσι να μην πέφτει η απόδοση του συστήματος τα προγράμματα μόλις φορτώσει ο υπολογιστης τις πληροφοριες απο τον σκληρό κτλπ περνάνε στην μνήμη RAM ώς στιγμιότυπα τα οποία και θα διαγραφούν μολις διακοπεί η παροχή ρεύματος. Φυσικά ολα αυτά σχετικά με την RAM , διοτι μεγάλο ρόλο παίζει και ο επεξεργαστής μιας και οι διεργασίες ανταγωνίζοντε τον χρόνο του , κάτι τετοιο μπορει να δημιουργήσει προβλήματα στην απόδοση μιας και ορισμένες διεργασίες μπορει να έχουν περισσότερες απαιτήσεις σε επεξεργαστική ισχύ απο κάποιες αλλες. Για τον λόγο αυτό έχει ορισθεί ένα σύστημα προτεραιοτήτων στο οποίο διεργασίες με υψηλότερη προτεραιότητα εκτελούνται πρώτες και με την σειρά ενω όλες οι υπόλοιπες παίρνουν τον εναπομείνονται χρόνο της CPU. :roll: :roll: :roll:

2.2 Η διεργασία init ( ) είναι η σημαντικότερη διεργασία στο σύστημα μας και παίρνει πάντοτε 1 σαν PID

Για να αντιληφθούμε την σημασία της μπορούμε να μεταφερθούμε στον κατάλογο της.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ cd /etc/init.d
kostas@kostas-SSL:/etc/init.d$ ls
acpid            hwclock                     rsyslog
acpi-support     hwclock-save                rwhod
alsa-mixer-save  irqbalance                  saned
anacron          kerneloops                  screen-cleanup
apache2          killprocs                   sendsigs
apparmor         lm-sensors                  single
apport           module-init-tools           skeleton
atd              mysql                       smartmontools
avahi-daemon     networking                  snmpd
binfmt-support   network-interface           speech-dispatcher
bluetooth        network-interface-security  stop-bootlogd
bootlogd         ondemand                    stop-bootlogd-single
brltty           pcmciautils                 sudo
console-setup    plymouth                    udev
cron             plymouth-log                udev-finish
cups             plymouth-splash             udevmonitor
dbus             plymouth-stop               udevtrigger
dmesg            pppd-dns                    ufw
dns-clean        procps                      umountfs
failsafe-x       pulseaudio                  umountnfs.sh
fancontrol       rc                          umountroot
gdm              rc.local                    unattended-upgrades
grub-common      rcS                         urandom
halt             README                      x11-common
hddtemp          reboot
hostname         rsync


Ας υποθέσουμε οτι το ποντίκι μας ξαφνικά χάλασε (κακό σενάριο) !!!! Πριν προλάβουμε να τερματίσουμε κάποια εφαρμογή που θα θέλαμε με γραφικό τρόπο.

Μπορώ να τερματίσω-σταματήσω-κλείσω οπως θέλετε πειτε το (αν ο κερσορας συνεχιζει να αναβοσβηνει στο τερματικο)!!! οποιαδήποτε εφαρμογή η οποία υπάρχει στον κατάλογο της init
δίνοντας την παρακάτω εντολή

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ sudo /etc/init.d/bluetooth stop


και αντιστοίχως να την ξανα ενεργοποιήσω

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ sudo /etc/init.d/bluetooth start
;) ;) ;) ;)

3.Στο σημείο αυτό ήρθε η στιγμή να δούμε μερικές εντολές στο τερματικό που σχετίζονται με τις διεργασίες

Με την εντολή ps μπορούμε να δούμε αρκετά πραγματάκια.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps
  PID TTY          TIME CMD
1922 pts/0    00:00:00 bash
2020 pts/0    00:00:00 ps


Το 1ο βήμα είναι η εντολή ps χωρίς σημάνσεις ή ορίσματα. Το PID είναι ένας αριθμός αναγνωριστικός για κάθε διεργασία ο οποίος αποτελεί την ταυτοτητά της , κάθε στιγμή αυτη η ταυτότητα ειναι μοναδική αλλα μπορούμε να την δούμε να επαναλαμβάνεται χωρις να χρειαζεται να παραξενευτούμε μιας και το εύρος των αριθμών που δίνει το λειτουργικό ειναι περιορισμένος( απο 0 εως 3300 περίπου). Η στηλη TTY μου δείχνει την συσκευή του τερματικού μου ενω το CMD αναφέρεται στην εντολή που εκτελώ καθε φορα.

Για να δούμε τις διεργασίες που σχετίζονται με το τερματικό αρκεί να χρησιμοποιήσουμε την σήμανση -a στην ps

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -a
  PID TTY          TIME CMD
1683 pts/0    00:00:00 ps


Αρκετά καθαρό το τερματικό μου αυτή τη στιγμή , η μόνη διεργασία που εκτελείται σε αυτό ειναι αυτη της εντολής ps.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -u
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
kostas    1659  0.1  0.2  22544  3976 pts/0    Ss   01:12   0:00 bash
kostas    1684  0.0  0.0  17768  1200 pts/0    R+   01:15   0:00 ps -u
Εδώ βλέπουμε έξοδο σχετική με τον χρήστη. Θα σταθούμε λίγο για να εξηγήσουμε τα πεδία που εμφανίζονται . Το πεδίο USER έχει να κάνει με τον χρήστη του συστήματος που στην προκειμένη ειναι ο kostas δηλαδη εγώ!!! :D :D :D . Το PID αποτελεί την ταύτοτηα της διεργασίας είναι ένας αριθμός μοναδικός για κάθε διεργασία όπως αναφέραμε και πιο πάνω μέσω του οποίου γίνεται η ταυτοποιησή της απο το λειτουργικό μας σύστημα. Το %CPU & %MEM είναι το ποσοστό χρησιμοποιούμενης ΚΜΕ και μνήμης αντίστοιχα! Το VSZ σχετίζεται με την εικονική μνήμη του συστήματος το RSS αναφέρεται στην πραγματική χρησιμοποιούμενη μνήμη το ΤΤΥ είναι η συσκευή του τερματικού μας. το STAT προέρχεται απο το STATE και αναφέρεται στην κατάσταση της συγκεκριμένης διεργασίας +R σε κατάσταση Running . To START έχει να κάνει με την ώρα εκκίνησης της εντολής - διεργασίας το TIME με τον χρόνο χρήσης της CPU και τέλος το CMD με την εντολή που εκτελείται.

Μπορούμε να συνδυάσουμε όλες τις παραπάνω σημάνσεις για την ps σε μια ακριβώς εντολή και να δούμε οτιδήποτε συμβαίνει στο συστημά μας.

Κώδικας: Επιλογή όλων
ps -aux
αλλα σας προειδοποιώ πως η έξοδος θα ειναι αρκετά μεγάλη :D

Ωστόσο η εντολή ps -aux είναι ισοδύναμη και με την ps -ef αλλα και με την ps -A

Κώδικας: Επιλογή όλων
ps -A
που δείχνει όλες τις διεργασίες του συστήματος και αυτη με την σειρά της.

αυτό μπορούμε να το διαπιστώσουμε εύκολα αν βάλουμε στο "παιχνίδι" το προγραμματάκι wc μαζι με την σήμανση -l που εμφανίζει τις γραμμες της εξόδου μέσω μιας διοχεύτευσης

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -aux | wc -l
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
171
και

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -A | wc -l
171


κάτι το οποίο φαίνεται και μέσω του προγράμματος top (Το οποίο σε αυτή την περίπτωση έχει διάρκεια συνεχή και ανανέωνεται ανα δευτερόλεπτο σε αντίθεση με την ps )

Κώδικας: Επιλογή όλων
Tasks: 169 total,   2 running, 167 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.8%us,  1.3%sy,  0.0%ni, 93.2%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1851536k total,  1768548k used,    82988k free,   876056k buffers
Swap: 26491900k total,        0k used, 26491900k free,   349424k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
1019 root      20   0  163m  34m  11m S    4  1.9   3:21.80 Xorg               
1593 kostas    20   0  798m 180m  32m S    4 10.0   5:21.73 firefox-bin       
1712 kostas    20   0  134m  47m  15m R    2  2.6   7:55.06 npviewer.bin       
    1 root      20   0 23856 1980 1272 S    0  0.1   0:00.98 init       


Μπορώ να χρησιμοποιήσω την εντολή ps με την σήμανση -ef που ειπώθηκε πιο πάνω για να δώ όλες τις διεργασίες του συστήματος και μέσω μιας σωλήνωσης να βρώ για παράδειγμα το PID του amsn μου ή του xchat κτλπ....

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -ef |grep amsn
kostas    2049  2031 22 15:28 pts/3    00:00:05 wish8.5 /usr/bin/amsn
kostas    2055  1652  0 15:29 pts/0    00:00:00 grep --color=auto amsn



Έστω τωρα οτι σε αυτό το σημείο θα ήθελα να κλείσω την εφαρμογή firefox-bin που βλέπω παραπάνω το PID της μέσω της top ή οποιαδήποτε εφαρμογή κολλάει !!!

Κώδικας: Επιλογή όλων
kill 1593


μπορώ αντί της kill PID να δώσω την kill με το σήμα SIGHUP για το οποίο έγινε λόγος πιο πάνω

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ kill -SIGHUP 1593
η διεργασία που χειρίζεται την εφαρμογή σε επίπεδο πυρήνα θα κλείσει και με αυτόν τον τρόπο.

Μπορούμε να δούμε όλα τα σήματα που υπάρχουν για την εντολή kill μεσω της

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ kill -l
1) SIGHUP    2) SIGINT    3) SIGQUIT    4) SIGILL    5) SIGTRAP
6) SIGABRT    7) SIGBUS    8) SIGFPE    9) SIGKILL   10) SIGUSR1
11) SIGSEGV   12) SIGUSR2   13) SIGPIPE   14) SIGALRM   15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD   18) SIGCONT   19) SIGSTOP   20) SIGTSTP
21) SIGTTIN   22) SIGTTOU   23) SIGURG   24) SIGXCPU   25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF   28) SIGWINCH   29) SIGIO   30) SIGPWR
31) SIGSYS   34) SIGRTMIN   35) SIGRTMIN+1   36) SIGRTMIN+2   37) SIGRTMIN+3
38) SIGRTMIN+4   39) SIGRTMIN+5   40) SIGRTMIN+6   41) SIGRTMIN+7   42) SIGRTMIN+8
43) SIGRTMIN+9   44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13
48) SIGRTMIN+14   49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12
53) SIGRTMAX-11   54) SIGRTMAX-10   55) SIGRTMAX-9   56) SIGRTMAX-8   57) SIGRTMAX-7
58) SIGRTMAX-6   59) SIGRTMAX-5   60) SIGRTMAX-4   61) SIGRTMAX-3   62) SIGRTMAX-2
63) SIGRTMAX-1   64) SIGRTMAX   


Πέρα απο την εντολή kill υπάρχει και μια παραλλαγή αυτής η εντολή killall για να κάνουμε μια σωστή σύγκριση ανάμεσα στην kill και την killall θα δώσουμε ένα παράδειγμα . Εγω προσωπικά έχω 3 λογαριασμούς του messenger (AMSN ) θα ενεργοποιήσω και τους 2 απο 2 διαφορετικα τερματικα... κρατώντας ένα ακομη τερματικό ανοικτό το οποίο δεν θα απασχολείται απο τις 2 αυτές ξεχωριστές διεργασίες του messenger μου! Απο το 3ο τερματικό λοιπόν δίνω την εντολή

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ps -a
  PID TTY          TIME CMD
1820 pts/1    00:00:06 wish8.5
1844 pts/2    00:00:07 wish8.5
1849 pts/2    00:00:00 aplay <defunct>
1898 pts/0    00:00:00 ps


Αν επιλέξω να χρησιμοποιήσω την σκέτη kill θα χρειαστεί να χρησιμοποιήσω το αντιστοιχο PID καθεμιάς εκ των διεργασιών των 2 amsn για να τερματισω ένα απο τα 2 ομως.... (μπορω να τερματίσω και τα 2 φυσικα αλλα με 2 PID διπλα στην kill για την καθεμια ξεχωριστά). Στο σημείο αυτό αν εγώ θέλω να τερματίσω και τις 2 διεργασίες ταυτόχρονα μεσω της kill δεν μπορώ να το πετύχω διοτι

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ kill wish8.5
bash: kill: wish8.5: arguments must be process or job IDs



:idea: :idea: :idea: :idea: Θα χρησιμοποιήσω την killall <name_programm> που ειναι και η βασική της σύνταξη για να καταλάβω τι κάνει

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ killall wish8.5


Πράγματι!!!! Ηταν αυτό που ήθελα!!! Και οι 2 εφαρμογές του amsn που έτρεχαν απο 2 διαφορετικά τερματικά έκλεισαν!!!

ΣΥΜΠΕΡΑΣΜΑ -> Η killall σκοτώνει όλες τις διεργασίες που τρέχουν και έχουν ένα συγκεκριμένο όνομα!!!!

ΠΡΟΣΟΧΗ!!! Η χρήση της killall θα πρέπει να γίνεται με προσοχή. Το οτι παρέχει κάποιον βαθμό ευκολίας στον τερματισμό μιας ομάδας διεργασιών με το ίδιο όνομα δεν ειναι πάντα τόσο αθώο!

Η εντολή ps έχει περισσότερες σημάνσεις και απο την ls!!!!! Οπότε αν θέλουμε να δούμε όλες τις σημάνσεις της μπορούμε να δώσουμε

Κώδικας: Επιλογή όλων
man ps
δίνοντας μας 1 εγχειρίδιο 1137 γραμμών!!!!!


4. Βασικός Χρονοπρογραμματισμός Διεργασιών

Κάποιες φορές χρειάζεται να έχουμε οι ίδιοι τον πλήρη έλεγχο των διεργασιών (αν όχι των βασικών του συστήματος για το οποίο χρειάζεται αρκετή εμπειρία και χρόνια ενασχόλησης με το λίνουξ) σίγουρα των απλών προγραμμάτων που εκτελούμε. Ένας σημαντικός λόγος προς την κατεύθυνση αυτή είναι οτι η εκτέλεση ενός προγράμματος απο το τερματικό μπορεί να χρειαστεί αρκετή ώρα ωστε να κάτσουμε να την περιμένουμε μιας και πρέπει να ασχοληθούμε με κάτι άλλο όση ώρα αυτή εκτελείται στο παρασκήνιο ή απλα αναμένει απο το σημείο που την αφήσαμε όπως πραγματικά μπορεί να γίνει με τους διάσημους επεξεργαστές κειμένων vi . Για να θέσουμε τον vi στο παρασκήνιο αρκεί να δώσουμε το όνομα του και δίπλα τον ειδικό χαρακτήρα &. Αυτή η τακτική μπορει να δουλέψει φυσικά με όλα τα προγράμματα :idea:

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ vi &
[1] 2564
kostas@kostas-SSL:~$ jobs
[1]+  Stopped                 vi
kostas@kostas-SSL:~$


Θέσαμε τον vi στο παρασκήνιο και στην συνέχεια εκτελέσαμε την εντολη jobs για να δούμε την ουρά με τις διεργασίες που υπάρχουν στο παρασκήνιο.... στο σημείο αυτο υπάρχουν 2 βασικά σημεία που πρέπει να επισημάνουμε. Καταρχήν ο αριθμος [1] δεν σχετίζεται σε καμία περίπτωση με τους μονοψήφιους κωδικούς οι οποίοι δίνονται σε βασικές διεργασίες του συστήματος οπως ειναι η init αλλα για λόγους ευκολίας η εντολή μας λέει πως στην ουρά η 1η διεργασια που περιμένει ειναι αυτη με PID 2564 δηλαδή του vi. Και το 2ο σημείο είναι το stopped , αυτο σημαίνει οτι απαιτείται είσοδος απο τον χρήστη.

Για να φέρω αυτη την διεργασία στο προσκήνιο αρκεί να εκτελέσω την

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ fg


Κώδικας: Επιλογή όλων
~                                                                               
~                                                                               
~                                                                               
~                              VIM - Vi IMproved                               
~                                                                               
~                               version 7.2.330                                 
~                           by Bram Moolenaar et al.                           
~                 Vim is open source and freely distributable                   
~                                                                               
πράγματι μου άνοιξε τον κειμενογράφο vi.

Για να τερματίσω την διεργασία στο παρασκήνιο μπορώ να δώσω την γνωστή εντολη kill ακολουθομενη με % και τον αριθμό που βρίσκεται μέσα στις αγκύλες και δείχνει την σειρά της στην ουρά.

Κώδικας: Επιλογή όλων
         kostas@kostas-SSL:~$ kill %1 


Στο σημείο αυτό μπορώ επίσης να χρονοπρογραμματίσω διεργασίες να εκτελεστούν την ημέρα και ώρα που θέλω εγώ !!! Αυτό μπορει να γίνει με την εντολή at

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ at 2.00
warning: commands will be executed using /bin/sh
at> touch file
at> <EOT>
job 5 at Fri Mar 25 02:00:00 2011
kostas@kostas-SSL:~$ atq
5   Fri Mar 25 02:00:00 2011 a kostas


Προγραμμάτισα λοιπόν για απόψε στις 2 τα μεσάνυχτα ο πυρήνας να καλέσει το πρόγραμμα touch δημιουργώντας ενα αρχείο με όνομα file στην συνέχεια πάτησα COntrol + D για να βγώ απο το πρόγραμμα το οποίο μου επέστρεψε την εργασία που πρόκειται να υλοποιήσει. Στην συνέχεια με την atq είδα την ουρά με τις προγραμματισμένες διεργασιές και τέλος μπορώ να διαγράψω την προγραμματισμένη διεργασία με την εντολη atrm + τον αριθμό 5 που δίνεται παραπάνω

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ atrm 5
kostas@kostas-SSL:~$ atq
kostas@kostas-SSL:~$
Πραγματι η atrm εκανε καλά την δουλεία της μιας και η κλήση της atq στην συνέχεια δεν εμφάνισε τιποτε.

Μπορούμε να χρησιμοποιήσουμε την εντολή at κάνοντας την ακόμη πιο ακριβή (ως προς την ημερομηνία) και δινοντας της και άλλες εργασίες προς εκτέλεση.

Για παράδειγμα

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ at 1200 april 5
warning: commands will be executed using /bin/sh
at> touch hello
at> <EOT>
job 7 at Tue Apr  5 12:00:00 2011


Δημιουργία του αρχείου hello στις 5 Απριλίου του 2011 ( Εφοσον δεν δώσαμε ακριβές έτος το πρόγραμμα θα χρησιμοποιήσει το τρέχον έτος προκαθορισμένα)
Φυσικά στην προτροπή at> μπορούμε να δώσουμε οποιαδήποτε εργασία θέλουμε να γίνει.... απο την δημιουργία ενός απλού αρχείου μέχρι και την μεταγλώττιση ενός προγράμματος με την
Κώδικας: Επιλογή όλων
cc -o crc crc.c
για τον διάσημο αλγόριθμο CRC που χρησιμοποιείται για checksum στο Ethernet!!!!

Επίσης μπορούμε και απευθείας να δώσουμε μια εργασία με μια εντολή στο πρόγραμμα at χωρίς να μπούμε σε προτροπές του.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ echo "hello world" > new.txt | at 13.35
warning: commands will be executed using /bin/sh
job 6 at Fri Mar 25 13:35:00 2011


Μέσα σε ένα αρχείο κειμένου με όνομα new θέλω να περάσω την συμβολοσειρά "hello world" χρησιμοποιώντας την echo και στην συνέχεια όλο αυτο να το περάσω σαν εργασία στην at.

EDIT: Για πιο έμπειρους διαχειριστές υπάρχουν και περισσότερες πληροφορίες που μπορούν να αντλήσουν για μια διεργασία.

απο το τερματικό δίνουμε την εντολή για να μπούμε στο εικονικό σύστημα αρχείων /proc οπου εκει έχουμε τα PID της κάθε διεργασίας αριθμημένα σαν καταλόγους. Η ονομασία καθε καταλογου αντιστοιχεί με το PID της αντιστοιχης διεργασίας.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:/$ cd proc
kostas@kostas-SSL:/proc$ ls
1     1317  1633  1792  351   57    799        dri            partitions
10    1323  1634  18    36    6     8          driver         sched_debug
1026  14    1638  1800  37    606   80         execdomains    schedstat
1029  1416  1640  19    38    62    800        fb             scsi


επειδή η έξοδος ειναι λίγο μεγάλη θα περιοριστούμε.

στην συνέχεια άν μπούμε στον κατάλογο της init της αρχικής διεργασίας(δίνοντας το PID της δηλαδη το 1) και πατέρα ολων των υπολοίπων θα δούμε επιμέρους αρχεία που έχουν πληροφορίες σχετικά με την καταστασή της. Και θα ανοίξουμε και 2 στο πιο κατω τμημα... Το status και coredump_filter

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:/proc$ cd 1
kostas@kostas-SSL:/proc/1$ ls
ls: αδυναμία ανάγνωσης συμβολικού συνδέσμου cwd: Άρνηση πρόσβασης
ls: αδυναμία ανάγνωσης συμβολικού συνδέσμου root: Άρνηση πρόσβασης
ls: αδυναμία ανάγνωσης συμβολικού συνδέσμου exe: Άρνηση πρόσβασης
attr             cpuset   latency    mountstats   root       statm
auxv             cwd      limits     net          sched      status
cgroup           environ  loginuid   numa_maps    schedstat  syscall
clear_refs       exe      maps       oom_adj      sessionid  task
cmdline          fd       mem        oom_score    smaps      wchan
comm             fdinfo   mountinfo  pagemap      stack
coredump_filter  io       mounts     personality  stat
kostas@kostas-SSL:/proc/1$ cat coredump_filter
00000023

kostas@kostas-SSL:/proc/1$ cat status
Name:   init
State:   S (sleeping)
Tgid:   1
Pid:   1
PPid:   0
TracerPid:   0
Uid:   0   0   0   0
Gid:   0   0   0   0
FDSize:   64
Groups:   
VmPeak:      23880 kB
VmSize:      23868 kB
VmLck:          0 kB
VmHWM:       2032 kB
VmRSS:       1760 kB
VmData:        708 kB
VmStk:        136 kB
VmExe:        116 kB
VmLib:       2348 kB
VmPTE:         64 kB
VmSwap:        272 kB
Threads:   1



επειδή παλι η έξοδος ηταν μεγάλη το περιόρισα.

Για το αρχειο coredump_filter οπου υπάρχει μεγάλη συζήτηση απο πισω μπορει καποιος να διαβασει
και στους παρακάτω σύνδεσμους

http://www.kernel.org/doc/man-pages/onl ... ore.5.html
http://en.wikipedia.org/wiki/Memory-mapped_I/O

με 2 λογια προκειται για την αποτύπωση της μνήμης της διεργασίας σε ένα αρχείο ("χωματερής πυρήνα")
υστερα απο ανώμαλο τερματισμό πχ παράνομη προσπέλαση μνήμης.


5. ΕΠΙΛΟΓΟΣ "Οι 4 ημέρες της ζωής ενός Διαχειριστή του Λίνουξ" (Ένας Παραλληλισμός)

Ο Bob είναι ένας άνθρωπος ο οποίος ζεί στην Ν. Υορκη και ασχολείται αρκετά χρόνια με τα λειτουργικά συστήματα των UNIX / Linux.

ΗΜΕΡΑ 1η : Ξαφνικά ένα πρωί κτύπησε το τηλεφωνό του απο έναν φίλο του ο οποίος είχε δικό του ταξιδιωτικό γραφείο , ο φίλος του φαινόταν ταραγμένος και αρκετά ανήσυχος καθώς ο διακομιστής ο οποίος φιλοξενούσε το σάιτ της επιχειρησής του φαινόταν να μήν πηγαίνει και τόσο καλά τώρα τελευταία. Τι συμβαίνει αναρωτήθηκε ο Bob στον φίλο του. Ο φίλος του , του εξήγησε πως ο υπολογιστής της επιχειρησής του κολλάει και ειναι πραγματικά αργός! Ο BOb ρώτησε τον φίλο του τι λειτουργικό σύστημα τρέχει ο συγκεκριμένος υπολογιστής ... Linux ήταν η απάντηση με διανομή UBuntu!!! Κοίταξε να δεις του αποκρίθηκε ο Bob εφόσον απέκλεισε όλα τα ενδεχόμενα ο υπολογιστής να έχει πρόβλημα στο μηχανικό του τμήμα.... Κάποιες διεργασίες σου κάνουν την ζημιά οι οποίες τρέχουν και δημιουργούν φόρτο στον επεξεργαστή . ΤΙ ειναι οι διεργασίες ρωτήθηκε απο τον φίλο του... ΟΙ διεργασίες ειναι προγράμματα τα οποία τρέχουν στο συστημά σου του αποκρίθηκε ο BOb , κάθε διεργασία μπορεί να ξεκινήσει μια άλλη και να υπάρχει μια γονική σχέση ανάμεσα στις 2. Γονικές και θυγατρικές διεργασίες αντίστοιχα η init είναι ο πατέρας όλων των διεργασιών του συστήματος αν η θυγατρική ειναι ίδια με την γονική τότε έχουμε διακλάδωση διεργασιών (fork) μπορείς να δείς την ιεραρχία των διεργασιών με την
Κώδικας: Επιλογή όλων
pstree
αλλα θα περάσω αύριο καλύτερα απο κοντά να δούμε τι μπορουύμε να κάνουμε!

ΗΜΕΡΑ 2η : Ο Bob βρισκόταν ήδη απο το μαγαζί του φίλου του και του εξηγούσε με ποιό τρόπο τα προγράμματα-διεργασίες τρέχουν σαν στιγμιότυπα στην RΑΜ! Καθως και τον τρόπο με τον οποίο ο επεξεργαστής στο λίνουξ διαχειρίζεται τις διεργασίες ως προς την προτεραιότητα τους. Ο Bob ηθελε μεσω καποιας εντολής να δεί όλες τις διεργασίες που σχετιζόντουσαν με τα συνδεδεμένα στο σύστημα τερματικά για τον διακομιστη οπως και επισης ολες τις ενδιαφέρουσες διεργασίες οι οποιες δεν απαιτούνται απο το λειτουργικό συστημα... για αυτο δοκιμασε την
Κώδικας: Επιλογή όλων
ps -ag
στο πεδίο STAT είδε έναν κωδικό IW αμέσως σκέφτηκε πως είναι διεργασίες που έχουν περάσει εκτός κυριας μνήμης και είναι πλέον στον δίσκο. Τι σημαίνει αυτο τον ρώτησε ο φίλος του???? Με επηρεάζει???? Οχι του απαντησε ο Bob απλως οταν θα ενεργοποιήσεις το πρόγραμμα θα χρειαστούν ένα η δύο επιπλέον δευτερόλεπτα στον χρόνο προσπέλασης λόγω του σχήματος της πυραμίδας που παίζει στην μνήμη ... Αρκετα για σήμερα σκέφτηκε ο Bob .

ΗΜΕΡΑ 3η : O Bob ανακαλυψε αρκετές διεργασίες οι οποίες είχαν τελείωσει μεν αλλα για καποιο λόγο δεν είχαν ελευθερώσει τους πόρους τους.Σε ένα συστημα το οποιο κάνει επανεκκινησεις... αυτο δεν θα ηταν προβλημα σκεφτηκε ο Bob διοτι οι διεργασιες αυτες οι οποίες ονομάζονται ZOMBIE θα είχαν τερματίσει έτσι και αλλιώς αλλα ο σέρβερ του φίλου του έπρεπε να ηταν μονίμως σε λειτουργία !!! Θα χρειαζόταν να χρησιμοποιήσει την εντολη
Κώδικας: Επιλογή όλων
kill PID_ZOMBIE
για να τις τερματίσει ο ίδιος. Και επειδή υπήρχαν και κάποιες άλλες με το ίδιο όνομα που έτρεχαν σε παραπάνω απο ένα τερματικά χρησιμοποιήσε και την
Κώδικας: Επιλογή όλων
killall name_programm
για να τις τερματίσει όλες με μιας εφόσον διαπίστωσε οτι κάτι τέτοιο δεν θα δημιουργούσε κάποιο άλλο πρόβλημα στην λειτουργία του συστήματος. Ο Bob επισήμανε στον φίλο του πως αύριο θα ήταν μια τελευταία μέρα στην οποία θα του έδειχνε πώς να εκμεταλεύεται τα Σάββατα και τις αργίες οπου η κίνηση στον διακομιστή δεν ειναι μεγάλη για να προγραμματισει διεργασίες που θα εκτελούνταν εκείνες τις ώρες!!!

ΗΜΕΡΑ 4η : O Bob χρησιμοποιήσε την εντολη
Κώδικας: Επιλογή όλων
at 
για να προγραμματισει τις διεργασίες οι οποίες έτρεχαν στο σύστημα τις ίδιες μέρες και ώρες οπου ο διακομιστης είχε ήδη το φόρτο των πελατών τις καθημερινές..... βαζοντας τες να εκτελεστούν σε ημέρες οπου η κίνηση θα ήταν μειωμένη...εξήγησε στον φίλο του πως μπορεί και ο ίδιος να το κάνει όποτε κρίνεται αναγκαίο χρησιμοποιώντας την at μαζι με την ημερομηνία (πχ 2 Απριλιου) και το έτος αν δεν ήθελε να τις χρονοπρογραμματισει για φετος!!! Είμαστε εντάξει είπε ο Bob και ο φίλος του φαινόταν ικανοποιημένος.


Ο οδηγός αυτός αποτελεί μια προσωπική έμπνευση όσο αναφορα τον επιλογό του μιας και προσπάθησα να κάνω έναν παραλληλισμό :D :D :D . Ενδέχεται να υπάρχουν κάποια λαθάκια.... Να μου τα επισημάνετε οπωςδηποτε για να τα αλλάξω και να τον ανανεώσω! ΕΛπίζω να τον βρείτε χρήσιμο..... :bow: :bow: :bow: :bow:


Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα
Τελευταία επεξεργασία από Star_Light και 16 Ιουν 2011, 02:30, έχει επεξεργασθεί 21 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό the_eye » 25 Μαρ 2011, 13:20

To ps -x δεν δείχνει όλες τις διεργασίες. (x processes w/o controlling ttys)
Το ps -A (A all processes) είναι αυτό που θες.

Ανέφερε και την killall

Δώσε μερικές ακόμα πληροφορίες/ παραδείγματα για την at
Όσο λιγότερο κλειστό λογισμικό έχεις, τόσα λιγότερα προβλήματα.
1 Γνώσεις ⇛ Linux: Καλό ┃ Προγραμματισμός: Ναι PHP, MySQL ┃ Αγγλικά: Καλά
2 Ubuntu 22.04 Jammy Jellyfish 5.15.0-58-generic 64bit (el_GR.UTF-8, ubuntu:GNOME ubuntu)
3 Intel Core i3-6100 CPU @ 3.70GHz ‖ RAM 7836 MiB ‖ Gigabyte B150M-HD3 DDR3-CF - Gigabyte B150M-HD3 DDR3
4 Intel HD Graphics 530 [8086:1912] {i915}
5 enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Οδηγοί Ubuntu Βίντεο Οδηγοί
Άβαταρ μέλους
the_eye
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 11671
Εγγραφή: 16 Μαρ 2010, 17:19
Launchpad: ntoulasd
IRC: the_eye_
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 13:32

the_eye έγραψε:To ps -x δεν δείχνει όλες τις διεργασίες. (x processes w/o controlling ttys)
Το ps -A (A all processes) είναι αυτό που θες.

Ανέφερε και την killall

Δώσε μερικές ακόμα πληροφορίες/ παραδείγματα για την at


Ευχαριστω !!!! Θα τα ψαξω.... με την 2. παραγραφο ειμαστε ενταξει εχω κανει καποιο λαθος ???? επειδη ειναι σημαντικη πιστευω και αυτη!!!!
Η 5 σαν πρακτικο παραδειγμα ειναι ευσταθες ???? Εχει λαθη???? Ειναι περιττη??? :bow: :bow: :bow: :bow:
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό grimm » 25 Μαρ 2011, 14:01

Χρήσιμο tutorial.

Star_Light έγραψε: kostas@kostas-SSL:~$ ps -x | grep amsn
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
2057 pts/1 Sl+ 0:06 wish8.5 /usr/bin/amsn
2063 pts/0 S+ 0:00 grep --color=auto amsn
kostas@kostas-SSL:~$

ακριβώς αυτό που έψαχνα!!!!!!! Φυσικα αξίζει να σημειωθεί πως η amsn εμφανίζεται 2 φορές σε 2 τερματικά. Ο λόγος ειναι διοτι την έχω ήδη εκκινήσει απο το τερματικό για να ανοίξει ;)

Δεν κατάλαβα ακριβώς τι θες να πεις αλλά αν κατάλαβα καλά, θέλω να πω πως η δεύτερη γραμμή που επιστρέφει η εντολή grep
με PID 2063, είναι η εκτέλεση της ίδιας της grep με παράμετρο "amsn".
Γνώσεις ⇛ Linux: ψόφια πράγματα ┃ Προγραμματισμός: μόνο διακοπών ┃ Αγγλικά: Μέτρια
Λειτουργικό ⇛ Ubuntu (lucid)
Προδιαγραφές ⇛ Intel Core 2 Quad Q6600 │ 3GB │ nVidia GeForce 8600 GT │ TFT 19" / 1280x1024
grimm
punkTUX
punkTUX
 
Δημοσιεύσεις: 263
Εγγραφή: 31 Μάιος 2009, 11:55
IRC: grimm_
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 14:09

grimm έγραψε:Χρήσιμο tutorial.

Star_Light έγραψε: kostas@kostas-SSL:~$ ps -x | grep amsn
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
2057 pts/1 Sl+ 0:06 wish8.5 /usr/bin/amsn
2063 pts/0 S+ 0:00 grep --color=auto amsn
kostas@kostas-SSL:~$

ακριβώς αυτό που έψαχνα!!!!!!! Φυσικα αξίζει να σημειωθεί πως η amsn εμφανίζεται 2 φορές σε 2 τερματικά. Ο λόγος ειναι διοτι την έχω ήδη εκκινήσει απο το τερματικό για να ανοίξει ;)

Δεν κατάλαβα ακριβώς τι θες να πεις αλλά αν κατάλαβα καλά, θέλω να πω πως η δεύτερη γραμμή που επιστρέφει η εντολή grep
με PID 2063, είναι η εκτέλεση της ίδιας της grep με παράμετρο "amsn".


Ναι σωστά. Απλα ηθελα να πω πως απο το ενα τερματικο απλα έχει ανοιξει απο εκει το προγραμμα και τρεχει.... αν σας μπερδευει... μπορω η να αλλαξω διατυπωση η να το σβησω..... απο σχολιο.... τελικα βγηκε μεγαλος!!!!
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό the_eye » 25 Μαρ 2011, 14:09

Αναφέρεις την μνήμη RAM στα ελληνικά ως ΡΑΜ, είναι λάθος, καλύτερα άστο RAM.
Ακόμα τον επεξεργαστή τον αναφέρεις ως ΚΜΕ αλλά και ως CPU και εγώ προτιμώ της ελληνικές λέξεις αλλά είναι έννοιες που έχουν καθιερωθεί με την ξένη συντομογραφία τους.

Το 2 είναι από μόνο του το θέμα πολύ δύσκολο, η προσέγγισή σου είναι καλή. Μπορείς να βάλεις και άλλα. http://oreilly.com/catalog/linuxkernel/ ... /ch10.html
Το 5 για μένα είναι περιττό σε κάποιον άλλο μπορεί να αρέσει. Γενικότερα καλύτερα να έδινες περισσότερα παραδείγματα στην ανάλυσή σου παρά το 5.

:geek: :thumbup:
Όσο λιγότερο κλειστό λογισμικό έχεις, τόσα λιγότερα προβλήματα.
1 Γνώσεις ⇛ Linux: Καλό ┃ Προγραμματισμός: Ναι PHP, MySQL ┃ Αγγλικά: Καλά
2 Ubuntu 22.04 Jammy Jellyfish 5.15.0-58-generic 64bit (el_GR.UTF-8, ubuntu:GNOME ubuntu)
3 Intel Core i3-6100 CPU @ 3.70GHz ‖ RAM 7836 MiB ‖ Gigabyte B150M-HD3 DDR3-CF - Gigabyte B150M-HD3 DDR3
4 Intel HD Graphics 530 [8086:1912] {i915}
5 enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Οδηγοί Ubuntu Βίντεο Οδηγοί
Άβαταρ μέλους
the_eye
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 11671
Εγγραφή: 16 Μαρ 2010, 17:19
Launchpad: ntoulasd
IRC: the_eye_
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 14:50

the_eye έγραψε:Αναφέρεις την μνήμη RAM στα ελληνικά ως ΡΑΜ, είναι λάθος, καλύτερα άστο RAM.
Ακόμα τον επεξεργαστή τον αναφέρεις ως ΚΜΕ αλλά και ως CPU και εγώ προτιμώ της ελληνικές λέξεις αλλά είναι έννοιες που έχουν καθιερωθεί με την ξένη συντομογραφία τους.

Το 2 είναι από μόνο του το θέμα πολύ δύσκολο, η προσέγγισή σου είναι καλή. Μπορείς να βάλεις και άλλα. http://oreilly.com/catalog/linuxkernel/ ... /ch10.html
Το 5 για μένα είναι περιττό σε κάποιον άλλο μπορεί να αρέσει. Γενικότερα καλύτερα να έδινες περισσότερα παραδείγματα στην ανάλυσή σου παρά το 5.

:geek: :thumbup:


OK!!!! Κοίτα ήθελα να αναλύσω και το 2 για να μπορει ας πούμε κάποιος (μεσα σε αυτους και εγω) να συζητήσει την λειτουργία των διεργασιών και εσωτερικά ... φυσικα δεν έχω μπει σε μεγάλο βάθος να εξηγήσω τι και πως... απλα επιγραμματικά σε ρωτάει καποιος ξέρεις τι συμβαίνει ... με απλά λόγια πες μου (προσεγγίζοντας μεν σε κάποιο βάθος την κατάσταση μην μου πεις απλα οτι η διεργασία ειναι ένα πρόγραμμα χαίρω πολύ) έχω μια RAM και μια CPU τι δουλειά έχουν αυτές με τις διεργασίες και τι παίζει και με τον πυρήνα και το λειτουργικό . Το 5 δεν είναι πρόβλημα... αν θεωρείται οτι κουράζει τον αναγνώστη γιατι έβαλα και άλλα απο αυτά που μου είπες... εγω το σβήνω!!! Απλα ηθελα να κάνω μια αναπαράσταση σε πραγματικό πρόβλημα που πιθανον να υπήρχε....μετα την θεωρητική αναλυση που προηγηθηκε.

Παρολαυτα άλλαξα αυτα που μου είπες....οκ με την ps -A την πρόσθεσα και έβαλα και περισσότερα παραδείγματα για την at . Τώρα μένει μονο η ps -x να διορθωθει και να βαλω και την killall απλα θελω να την καταλαβω καλα πρωτα σε συγκριση με την απλη kill πριν την βαλω... προτασεις ειναι ευπροσδεκτες.... απλα μου έκανε και μένα εντύπωση διοτι απο σοβαρό βιβλίο διάβασα πως η σημανση -x δειχνει ολες τις διεργασιες.... βεβαια εχεις δικιο προφανως μιας και φαινεται και μεσω του wc -l που το προσθεσα και αυτο.....
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 15:42

Αν και το 5 εχει μεσα και καποιες εξτρα λεπτομερειες και για τον δισκο που μπαινει στο παιχνιδι σε καποια φαση... αλλα και για τις διεργασιες zombie τελοςπαντων!!! Τα βαζω μεσα στον γενικο οδηγο αυτα δεν ειναι προβλημα...
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό simosx » 25 Μαρ 2011, 16:46

Ωραίο άρθρο, μερικά σχόλια.

1. Τώρα πια γράφουμε π.χ.
Κώδικας: Επιλογή όλων
ps aux

για να δούμε όλες τις διεργασίες, αντί για «ps -aux». Δηλαδή δε βάζουμε πια το «-».

2. Υπάρχει και το pstree που δείχνει την ιεραρχία των διεργασιών.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Εισαγωγή στις Διεργασίες του Λίνουξ

Δημοσίευσηαπό Star_Light » 25 Μαρ 2011, 16:55

simosx έγραψε:Ωραίο άρθρο, μερικά σχόλια.

1. Τώρα πια γράφουμε π.χ.
Κώδικας: Επιλογή όλων
ps aux

για να δούμε όλες τις διεργασίες, αντί για «ps -aux». Δηλαδή δε βάζουμε πια το «-».

2. Υπάρχει και το pstree που δείχνει την ιεραρχία των διεργασιών.


ΕΥχαριστω!!!!! Λοιπον το εχω ολοκληρωσει πιστευω.. διορθωσα αρκετα πραγματα και εβαλα παραδειγματα και για την killall / at κτλπ.
Θα ψαξω να βρω σε ποιο σημειο λεω για γονεα και παιδι στις διεργασιες ωστε σε αυτο το σημειο να κολλησω την pstree
ευχαριστω οσους ασχοληθηκαν!!!!!!!! ΕΛπιζω να βοηθησει καθεναν που το διαβαζει !!!
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Επόμενο

Επιστροφή στο Οδηγοί - How to - Tutorials

cron