4 Χρήσιμες συμβουλές για τις εντολές mkdir, tar και kill στο Linux


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

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

Δομή δέντρου καταλόγου για να επιτευχθεί όπως προτείνεται παρακάτω.

cd /home/$USER/Desktop
mkdir tecmint
mkdir tecmint/etc
mkdir tecmint/lib
mkdir tecmint/usr
mkdir tecmint/bin
mkdir tecmint/tmp
mkdir tecmint/opt
mkdir tecmint/var
mkdir tecmint/etc/x1
mkdir tecmint/usr/x2
mkdir tecmint/usr/x3
mkdir tecmint/tmp/Y1
mkdir tecmint/tmp/Y2
mkdir tecmint/tmp/Y3
mkdir tecmint/tmp/Y3/z

Το παραπάνω σενάριο μπορεί απλά να επιτευχθεί εκτελώντας την παρακάτω εντολή 1-γραμμής.

mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}

Για επαλήθευση, μπορείτε να χρησιμοποιήσετε την εντολή δέντρο. Εάν δεν είναι εγκατεστημένο, μπορείτε να προσαρμόσετε ή να yum το πακέτο "δέντρο".

tree tecmint

Μπορούμε να δημιουργήσουμε δομή δέντρου καταλόγου οποιασδήποτε πολυπλοκότητας χρησιμοποιώντας τον παραπάνω τρόπο. Παρατηρήστε ότι δεν είναι τίποτα άλλο από μια κανονική εντολή, αλλά χρησιμοποιεί το {} για τη δημιουργία ιεραρχίας καταλόγων. Αυτό μπορεί να αποδειχθεί πολύ χρήσιμο εάν χρησιμοποιείται από το εσωτερικό ενός σεναρίου κελύφους όταν απαιτείται και γενικά.

2. Δημιουργήστε ένα αρχείο (ας πούμε δοκιμή) στην επιφάνεια εργασίας σας (/home/$USER/Desktop) και συμπληρώστε το με τα παρακάτω περιεχόμενα.
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z

Τι θα έκανε ένας κανονικός χρήστης σε αυτό το σενάριο;

α. Θα δημιουργήσει πρώτα το αρχείο, κατά προτίμηση χρησιμοποιώντας την εντολή αφής, ως:

touch /home/$USER/Desktop/test

β. Θα χρησιμοποιήσει ένα πρόγραμμα επεξεργασίας κειμένου για να ανοίξει το αρχείο, το οποίο μπορεί να είναι nano, vim ή οποιοδήποτε άλλο πρόγραμμα επεξεργασίας.

nano /home/$USER/Desktop/test

γ. Στη συνέχεια, θα τοποθετήσει το παραπάνω κείμενο σε αυτό το αρχείο, θα το αποθηκεύσει και θα βγει.

Έτσι, ανεξάρτητα από το χρόνο που θα πάρει, χρειάζεται τουλάχιστον 3 βήματα για να εκτελέσει το παραπάνω σενάριο.

Τι θα κάνει ένας έξυπνος έμπειρος Linux-er; Απλώς θα πληκτρολογήσει το παρακάτω κείμενο με μία κίνηση στο τερματικό και όλα έχουν τελειώσει. Δεν χρειάζεται να κάνει κάθε ενέργεια ξεχωριστά.

cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF

Μπορείτε να χρησιμοποιήσετε την εντολή "cat" για να ελέγξετε εάν το αρχείο και το περιεχόμενό του δημιουργήθηκαν με επιτυχία ή όχι.

cat /home/avi/Desktop/test

3. Ασχολούμαστε με αρχεία (ειδικά TAR balls) πολύ συχνά στο Linux. Σε πολλές περιπτώσεις πρέπει να χρησιμοποιήσουμε αυτή τη μπάλα TAR σε κάποια τοποθεσία εκτός από το φάκελο "Λήψεις". Τι κάνουμε σε αυτό το σενάριο;

Συνήθως κάνουμε δύο πράγματα σε αυτό το σενάριο.

α. Αντιγράψτε/μετακινήστε την μπάλα πίσσας και εξαγάγετε την στον προορισμό, ως:

cp firefox-37.0.2.tar.bz2 /opt/
or
mv firefox-37.0.2.tar.bz2 /opt/

β. cd στον κατάλογο /opt/.

cd /opt/

γ. Εξάγετε το Tarball.

tar -jxvf firefox-37.0.2.tar.bz2 

Μπορούμε να το κάνουμε και αντίστροφα.

Θα εξαγάγουμε το Tarball όπου βρίσκεται και θα αντιγράψουμε/μετακινήσουμε το εξαγόμενο αρχείο στον επιθυμητό προορισμό ως:

tar -jxvf firefox-37.0.2.tar.bz2 
cp -R firefox/  /opt/
or
mv firefox/ /opt/

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

tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/

Η επιλογή -C κάνει το tar να εξάγει το αρχείο στον καθορισμένο φάκελο (εδώ /opt/).

Όχι, δεν πρόκειται για επιλογή (-C), αλλά για συνήθειες. Συνηθίστε να χρησιμοποιείτε την επιλογή -C με πίσσα. Θα σας διευκολύνει τη ζωή. Από τώρα μην μετακινήσετε το αρχείο ή αντιγράψετε/μετακινήσετε το εξαγόμενο αρχείο, απλώς αφήστε το TAR-ball στο φάκελο Λήψεις και εξαγάγετε οπουδήποτε θέλετε.

4. Πώς σκοτώνουμε μια διαδικασία με παραδοσιακό τρόπο;

Με τον πιο γενικό τρόπο, πρώτα απαριθμούμε όλη τη διαδικασία χρησιμοποιώντας την εντολή ps -A και τη διοχετεύουμε με grep για να βρούμε μια διεργασία/υπηρεσία (π.χ. apache2 ), απλά ως:

ps -A | grep -i apache2
Δείγμα εξόδου
1006 ?        00:00:00 apache2
 2702 ?        00:00:00 apache2
 2703 ?        00:00:00 apache2
 2704 ?        00:00:00 apache2
 2705 ?        00:00:00 apache2
 2706 ?        00:00:00 apache2
 2707 ?        00:00:00 apache2

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

kill 1006 2702 2703 2704 2705 2706 2707

και, στη συνέχεια, ελέγξτε εάν κάποια διεργασία/υπηρεσία με το όνομα «apache2» εκτελείται ή όχι, καθώς:

ps -A | grep -i apache2

Ωστόσο, μπορούμε να το κάνουμε σε πιο κατανοητή μορφή χρησιμοποιώντας βοηθητικά προγράμματα όπως το pgrep και το pkill. Μπορείτε να βρείτε σχετικές πληροφορίες σχετικά με μια διαδικασία χρησιμοποιώντας το pgrep. Ας υποθέσουμε ότι πρέπει να βρείτε τις πληροφορίες διαδικασίας για το apache2, μπορείτε απλώς να κάνετε:

pgrep apache2
Δείγμα εξόδου
15396
15400
15401
15402
15403
15404
15405

Μπορείτε επίσης να καταχωρήσετε το όνομα της διαδικασίας έναντι του pid εκτελώντας.

pgrep -l apache2
Δείγμα εξόδου
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2

Το να σκοτώσετε μια διαδικασία χρησιμοποιώντας το pkill είναι πολύ απλό. Απλώς πληκτρολογήστε το όνομα του πόρου που θέλετε να σκοτώσετε και τελειώσατε. Έχω γράψει μια ανάρτηση στο pkill την οποία ίσως θέλετε να ανατρέξετε εδώ: https://linux-console.net/how-to-kill-a-process-in-linux/.

Για να σκοτώσετε μια διαδικασία (ας πούμε apache2) χρησιμοποιώντας το pkill, το μόνο που χρειάζεται να κάνετε είναι:

pkill apache2

Μπορείτε να επαληθεύσετε εάν το apache2 έχει σκοτωθεί ή όχι εκτελώντας την παρακάτω εντολή.

pgrep -l apache2

Επιστρέφει την προτροπή και δεν εκτυπώνει τίποτα, σημαίνει ότι δεν εκτελείται διεργασία με το όνομα apache2.

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