Δημοσιεύτηκε: 31 Αύγ 2011, 00:39
από lucinos
Και ερχόμαστε στο τελευταίο θέμα που προσωπικά βρίσκω πολύ βασικό.

Ανοίξτε ένα τερματικό και τρέξτε:
Κώδικας: Επιλογή όλων
gedit


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

Ο τρόπος να διακόψουμε το gedit χωρίς να το κλείσουμε είναι με τον συνδυασμό ctrl+z από το τερματικό.
Το παράθυρο τού gedit τώρα παραμένει ανοικτό. Το gedit δεν έχει κλείσει, το έχουμε όμως διακόψει.
Επιπλέον μάς έχει βγάλει κάτι σαν αυτό:
Κώδικας: Επιλογή όλων
^Z
[1]+  Stopped                 gedit

Το ^Z συμβολίζει το ctrl+z.
Την δεύτερη γραμμή μπορούμε να την δούμε ξανά όποτε θέλουμε τρέχοντας:
Κώδικας: Επιλογή όλων
jobs


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

H έξοδος θα είναι κάτι σαν αυτό:
Κώδικας: Επιλογή όλων
[1]+ gedit &

και τώρα το gedit τρέχει στο υπόβαθρο. Με την ευκαιρία το αντίθετο τής bg είναι η fg. Δοκιμάστε να τρέξετε πάλι την jobs. Τώρα θα βγάλει κάτι σαν αυτό:
Κώδικας: Επιλογή όλων
[1]+  Running                 gedit &


Μία πολύ σημαντική εντολή είναι η kill. Το gedit σύμφωνα με την jobs όπως βλέπουμε είναι η εργασία 1. Πιθανότατα θα σάς βγάζει το ίδιο αλλά αν τυχών σάς βγάζει άλλον αριθμό χρησιμοποιήστε εκείνον. Ζητήστε να τερματήσει με:
Κώδικας: Επιλογή όλων
kill %1

Αυτό στέλνει σήμα στην εργασία 1 να κλείσει.

Έχετε κλείσει το gedit. Μπορείτε να αποφύγετε όλην την παραπάνω φασαρία λέγοντας εξαρχής ότι το gedit το θέλουμε στο υπόβαθρο. Αυτό το λέμε με το σύμβολο &

Τρέξτε:
Κώδικας: Επιλογή όλων
gedit &

Τώρα το έχουμε στείλει κατευθείαν να τρέχει στο υπόβαθρο.
Σαν έξοδο μάς έχει βγάλει εκτός από το [1] και έναν μυστήριο αριθμό. Αυτός είναι το PID. Μπορούμε να δούμε τις εργασίες με τα PID τους τρέχοντας:
Κώδικας: Επιλογή όλων
ps

Αυτό πιθανότατα θα βγάλει τον ίδιο τον φλοιό (bash), το gedit που τρέχει στο υπόβαθρο καθώς και το ίδιο το ps.

Τις εργασίες μπορούμε να τις σκοτώσουμε και με το PID. πχ:
Κώδικας: Επιλογή όλων
kill 10967

τερματίζει την εργασία με PID 10967.

Το απλό kill δεν σκοτώνει εντελώς άμεσα μια εργασία. Τής στέλνει σήμα να τερματίσει και αναλαμβάνει η ίδια να το κάνει. Συνήθως αυτό είναι αρκετό. Υπάρχουν όμως περιπτώσεις που μια εργασία μπορεί να έχει κρεμάσει τόσο άσχημα που να μην αντιδρά καθόλου ούτε καν σε αυτό το σήμα. Με την επιλογή -9 το σήμα δεν στέλνεται στην εργασία αλλά στον ίδιο τον πυρήνα που αναλαμβάνει να την σκοτώσει.

Για την περίπτωση που θέλουμε να μπορούμε να κλείσουμε το τερματικό χωρίς να κλείνει και το gedit υπάρχει η εντολή nohup. Για παράδειγμα:
Κώδικας: Επιλογή όλων
nohup gedit &

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