Ποιο είναι το pid της διαδικασίας. Διαχείριση διαδικασιών στο Linux. Τι είναι το PID



Σε αυτό το άρθρο θα προσπαθήσουμε να δημιουργήσουμε μια λειτουργική μονάδα πυρήνα που μπορεί να αλλάξει ήδη το PID τρέχουσα διαδικασίασε λειτουργικό σύστημα Linux και επίσης πειραματιστείτε με διεργασίες που έχουν λάβει ένα αλλαγμένο PID.


Προειδοποίηση: Η αλλαγή του PID είναι μια μη τυπική διαδικασία και υπό ορισμένες συνθήκες μπορεί να οδηγήσει σε πανικό πυρήνα.

Η δοκιμαστική μονάδα μας θα εφαρμόσει τη συσκευή χαρακτήρων /dev/test, η οποία θα αλλάξει το PID της διαδικασίας κατά την ανάγνωση από αυτήν. Χάρη σε αυτό το άρθρο για ένα παράδειγμα εφαρμογής μιας συσκευής χαρακτήρων. Πλήρης κωδικόςενότητα δίνεται στο τέλος του άρθρου. Φυσικά, τα περισσότερα η σωστή απόφασηήταν να προσθέσω κλήση συστήματοςστον ίδιο τον πυρήνα, αλλά αυτό θα απαιτήσει εκ νέου μεταγλώττιση του πυρήνα.

Περιβάλλο

Όλες οι δραστηριότητες δοκιμής ενότητας πραγματοποιήθηκαν στο εικονική μηχανή VirtualBox με διανομή LInux 64-bit και έκδοση πυρήνα 4.14.4-1. Η επικοινωνία με το μηχάνημα πραγματοποιήθηκε χρησιμοποιώντας SSH.

Προσπάθεια #1 απλή λύση

Λίγα λόγια για το ρεύμα: η τρέχουσα μεταβλητή οδηγεί σε μια δομή task_struct με μια περιγραφή της διαδικασίας στον πυρήνα (PID, UID, GID, cmdline, namespaces, κ.λπ.)

Η πρώτη ιδέα ήταν να αλλάξουμε απλώς την παράμετρο current->pid από τη μονάδα πυρήνα στην επιθυμητή.

Στατικό ssize_t device_read (αρχείο struct *filp, char *buffer, size_t μήκος, loff_t * offset) ( printk("PID: %d.\n",current->pid); current->pid = 1; printk("new PID: %d.\n",current->pid); , )
Για να ελέγξω τη λειτουργικότητα της ενότητας, έγραψα ένα πρόγραμμα σε C++:

#συμπεριλαμβάνω #συμπεριλαμβάνω #συμπεριλαμβάνω int main() ( std::cout<< "My parent PID " << getppid() << std::endl; std::cout << "My PID " << getpid() << std::endl; std::fstream f("/dev/test",std::ios_base::in); if(!f) { std::cout << "f error"; return -1; } std::string str; f >>str;<< "My new PID " << getpid() << std::endl; execl("/bin/bash","/bin/bash",NULL); }
std::cout

Ας φορτώσουμε το module με την εντολή insmod, δημιουργήσουμε το /dev/test και δοκιμάστε το.
# ./a.out Ο γονέας μου PID 293 Το PID μου 782 Το νέο μου PID 782

Το PID δεν έχει αλλάξει. Αυτό μπορεί να μην είναι το μόνο μέρος όπου προσδιορίζεται το PID.

Προσπαθήστε #2 επιπλέον πεδία PID

Αν το current->pid δεν είναι το αναγνωριστικό διεργασίας, τότε ποιο είναι; Μια γρήγορη ματιά στον κώδικα getpid() έδειξε τη δομή task_struct που περιγράφει τη διαδικασία Linux και το αρχείο pid.c στον πηγαίο κώδικα του πυρήνα. Η απαιτούμενη συνάρτηση είναι __task_pid_nr_ns. Στον κωδικό συνάρτησης υπάρχει μια κλήση task->pids.pid, θα αλλάξουμε αυτήν την παράμετρο

Μεταγλώττιση και δοκιμή

Δεδομένου ότι δοκίμασα μέσω SSH, μπόρεσα να λάβω την έξοδο του προγράμματος πριν διακοπεί ο πυρήνας:
Ο γονέας μου PID 293 Το PID μου 1689 Το νέο μου PID 1689

Το πρώτο αποτέλεσμα είναι ήδη κάτι. Αλλά το PID εξακολουθεί να μην έχει αλλάξει.

Μια πιο προσεκτική ματιά στο pid.c έδωσε μια συνάρτηση που κάνει αυτό που χρειαζόμαστε
static void __change_pid(struct task_struct *task, enum pid_type type,
struct pid *νέο)
Η συνάρτηση δέχεται μια εργασία για την οποία είναι απαραίτητη η αλλαγή του PID, του τύπου PID και, στην πραγματικότητα, του νέου PID. Η συνάρτηση δημιουργεί ένα νέο PID
struct pid *alloc_pid(struct pid_namespace *ns)

Αυτή η συνάρτηση δέχεται μόνο τον χώρο ονομάτων στον οποίο θα βρίσκεται το νέο PID. Αυτό το διάστημα μπορεί να ληφθεί χρησιμοποιώντας το task_active_pid_ns .
Αλλά υπάρχει ένα πρόβλημα: αυτά τα σύμβολα του πυρήνα δεν εξάγονται από τον πυρήνα και δεν μπορούν να χρησιμοποιηθούν σε λειτουργικές μονάδες. Ένα υπέροχο με βοήθησε να λύσω αυτό το πρόβλημα. Ο κωδικός συνάρτησης find_sym λαμβάνεται από εκεί.

Static asmlinkage void (*change_pidR)(struct task_struct *task, enum pid_type type, struct pid *pid); static asmlinkage struct pid* (*alloc_pidR)(struct pid_namespace *ns); static int __init test_init(void) ( printk(KERN_ALERT "TEST driver loaded!\n"); change_pidR = find_sym("change_pid"); alloc_pidR = find_sym("alloc_pid"); ... ) static ssize_t device_read(struct file * filp, char *buffer, size_t μήκος, loff_t * offset) ( printk("PID: %d.\n",current->pid); struct pid* newpid; newpid = alloc_pidR(task_active_pid_ns(current)); change_pidR(current ,PIDTYPE_PID,newpid("new PID: %d.\n",current->pid...)
Μεταγλώττιση, εκκίνηση

Ο γονέας μου PID 299 Το PID 750 Το νέο μου PID 751
Το PID άλλαξε! Ο πυρήνας εκχώρησε αυτόματα ένα δωρεάν PID στο πρόγραμμά μας. Είναι όμως δυνατόν να χρησιμοποιηθεί ένα PID που έχει καταληφθεί από άλλη διεργασία, όπως το PID 1; Ας προσθέσουμε τον κωδικό μετά την κατανομή

Newpid->numbers.nr = 1;
Μεταγλώττιση, εκκίνηση

Ο γονέας μου PID 314 Το PID μου 1172 Το νέο μου PID 1
Παίρνουμε πραγματικό PID 1!

Το Bash παρουσίασε ένα σφάλμα που εμποδίζει την εναλλαγή εργασιών με χρήση της εντολής %n, αλλά όλες οι άλλες λειτουργίες λειτουργούν καλά.

Ενδιαφέροντα χαρακτηριστικά διεργασιών με αλλαγμένο PID

PID 0: το enter δεν μπορεί να βγει

Ας επιστρέψουμε στον κωδικό και ας αλλάξουμε το PID σε 0.

Newpid->numbers.nr = 0;
Μεταγλώττιση, εκκίνηση

Ο γονέας μου PID284 Το PID μου 1517 Το νέο μου PID 0
Άρα το PID 0 δεν είναι τόσο ιδιαίτερο; Χαιρόμαστε, γράφουμε έξοδο και...

Η οβίδα πέφτει! Ο πυρήνας όρισε την εργασία μας ως IDLE TASK και, βλέποντας την ολοκλήρωση, απλά συνετρίβη. Προφανώς, το πρόγραμμά μας πρέπει να επιστρέψει στο «κανονικό» PID του πριν από την έξοδο.

Αόρατη διαδικασία

Ας επιστρέψουμε στον κωδικό και ας ορίσουμε ένα PID που είναι εγγυημένο ότι δεν θα είναι απασχολημένο
newpid->numbers.nr = 12345;

Μεταγλώττιση, εκκίνηση

Ο γονέας μου PID296 Το PID μου 735 Το νέο μου PID 12345
Ας δούμε τι υπάρχει στο /proc

1 148 19 224 288 37 79 86 93 κονσόλες fb kcore locks partitions swaps version 10 149 2 226 29 4 8 87 acpi cpuinfo filesystems key-users meminfo sched_debug 252 226 29 88 asound crypto fs κλειδιά misc schedstat sysrq- ενεργοποίηση vmstat 11 16 208 24 291 6 81 89 συσκευές buddyinfo διακόπτει μονάδες kmsg scsi sysvipc zoneinfo 12 17 21 25 296 7 82 9 bus diskstats iomem kpagecgroup mounts self 613 371 90 dma ioports kpagecount mtrr slabinfo timer_list 139 18 22 27 30 76 84 91 cmdline πρόγραμμα οδήγησης irq kpageflags net softirqs tty 14 182 222 28 31 78 85 92 config.gz execdomains kallsyms loadavg pagetypeinfo stat uptime
Όπως μπορούμε να δούμε, το /proc δεν προσδιορίζει τη διεργασία μας, ακόμα κι αν έχουμε καταλάβει ένα ελεύθερο PID. Το προηγούμενο PID δεν είναι επίσης στο /proc, και αυτό είναι πολύ περίεργο. Ίσως βρισκόμαστε σε διαφορετικό χώρο ονομάτων και επομένως δεν είναι ορατοί στο main /proc. Ας προσαρτήσουμε ένα νέο /proc και ας δούμε τι υπάρχει

1 14 18 210 25 291 738 81 9 συσκευές διαύλου fs key-users locks pagetypeinfo softirqs timer_list 10 148 182 22 26 296 741 82 90 cgroups diskstats t29 me 29 interrupts parts 27 30 76 83 92 cmdline dma iomem kmsg διάφορα sched_debug swaps uptime 11 15 2 224 28 37 78 84 93 config.gz πρόγραμμα οδήγησης ioports kpagecgroup modules schedstat sys έκδοση 12 16 20 226 288 4 79 85 acpi κονσόλες scggersq infocdom 3 17 208 23 29 6 8 86 ήχος cpuinfo fb ​​​​kallsyms kpageflags mtrr self sysvipc vmstat 139 176 21 24 290 7 80 87 buddyinfo συστήματα αρχείων κρυπτογράφησης kcore loadavg net slabinfo thread-self zoneinfo
Η διεργασία μας εξακολουθεί να μην υπάρχει, πράγμα που σημαίνει ότι βρισκόμαστε στον κανονικό χώρο ονομάτων. Ας ελέγξουμε

Ψ -ε | grep bash
296 πόντοι/0 00:00:00 bash

Μόνο ένα bash, από το οποίο ξεκινήσαμε το πρόγραμμα. Ούτε το προηγούμενο PID ούτε το τρέχον είναι στη λίστα.

Θα σας δείξουμε πώς να σκοτώσετε μια διαδικασία στο Linux. Ένα από τα κύρια πλεονεκτήματα του Linux είναι η δυνατότητα τερματισμού μιας διαδικασίας χωρίς να χρειάζεται επανεκκίνηση του διακομιστή. Σε αυτό το άρθρο, θα σας δείξουμε πώς να σκοτώσετε μια διαδικασία στο Linux χρησιμοποιώντας την εντολή kill, pkill και killall.

1. Τι είναι το PID

Πριν ξεκινήσουμε, πρέπει να γνωρίζουμε τι είναι το Process ID (PID).

Το PID αντιπροσωπεύει την ψηφιακή αναγνώριση μιας διεργασίας στο . Κάθε διαδικασία έχει ένα μοναδικό PID. Στην πραγματικότητα, για παράδειγμα, η πρώτη διεργασία που ξεκινά σε ένα σύστημα που βασίζεται σε Linux είναι μια διεργασία και το PID της έχει οριστεί σε 1. Αυτή η διαδικασία είναι η μητρική όλων των άλλων διεργασιών. Η διαδικασία έναρξης δεν μπορεί να σκοτωθεί χρησιμοποιώντας εντολές kill και αυτό διασφαλίζει ότι δεν θα σκοτωθεί κατά λάθος.

Τώρα, για να βρούμε το PID κάθε διεργασίας που εκτελείται στον διακομιστή, μπορούμε να εκτελέσουμε την ακόλουθη εντολή:

Αυτό μας δίνει μια λίστα με όλες τις διεργασίες που εκτελούνται και τα αντίστοιχα PID τους.

Αν θέλουμε να βρούμε το PID μιας συγκεκριμένης διεργασίας, μπορούμε να χρησιμοποιήσουμε την εντολή pidof ακολουθούμενη από το όνομα της διεργασίας. Για παράδειγμα, για να μάθετε το PID της διαδικασίας MySQL, μπορείτε να εκτελέσετε την ακόλουθη εντολή:

Pidof mysql

Για ακόμη πιο λεπτομερείς πληροφορίες, μπορούμε να χρησιμοποιήσουμε την εντολή ps auxμαζί με grep:

PS aux | grep mysql

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

2. Σκοτώστε μια διαδικασία χρησιμοποιώντας την εντολή kill στο Linux

Υπάρχουν μερικοί σημαντικοί κανόνες που πρέπει να γνωρίζουμε πριν αρχίσουμε να χρησιμοποιούμε την εντολή kill.

  • Μπορείτε να σκοτώσετε μόνο εγγενείς διαδικασίες που ανήκουν στο αναγνωριστικό χρήστη σας
  • Δεν μπορείτε να σκοτώσετε τις διαδικασίες άλλων χρηστών
  • Δεν μπορείτε να σκοτώσετε διεργασίες συστήματος (εκτός αν είστε υπερχρήστης)
  • Ο χρήστης root μπορεί να σκοτώσει τη διαδικασία οποιουδήποτε άλλου χρήστη και οποιαδήποτε διαδικασία συστήματος

Όταν σκοτώνουμε μια διεργασία με την εντολή kill, στην πραγματικότητα στέλνουμε το συγκεκριμένο σήμα PID που θέλουμε να σκοτώσουμε. Τα ακόλουθα σήματα χρησιμοποιούνται από την εντολή kill:

1 = Κλείσιμο 9 = Σκότωσε 15 = Τερματισμός

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

Έτσι, μόλις βρούμε το PID της διαδικασίας που θέλουμε να σκοτώσουμε, χρησιμοποιήσουμε μία από τις μεθόδους που περιγράψαμε νωρίτερα, μπορούμε να χρησιμοποιήσουμε την εντολή σκοτώστε -9 PIDγια να σκοτώσει τη διαδικασία από το συγκεκριμένο PID.

Για παράδειγμα, εάν το PID είναι 6738, τότε μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή:

Kill -9 6738

3. Σκοτώστε μια διαδικασία χρησιμοποιώντας την εντολή pkill στο Linux

Εάν θέλετε να χρησιμοποιήσετε το όνομα της διεργασίας αντί για το PID για να το σκοτώσετε, τότε μπορείτε να χρησιμοποιήσετε την εντολή pkill. Για παράδειγμα, αν η διεργασία που θέλουμε να σκοτώσουμε ονομάζεται , τότε μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή για να τη σκοτώσουμε:

Pkill mysql

4. Σκοτώστε μια διαδικασία χρησιμοποιώντας την εντολή killall στο Linux

Οι δύο προηγούμενες εντολές χρησιμοποιούνται για να σκοτώσουν μόνο μία συγκεκριμένη διαδικασία. Αλλά, αν θέλουμε να σκοτώσουμε μια διεργασία μαζί με όλες τις θυγατρικές της, μπορούμε να χρησιμοποιήσουμε την εντολή killall:

Σκοτώστε το mysql

Σε αυτό το παράδειγμα, θα σκοτώσουμε τη διαδικασία MySQL και όλες τις θυγατρικές διεργασίες της.

Είναι τα πιο κοινά παραδείγματα διεργασιών στο Linux.

Οδηγίες

Το Πρωτόκολλο Διαδικτύου (IP) ορίζει την παράδοση δεδομένων από έναν κόμβο δικτύου σε έναν άλλο. Ωστόσο, δεν εγγυάται την ακρίβεια παράδοσης: τα πακέτα μπορεί να χαθούν κατά τη μετάδοση ή να μην φτάσουν με τη σειρά που στάλθηκαν. Το πρωτόκολλο trans είναι υπεύθυνο για την ακρίβεια nogoΠρωτόκολλο Ελέγχου Μετάδοσης – Επίπεδο TCP. Το TCP δημιουργεί μια σύνδεση, ελέγχει την αποστολή και τη λήψη πακέτων και αντιγράφει τις ενέργειές του σε περίπτωση που δεν ληφθεί απάντηση σε ένα αίτημα ή χαθούν πακέτα. Είναι σημαντικό να κατανοήσουμε ότι το TCP καθιερώνει την ανταλλαγή πακέτων όχι μόνο μεταξύ κεντρικών υπολογιστών, αλλά μεταξύ εφαρμογών λογισμικού. Η θύρα δικτύου είναι ένας αριθμός υπό όρους από το 1 έως το 65535 που υποδεικνύει σε ποια εφαρμογή έχει εκχωρηθεί το πακέτο.

Μπορείτε να μάθετε ποιες διεργασίες χρησιμοποιούν θύρες στον υπολογιστή σας χρησιμοποιώντας τυπικά εργαλεία των Windows. Από το μενού Έναρξη, κάντε κλικ στην επιλογή Εκτέλεση και πληκτρολογήστε cmd στη γραμμή εντολών. Επιβεβαιώστε το ΟΚ. Στο παράθυρο της κονσόλας, πληκτρολογήστε netstat -a -n -o.

Η στήλη PID υποδεικνύει τον αριθμό διεργασίας, η στήλη " " υποδεικνύει τη διεύθυνση IP του υπολογιστή σας και, χωρισμένη με άνω και κάτω τελεία, τον αριθμό θύρας που καταλαμβάνει η αντίστοιχη διεργασία. "Εξωτερική διεύθυνση" είναι η IP και ο αριθμός θύρας του απομακρυσμένου κεντρικού υπολογιστή με τον οποίο εκτελείται κάποια εφαρμογή.

Στο παράθυρο της κονσόλας, πληκτρολογήστε την εντολή λίστας εργασιών. Θα εμφανίσει όλες τις εφαρμογές με κωδικό PID που εκτελούνται στον υπολογιστή. Με αυτόν τον τρόπο θα μάθετε ποια διαδικασία καταλαμβάνει οποιαδήποτε θύρα στον υπολογιστή σας.

Μπορείτε να λάβετε αυτές τις πληροφορίες με άλλο τρόπο: εκκινήστε τη "Διαχείριση εργασιών" από τη γραμμή εντολών πληκτρολογώντας taskmgr ή χρησιμοποιώντας το συνδυασμό πλήκτρων Ctrl+Alt+Delete. Στη στήλη PID, βρείτε τον αριθμό της διαδικασίας που σας ενδιαφέρει στη στήλη "Όνομα εικόνας", βρείτε το όνομα της αντίστοιχης εφαρμογής ή υπηρεσίας. Εάν το PID δεν εμφανίζεται στο παράθυρο του Manager, μεταβείτε στο στοιχείο "Προβολή" στο κύριο μενού και επιλέξτε την επιλογή "Επιλογή στηλών". Επιλέξτε το πλαίσιο δίπλα στο "Αναγνωριστικό διεργασίας (PID)".

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

θα χρειαστείτε

  • - έναν υπολογιστή με λειτουργικό σύστημα Windows (XP, Windows 7).

Οδηγίες

Πατήστε τη συντόμευση πληκτρολογίου ctrl+alt+del. Εάν το λειτουργικό σας σύστημα είναι Windows XP, τότε ο διαχειριστής εργασιών θα εμφανιστεί αμέσως, αλλά εάν τα Windows 7, θα εμφανιστεί ένα παράθυρο στο οποίο μπορείτε να το επιλέξετε.

Επιλέξτε την καρτέλα "Διαδικασίες". Τώρα εδώ κάντε κλικ στο στοιχείο "Προβολή". Θα εμφανιστεί ένα επιπλέον παράθυρο. Σε αυτό, επιλέξτε την επιλογή "Επιλογή στηλών". Θα εμφανιστεί ένα παράθυρο διαλόγου στο οποίο το κορυφαίο στοιχείο θα ονομάζεται "ID διαδικασία(pid)". Επιλέξτε το πλαίσιο δίπλα του. Αποθηκεύστε τις ρυθμίσεις κάνοντας κλικ στο OK.

Στη συνέχεια, στη Διαχείριση Συσκευών, μεταβείτε στην καρτέλα «Διαδικασίες», όπου θα δείτε τη γραμμή «Αναγνωριστικό διαδικασία" Βρείτε το όνομα σε αυτό διαδικασία, του οποίου το αναγνωριστικό πρέπει να γνωρίζετε και δείτε την τιμή του.

Τώρα θα εξετάσουμε αυτήν την τιμή χρησιμοποιώντας τη γραμμή εντολών του λειτουργικού συστήματος. Κάντε κλικ στο κουμπί Έναρξη και μεταβείτε στην καρτέλα Όλα τα προγράμματα. Επιλέξτε "Τυπικά προγράμματα". Εδώ, βρείτε το στοιχείο μενού "Γραμμή εντολών" και εκτελέστε το. Πληκτρολογήστε tasklist και πατήστε Enter. Μετά την ενεργοποίηση αυτής της εντολής, θα εμφανιστεί μια λίστα με όλες τις τρέχουσες ενεργές διεργασίες στο παράθυρο της γραμμής εντολών. Μετά το όνομα καθενός από αυτά, θα αναγράφεται το αναγνωριστικό του.

Εάν πρέπει να ολοκληρώσετε γρήγορα τη διαδικασία, τότε μπορείτε να το κάνετε έτσι. Αφού μάθετε την ταυτότητα διαδικασία, πληκτρολογήστε taskkill /pid 0000 στη γραμμή εντολών, αντί για μηδενικά, πληκτρολογήστε τον αριθμό αναγνώρισης διαδικασίαπου απαιτεί " ". Μετά από αυτό, το σύστημα θα στείλει ένα σήμα για να το ολοκληρώσει και θα απενεργοποιηθεί.

Παρακαλώ σημειώστε

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

Πρόσβαση σε διακομιστές αλληλογραφίας στο The Bat! (όπως και σε άλλα προγράμματα email) πραγματοποιείται μέσω συγκεκριμένων θυρών για αποστολή και λήψη αλληλογραφίας. Για να διαμορφώσετε το πρόγραμμα αλληλογραφίας, πρέπει να εισαγάγετε τους αριθμούς θύρας SMTP και POP3, καθώς και τα ονόματα των διακομιστών, στις παραμέτρους του γραμματοκιβωτίου.

θα χρειαστείτε

  • - δεδομένα από αλληλογραφία.

Οδηγίες

Μεταβείτε στον ιστότοπο του διακομιστή αλληλογραφίας σας. Για παράδειγμα, ο διακομιστής αλληλογραφίας mail.ru. Θα χρειαστεί να συνδεθείτε -δηλαδή να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας- για να μπείτε στο προσωπικό σας γραμματοκιβώτιο. Βρείτε τον σύνδεσμο βοήθειας και κάντε κλικ σε αυτόν.

Μια λίστα με θέματα βοήθειας βρίσκεται στα αριστερά. Κάντε κλικ στο «Πρόσβαση από προγράμματα email» και επιλέξτε το πρώτο στοιχείο για να φορτώσετε τη σελίδα ρυθμίσεων. Η σελίδα υποδεικνύει ότι το όνομα του διακομιστή εισερχόμενης αλληλογραφίας είναι pop.mail.ru και το όνομα του διακομιστή εξερχόμενης αλληλογραφίας είναι smtp.mail.ru. Αυτό ισχύει μόνο για αυτήν την υπηρεσία. Κατά κανόνα, κάθε διακομιστής αναρτήσεων μπορεί να έχει διαφορετικές θύρες, επομένως μεταβείτε στον επίσημο ιστότοπο στο κέντρο υποστήριξης και μάθετε τα δεδομένα. Υπάρχουν επίσης ιστότοποι στο Διαδίκτυο που παρέχουν πληροφορίες για σχεδόν όλες τις υπηρεσίες που υπάρχουν στο Διαδίκτυο.

Οι αριθμοί θύρας των διακομιστών εξερχόμενης και εισερχόμενης αλληλογραφίας υποδεικνύονται στο κάτω μέρος της σελίδας. Αναφέρει ότι για τον διακομιστή εισερχόμενης αλληλογραφίας, οι αριθμοί πρωτοκόλλου είναι 110 (αν το πρόγραμμα αλληλογραφίας λειτουργεί χωρίς κρυπτογράφηση) και 995 (με κρυπτογράφηση). Για να μάθετε ποιον αριθμό πρέπει να εισαγάγετε, ελέγξτε τις ρυθμίσεις του προγράμματος email σας. Ο αριθμός θύρας εξερχόμενης αλληλογραφίας είναι 25, 587 ή 2525 (εάν το πρόγραμμα αλληλογραφίας δεν χρησιμοποιεί κρυπτογράφηση) και 465 (με κρυπτογράφηση). Οι τυπικές θύρες αλληλογραφίας είναι 110 και 25. Το πρόγραμμα μπορεί επίσης να έχει τυπικούς αριθμούς θυρών γραμμένους από προεπιλογή, επομένως, εάν είναι απαραίτητο, θα πρέπει να τους διορθώσετε στους σωστούς.

Εάν χρησιμοποιείτε διαφορετικό διακομιστή αλληλογραφίας, επισκεφτείτε τον ιστότοπο για ρυθμίσεις. Αυτού του είδους οι παράμετροι είναι πάντα δημόσιες και συνήθως δημοσιεύονται στην ενότητα βοήθειας. Εάν η εταιρεία σας χρησιμοποιεί εταιρικό email, μπορείτε να μάθετε τους αριθμούς θυρών από τον διαχειριστή του δικτύου σας.

Το TCP/IP είναι μια συλλογή πρωτόκολλα, το οποίο σας επιτρέπει να συνδέετε μεμονωμένους υπολογιστές και δίκτυα σε ένα κοινό δίκτυο υπολογιστών. Με τη βοήθεια πρωτόκολλα TCP/IP τα περισσότερα προγράμματα εφαρμογών ανταλλάσσουν πληροφορίες μέσω του Διαδικτύου.

Παρά τη σταθερότητά του, ορισμένες εφαρμογές στο Linux μερικές φορές παγώνουν. Μερικές φορές οι εφαρμογές δεν ανταποκρίνονται ή απλά εκτελούνται τόσο αργά που δεν μπορείτε να τις κλείσετε σωστά. Ένας τρόπος για να σκοτώσετε μια εφαρμογή που εκτελείται στο Linux είναι να χρησιμοποιήσετε εντολές όπως kill ή killall. Ας δούμε πώς να χρησιμοποιήσουμε αυτές τις εντολές, να βρούμε το PID μιας διεργασίας και να στείλουμε ένα σήμα SIGKILL.

Με τον όρο διαδικασία θα εννοούμε ένα αντίγραφο του προγράμματος που εκτελείται στο σύστημα. Για παράδειγμα, εάν έχετε τρία παράθυρα αριθμομηχανής ανοιχτά (π.χ. gcalctool), αυτό σημαίνει ότι έχετε τρεις διεργασίες που εκτελούνται.

Εύρεση του PID μιας αναρτημένης διαδικασίας

Κάθε διεργασία στο Linux έχει το δικό της αναγνωριστικό που ονομάζεται PID. Πριν σταματήσετε μια διαδικασία, πρέπει να προσδιορίσετε το PID της. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε τις εντολές ps και grep. εντολή psέχει σχεδιαστεί για να εμφανίζει μια λίστα ενεργών διεργασιών στο σύστημα και πληροφορίες σχετικά με αυτές. εντολή grepεκτελείται ταυτόχρονα με το ps (σε ένα κανάλι) και θα αναζητήσει τα αποτελέσματα της εντολής ps. Μπορείτε να απαριθμήσετε όλες τις διεργασίες εκτελώντας στη γραμμή εντολών:

Αλλά, κατά κανόνα, ο κατάλογος είναι πολύ μεγάλος και η εύρεση της διαδικασίας που θέλουμε να "σκοτώσουμε" δεν είναι τόσο εύκολη. Εδώ έρχεται να σώσει η εντολή grep. Για παράδειγμα, για να βρείτε πληροφορίες σχετικά με μια διαδικασία που ονομάζεται gcalctool, εκτελέστε την εντολή:

p.s grep gcalctool

Η εντολή grep θα αναζητήσει τα αποτελέσματα της εντολής ps και θα εκτυπωθούν μόνο εκείνες οι γραμμές που περιέχουν τη συμβολοσειρά (λέξη) gcalctool. Υπάρχει μια ενδιαφέρουσα λεπτομέρεια εδώ, για παράδειγμα, εάν δεν έχετε την εφαρμογή gcalctool σε λειτουργία, τότε μετά την εκτέλεση p.s grep gcalctoolθα λάβετε:

$ ps axu | grep gcalctool yuriy 25587 0,0 0,0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool

Δηλαδή, πήραμε την ίδια τη διαδικασία grep, αφού καθορίσαμε τη λέξη gcalctool ως παράμετρο στην εντολή και το grep βρέθηκε στην έξοδο της εντολής ps.

Εάν εκτελείται η διαδικασία gcalctool, θα λάβουμε:

Yuriy@yuriy-NIX:~$ ps axu | grep gcalctool yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool yuriy 25624 0,0 0,0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool

Εδώ μας ενδιαφέρει η γραμμή: " yuriy 25609 7,6 0,4 500840 17964 ? Sl 10:20 0:00 gcalctool" Ο αριθμός 25609 είναι το PID της διαδικασίας gcalctool.

Υπάρχει ένας άλλος ευκολότερος τρόπος για να μάθετε το PID μιας διαδικασίας - αυτός εντολή pidof, το οποίο παίρνει το όνομα της διεργασίας ως παράμετρο και βγάζει το PID της. Ένα παράδειγμα εκτέλεσης της εντολής pidof:

$pidof gcalctool 25609

«Σκοτώνουμε» τη διαδικασία με την εντολή kill

Όταν το PID μιας διεργασίας είναι γνωστό, μπορούμε να το σκοτώσουμε εντολή kill. Η εντολή kill παίρνει το PID της διεργασίας ως παράμετρο. Για παράδειγμα, ας σκοτώσουμε τη διαδικασία με αριθμό 25609:

Kill 25609

Γενικά, η εντολή kill προορίζεται να στείλει ένα σήμα σε μια διεργασία. Από προεπιλογή, εάν δεν καθορίσουμε ποιο σήμα θα στείλουμε, αποστέλλεται το σήμα SIGTERM (από τη λέξη τερματισμός). Το SIGTERM λέει ότι η διαδικασία τερματίζεται. Κάθε σήμα έχει τον δικό του αριθμό. Το SIGTERM έχει τον αριθμό 15. Μια λίστα με όλα τα σήματα (και τους αριθμούς τους) που μπορεί να στείλει η εντολή kill μπορεί να ληφθεί εκτελώντας σκοτώνω -l. Για να στείλετε το σήμα SIGKILL (με αριθμό 9) στη διεργασία 25609, εκτελέστε τη γραμμή εντολών:

Kill -9 25609

Το σήμα SIGTERM μπορεί να μην σταματήσει τη διαδικασία (για παράδειγμα, εάν το σήμα υποκλαπεί ή μπλοκαριστεί), αλλά το SIGKILL σκοτώνει πάντα τη διαδικασία, καθώς δεν μπορεί να υποκλαπεί ή να αγνοηθεί.

Σκοτώνουμε διεργασίες με την εντολή killall

εντολή killallστο Linux έχει σχεδιαστεί για να «σκοτώνει» όλες τις διαδικασίες με το ίδιο όνομα. Αυτό είναι βολικό γιατί δεν χρειάζεται να γνωρίζουμε το PID της διαδικασίας. Για παράδειγμα, θέλουμε να κλείσουμε όλες τις διεργασίες που ονομάζονται gcalctool. Εκτέλεση στο τερματικό:

Killall gcalctool

Η εντολή killall, όπως και kill, στέλνει το σήμα SIGTERM από προεπιλογή. Για να στείλετε άλλο σήμα πρέπει να χρησιμοποιήσετε την επιλογή -μικρό. Για παράδειγμα:

Killall -s 9 gcalctool

Σύναψη

Ορισμένες διεργασίες δεν μπορούν να διακοπούν από έναν κανονικό χρήστη. Για παράδειγμα, εάν η διαδικασία ξεκίνησε ως root ή ως άλλος χρήστης στο σύστημα, τότε οι εντολές kill και killall πρέπει να εκτελεστούν ως superuser, προσθέτοντας sudo (στο Ubuntu):

Sudo kill 123

Υπάρχουν περιπτώσεις που εργάζεστε σε ένα GUI (όπως το GNOME) και δεν μπορείτε να ανοίξετε έναν εξομοιωτή τερματικού για να σταματήσετε τη διαδικασία ανάρτησης. Στη συνέχεια, μπορείτε να μεταβείτε στην εικονική κονσόλα χρησιμοποιώντας τα πλήκτρα Ctrl+Alt+F1, συνδεθείτε σε αυτό και εκτελέστε εντολές από εκεί. Και μετά επιστρέψτε κάνοντας κλικ Ctrl+Alt+F7.

Βοήθεια για τη χρήση οποιασδήποτε εντολής μπορεί να ληφθεί με την εντολή man:

Man ps man grep man pidof man kill man killall

Λειτουργικό σύστημα UNIX Robachevsky Andrey M.

Αναγνωριστικό διαδικασίας (PID)

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

Από το βιβλίο Αρχιτεκτονική του Λειτουργικού Συστήματος UNIX συγγραφέας Bach Maurice J

4.4 ΜΕΤΑΤΡΟΠΗ ΤΟΥ ΟΝΟΜΑΤΟΣ ΣΤΟΙΧΕΙΟΥ ΑΡΧΕΙΟΥ (ΔΙΑΔΡΟΜΗ ΑΝΑΖΗΤΗΣΗΣ) ΣΕ ΑΝΑΓΝΩΡΙΣΗ ΕΥΡΕΤΗΡΙΟΥ Η αρχική αναφορά σε ένα αρχείο γίνεται με το αναγνωρισμένο όνομά του (διαδρομή αναζήτησης), όπως συμβαίνει με τις εντολές open, chdir (αλλαγή καταλόγου) ή σύνδεσμο. Επειδή μέσα στο σύστημα ο πυρήνας λειτουργεί με ευρετήρια, όχι με

Από το βιβλίο Ένα σπάνιο επάγγελμα συγγραφέας Zuev Evgeniy

Τι είναι η ταυτότητα; Εκτός από τις ασάφειες στη σύνταξη, γρήγορα εμφανίστηκαν και άλλα προβλήματα. Είναι πιο δύσκολο να τα δείξετε με παραδείγματα, επομένως θα πρέπει να τα εξηγήσετε με λέξεις Η σύνταξη της γλώσσας C++ είναι επίσης άβολη από άλλη άποψη. Εν ολίγοις, άμεσος

Από το βιβλίο Προγραμματισμός συγγραφέας Kozlova Irina Sergeevna

11. Αναγνωριστικό. Λέξεις-κλειδιά Ένα αναγνωριστικό είναι μια ακολουθία αριθμών, γραμμάτων και ειδικών χαρακτήρων. Σε αυτήν την περίπτωση, ο πρώτος χαρακτήρας είναι ένα γράμμα ή ένας ειδικός χαρακτήρας. Για να αποκτήσετε αναγνωριστικά, μπορείτε να χρησιμοποιήσετε πεζά ή κεφαλαία γράμματα του λατινικού αλφαβήτου.

Από το βιβλίο 200 καλύτερα προγράμματα για το Διαδίκτυο. Δημοφιλές σεμινάριο συγγραφέας Krainsky I

Process Guardian XP Κατασκευαστής: T.A.S. Ανεξάρτητος Προγραμματισμός (http://www.tas-independent-programming.com).Κατάσταση: δωρεάν.Σύνδεσμος λήψης: http://www.tas-independent-programming.com/cgi-bin/countdown.pl?Guardian .Μέγεθος: 2,4 MB. Ο κύριος σκοπός αυτού του βοηθητικού προγράμματος είναι η διαχείριση διαδικασιών που εκτελούνται στον υπολογιστή. Μετά από

Από το βιβλίο Microsoft Visual C++ and MFC. Προγραμματισμός για Windows 95 και Windows NT συγγραφέας Φρόλοφ Αλεξάντερ Βιατσεσλάβοβιτς

Αναγνωριστικό ανοιχτού αρχείου Η κλάση CFile περιλαμβάνει ένα στοιχείο δεδομένων m_hFile τύπου UINT. Αποθηκεύει το αναγνωριστικό του ανοιχτού αρχείου. Εάν έχετε δημιουργήσει ένα αντικείμενο της κλάσης CFile, αλλά δεν έχετε ανοίξει ακόμα κανένα αρχείο, τότε η σταθερά hFileNull γράφεται στο m_hFile Συνήθως δεν χρειάζεται

Από το βιβλίο UNIX: Process Communication συγγραφέας Stephens William Richard

Αναγνωριστικό συναλλαγής Ένα άλλο μέρος της στρατηγικής χρονικού ορίου λήξης και αναμετάδοσης είναι η χρήση αναγνωριστικών συναλλαγών (αναγνωριστικά συναλλαγής ή XID) για τη διάκριση μεταξύ αιτημάτων πελατών και απαντήσεων διακομιστή. Όταν ένας πελάτης καλεί μια συνάρτηση RPC, η βιβλιοθήκη το εκχωρεί

Από το βιβλίο TCP/IP Architecture, Protocols, Implementation (συμπεριλαμβανομένης της έκδοσης IP 6 και της Ασφάλειας IP) από τη Faith Sydney M

16.7 Χρονική σήμανση και αναγνωριστικό μηνύματος Κατά τη λήψη αλληλογραφίας, είναι ενδιαφέρον να γνωρίζετε την ώρα αποστολής και λήψης. Το SMTP προσθέτει αυτές τις πληροφορίες στο προωθημένο μήνυμα. Επιπλέον, αυτό το πρωτόκολλο παρακολουθεί όλους τους κεντρικούς υπολογιστές που μετέδωσαν το μήνυμα αλληλογραφίας και την ώρα

Από το βιβλίο Adobe Audition 3 tutorial συγγραφέας Άγνωστος συγγραφέας

Dynamic EQ (διαδικασία) Το φαινόμενο Dynamic EQ ποικίλλει την ποσότητα του φιλτραρίσματος με την πάροδο του χρόνου. Για παράδειγμα, στο πρώτο μισό του κύματος μπορείτε να ενισχύσετε τις υψηλές συχνότητες και στο δεύτερο μισό μπορείτε να αλλάξετε το πλάτος της επηρεαζόμενης ζώνης συχνοτήτων. Το παράθυρο Dynamic EQ έχει τρεις καρτέλες: Gain, Frequency και Q (εύρος ζώνης). 1. Γράφημα συχνότητας

Από το βιβλίο PHP Reference του συγγραφέα

Pan/Expander (διαδικασία) Το εφέ Pan/Expand σάς επιτρέπει να μετακινήσετε το κεντρικό κανάλι (μονοφωνικό στοιχείο) ενός στερεοφωνικού σήματος και να διευρύνετε ή να περιορίσετε το στερεοφωνικό διαχωρισμό του αριστερού και του δεξιού καναλιού γύρω κανάλια της στερεοφωνικής εγγραφής,

Από το βιβλίο Application Development in the Linux Environment. Δεύτερη έκδοση συγγραφέας Τζόνσον Μάικλ Κ.

Stretch (διαδικασία) Το εφέ Stretch σάς επιτρέπει να αλλάξετε τον τόνο (τον τόνο) ενός ηχητικού σήματος, το ρυθμό ή και τα δύο. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε αυτό το εφέ για να αυξήσετε τον τόνο ενός soundtrack χωρίς να αλλάξετε τη διάρκειά του ή, αντίθετα, να αλλάξετε τη διάρκεια χωρίς να αλλάξετε

Από το βιβλίο Firebird DATABASE DEVELOPER'S GUIDE από την Borri Helen

Αναγνωριστικό περιόδου λειτουργίας Έτσι, το αναγνωριστικό περιόδου σύνδεσης είναι το όνομα του προσωρινού χώρου αποθήκευσης που θα χρησιμοποιηθεί για την αποθήκευση δεδομένων περιόδου σύνδεσης μεταξύ των εκτελέσεων σεναρίου. Ένα SID - ένας χώρος αποθήκευσης. Χωρίς SID, χωρίς αποθηκευτικό χώρο και αντίστροφα Πώς σχετίζονται λοιπόν το αναγνωριστικό και το όνομα;

Από το βιβλίο UNIX Operating System συγγραφέας Ρομπατσέφσκι Αντρέι Μ.

10.2.1. Αναγνωριστικό διεργασίας και προέλευση Δύο από τα πιο θεμελιώδη χαρακτηριστικά είναι το αναγνωριστικό διεργασίας ή pid και το αναγνωριστικό της γονικής διαδικασίας. Το pid είναι ένας θετικός ακέραιος που προσδιορίζει μοναδικά

Από το βιβλίο του συγγραφέα

10.2.3. Uid συστήματος αρχείων Σε πολύ ειδικές περιπτώσεις, ένα πρόγραμμα μπορεί να χρειαστεί να διατηρήσει τα δικαιώματα ρίζας του για οτιδήποτε, εκτός από την πρόσβαση στο σύστημα αρχείων, για το οποίο χρησιμοποιεί το uid του χρήστη. Χρησιμοποιήθηκε αρχικά στον διαστημικό διακομιστή Linux NFS

Από το βιβλίο του συγγραφέα

Αναγνωριστικό τομέα Όταν δημιουργείτε έναν τομέα σε μια βάση δεδομένων, πρέπει να καθορίσετε ένα αναγνωριστικό τομέα που είναι παγκοσμίως μοναδικό στη βάση δεδομένων. Οι προγραμματιστές χρησιμοποιούν συχνά ένα πρόθεμα ή ένα επίθημα στα αναγνωριστικά τομέα για να βελτιώσουν την τεκμηρίωση. Για παράδειγμα: ΔΗΜΙΟΥΡΓΙΑ

Από το βιβλίο του συγγραφέα

Από το βιβλίο του συγγραφέα

Γονικό Αναγνωριστικό Διεργασίας (PPID) Το αναγνωριστικό της διαδικασίας που δημιούργησε αυτό



Ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: