UNIX για αρχάριους – Αγαπημένοι Σύντροφοι

logos-distros

Μετά τα Στανταράκια, οι Αγαπημένοι Σύντροφοι αποτελούν προγράμματα τα οποία προϋποθέτουν ένα σχετικό level χρήσης και κατανόησης UNIX τα οποία χρησιμοποιούνται για την επίτευξη πιο σύνθετων εργασιών και αλληλεπίδρασης με το λειτουργικό. Κάποια από αυτά ας πούμε έχουν σαν target προγράμματα τα οποία εκτελούνται στο τοπικό μηχάνημα ή σε άλλα απομακρυσμένα, άλλα βοηθούν στην εύρεση αρχείων/φακέλων μέσα στο χάος του file system, άλλα βοηθούν το χρήστη έτσι ώστε να μπορέσει να συγκεντρώσει πληροφορίες σχετικά με τα τεχνικά χαρακτηριστικά ή την IP/MAC address του τρέχοντος UNIX μηχανήματος, άλλα … ΣΤΟΟΟΟΠ!
Πάμε να τα δούμε, ναι?

Επεξηγήσεις

Γενικά το attribute “Θέλει root” ουσιαστικά εννοεί εάν γενικά η συγκεκριμένη εντολή χρειάζεται root privileges, κάνοντας operations σε αρχεία/φακέλους/προγράμματα που ανήκουν στον απλό χρήστη, και όχι στον root/superuser. Τι σημαίνει αυτό?  Eγώ σαν χρήστης gclkaze δε μπορώ να πατήσω “cat /dev/null > /proc/meminfo” που θα έσβηνε τα περιεχόμενα του meminfo, το οποίο περιέχει πληροφορίες του συστήματος μνήμης που χρησιμοποιείται στο εκάστοτε μηχάνημα. Eαν ήμουν root ή sudoer, θα μπορούσα. Το “cat /dev/null > /proc/meminfo” όπως θα δείτε παρακάτω ΣΒΗΝΕΙ ΑΡΧΕΙΑ, ΜΗ ΚΑΝΕΤΕ COPY-PASTE ΤΗ ΠΡΟΗΓΟΥΜΕΝΗ ΕΝΤΟΛΗ ΓΙΑ ΚΑΝΕΝΑ ΛΟΓΟ!!! Επίσης, υπάρχουν προγράμματα τα οποία αλληλεπιδρούν με προγράμματα και system files τα οποία by default χρησιμοποιούνται σόλο από system admins, οι οποίοι είναι αναγκαστικά και sudoers. Δυο τέτοια προγράμματα πουουχού είναι το iptables, με το οποίο κάποιος ελέγχει το firewall του μηχανήματος, και το fdisk, με το οποίο κάποιος χειρίζεται PARTITIONS ΤΟΥ ΔΙΣΚΟΥ γενικά. Στα χέρια κάποιου αδαή, αυτές οι εντολές μπορούν να αποβούν το μαχαίρι στη καρδιά του συγκεκριμένου μηχανήματος. Γι’αυτό κάποιος πρέπει να είναι root έτσι ώστε να τολμήσει να πατήσει κάποια από τις 2 εντολές ενώ έχει αμφιβολίες για τη 4η (και βάλε) παράμετρο. Εάν υπάρχουν αμφιβολίες, η καταστροφή μπορεί να επέλθει. Στις προηγούμενες δυο περιπτώσεις, το root password θα ζητηθεί από τον χρήστη. Περισσότερα σχετικά με root & sudoers sto 5. sudoΕάν κάτι εμφανίζεται σαν “Στάνταρντ“, σημαίνει ότι υπάρχει ήδη εγκατεστημένο στις περισσότερες unix/unix-like distributions. Εάν όχι, τότε θα πρέπει να apt-get install! (Σχετικά με την εντολή apt-get στο ένθετο της επόμενης βδομάδας!)

0. grep

Τι κάνει: Ψάχνει να βρει λέξεις (υπό μορφή regualar expressions) σε αρχεία και όχι μόνο.
Τι σημαίνει: (g)lobally search a (r)egular (e)xpression and (p)rint
Συνοπτική σύνταξη: grep pattern path
Θέλει root? Όχι
Στάνταρντ: Ναι
Εφαρμογή #1: Σε ποιά cpp αρχεία αρχικοποιώ την μεταβλητή world?

gclkaze@tzertzelos:~/Desktop/Game$: grep ‘new world()’ *.cpp
main.cpp: world* w = new world();
test_world.cpp: world* w = new world();

Εφαρμογή #2: Σε ποιά cpp αρχεία αρχικοποιώ την μεταβλητή world? Δείξε κάθε matching result με χρώμα! ΓΙΕΕΙΙΙ!

gclkaze@tzertzelos:~/Desktop/Game$: grep –color ‘new world()’ *.cppΕπιλογή_058

Εφαρμογή #3: Πόσες φορές υπάρχει το στρίνγκ “OK” στο αρχείο benchmarks?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: grep -c ‘OK’ benchmarks
226

Εφαρμογή #4: Πόσες φορές υπάρχει το στρίνγκ “OK” στο αρχείο benchmarks? Aπό αυτές τις γραμμές, σε πόσες υπάρχει και το στρινγκ “league id: 65“?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: grep ‘OK’ benchmarks | grep -c ‘league id: 65’
132

Εφαρμογή #5: Ψάξε ΑΝΑΔΡΟΜΙΚΑ για το στρίνγκ “localhost” από το ‘/’ directory? A! Κάνε επίσης supress τύπου “Cannot open folder“, “Permission denied” γιατί δεν είμαι root!

gclkaze@tzertzelos:/$: grep -r -s ‘localhost’ *
etc/reportbug.conf:# smtphost localhost
etc/mysql/my.cnf:# localhost which is more compatible and is not less secure.
etc/php5/cli/php.ini:SMTP = localhost
etc/php5/apache2/php.ini:SMTP = localhost
etc/java-6-openjdk/management/snmp.acl:# o Only localhost can connect, and access rights
etc/java-6-openjdk/management/snmp.acl:# o Traps are sent to localhost only
etc/java-6-openjdk/management/snmp.acl:# managers = localhost
etc/java-6-openjdk/management/snmp.acl:# hosts = localhost
etc/java-6-openjdk/management/management.properties:# Default for this property is “localhost”.
etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1).
etc/java-6-openjdk/net.properties:# http.nonProxyHosts=localhost|127.0.0.1
etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1).
etc/java-6-openjdk/net.properties:# ftp.nonProxyHosts=localhost|127.0.0.1
etc/java-6-openjdk/security/java.policy: permission java.net.SocketPermission “localhost:1024-“, “listen”;
etc/hosts:127.0.0.1 localhost

Εφαρμογή #6: Σε ποιά γραμμή/γραμμές του my.cnf (config file της mysql) λέει κάτι σχετικά με datadir?

gclkaze@tzertzelos:~/Desktop/Game$: grep -n datadir /etc/mysql/my.cnf
40:datadir = /var/lib/mysql
gclkaze@tzertzelos:~/Desktop/Game$: pico +40 /etc/mysql/my.cnf # ΣΤΑ ΚΑΠΑΚΙΑ ΑΝΟΙΓΩ ΤΟ ΑΡΧΕΙΟ ΣΤΗ ΣΥΓΚΕΚΡΙΜΕΝΗ ΓΡΑΜΜΗ ΓΙΕΑ! ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ pico ΤΣΕΚΑΡΕΤΕ ΠΡΟΗΓΟΥΜΕΝΟ ΑΡΘΡΟ

Σημείωση: Η grep είναι μια από τις πιο παντοδύναμες εντολές στο UNIX. Χρησιμοποιείται παντού! Στο testing (σε ποιο αρχείο είναι το σώμα της void destroy_mankind(mankind*)?), στο debugging (ωχ! που πετάγεται το μήνυμα “ΠΑΝΑΓΙΑ” πριν το crash του προγράμματος μου?), benchmarking & data summaries (Εφαρμογές 2,3,4) και γενικά οτιδήποτε προϋποθέτει ψάξιμο, η grep και τα αδερφάκια της (egrep,fgrep) είναι οι καλύτεροι σας φίλοι! Να τις μάθετε καλά! Θα πιάσετε τον εαυτό σας να spam-άρει κάτι του στύλ “./exec | grep “DEBUG MESSAGE CASE 666” επειδή βαριέστε να ψάχνετε μόνοι σας με το μάτι για τυχόν εμφάνιση του προηγούμενο ντιμπάγκ μέσατζ στο κατεβατό συμβόλων που θα ξερνάει το πρόγραμμα σας μέσω του terminal. Περισσότερα για την grep, check references at the bottom! GREP IS POWER…και συνεχίζουμε!(For more, check reference [1] στο τέλος του άρθρου!)

1. ifconfig

Τι κάνει: Δείχνει και manage-άρει τα υπάρχοντα TCP/IP network interfaces του μηχανήματος
Τι σημαίνει: (i)nter(f)ace (config)uration
Συνοπτική σύνταξη: ifconfig
Θέλει root? Ναι
Στάνταρντ: Ναι

Εφαρμογή #1: Είμαι συνδεδεμένος σε wireless με καλώδιο και θέλω να δω την IP του box μου!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ifconfig
eth0 Link encap:Ethernet HWaddr 20:cf:30:9c:65:7b
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:42 Base address:0x8000eth1 Link encap:Ethernet HWaddr 00:30:84:0f:b9:d0
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::230:84ff:fe0f:b9d0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10891595 errors:0 dropped:0 overruns:0 frame:0
TX packets:8388674 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12614635872 (11.7 GiB) TX bytes:1517680670 (1.4 GiB)
Interrupt:21 Base address:0x8c00eth2 Link encap:Ethernet HWaddr 00:30:84:78:74:f7
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:22 Base address:0xa800lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1881191 errors:0 dropped:0 overruns:0 frame:0
TX packets:1881191 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:456898539 (435.7 MiB) TX bytes:456898539 (435.7 MiB)

Εφαρμογή #2: Είμαι η Εφαρμογή #1 αλλά τουμπανιασμένη!

gclkaze@tzertzelos:~/Desktop/Tzertzelos# ifconfig | grep ‘inet addr’
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
inet addr:127.0.0.1 Mask:255.0.0.0

2. passwd
Τι κάνει: Αλλάζει passwords για υπάρχοντες χρήστες του συστήματος
Τι σημαίνει: (passw)or(d)
Συνοπτική σύνταξη: passwd
Θέλει root? Όχι απαραίτητα
Στάνταρντ: Ναι
Εφαρμογή #1: Θέλω να αλλάξω το password μου!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: passwd
Changing password for gclkaze.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Εφαρμογή #2: Θέλω να αλλάξω το password του χρήστη kleinmeinidis_luben γιατί είμαι root και μπορώ!!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: passwd kleinmeinidis_luben
Changing password for kleinmeinidis_luben.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

3. updatedb
Τι κάνει: Ενημερώνει τη database του συστήματος /var/lib/mlocate/mlocate.db με το που βρίσκεται το κάθε αρχείο (σε ποιό directory) στο σύστημα έτσι ώστε να μπορούμε καπάκια να χρησιμοποιήσουμε την locate για ανεύρεση της τοποθεσίας οποιουδήποτε αρχείου στο host
Τι σημαίνει: (update) (d)ata(b)ase
Συνοπτική σύνταξη: updatedb
Θέλει root? Ναι!
Στάνταρντ: Όχι

Εφαρμογή #1: Θέλω να κάνω update την mlocate.db, έτσι ώστε να ξέρουμε (εγώ και η mlocate.db) που είναι οποιοδήποτε αρχείο/φάκελος!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: updatedb

4. locate
Τι κάνει: Σου βρίσκει αρχεία μέσα στο χάος που λέγεται localhost!
Τι σημαίνει: (locate)
Συνοπτική σύνταξη: locate file | locate folder
Θέλει root? Όχι, σε αντίθεση με το αδελφάκι του, το updatedb
Στάνταρντ: Όχι

Εφαρμογή #1: Θέλω να βρω που στο διάολο είναι το config file της mysql!!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: locate my.cnf
/etc/mysql/my.cnf

Εφαρμογή #2: Θέλω να δώ που είναι το game.cpp πού έγραφα πριν κανά μήνα! Α! Μου φαίνεται κάπου στο Desktop μου πρέπει να’ναι.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$:locate world | grep /home/gclkaze
/home/gclkaze/.config/google-chrome/Default/Local Storage/http_secure-uk.imrworldwide.com_0.localstorage
/home/gclkaze/.config/google-chrome/Default/Local Storage/http_secure-uk.imrworldwide.com_0.localstorage-journal
/home/gclkaze/.config/google-chrome/Default/Local Storage/http_www.itworld.com_0.localstorage
/home/gclkaze/.config/google-chrome/Default/Local Storage/http_www.itworld.com_0.localstorage-journal
/home/gclkaze/.macromedia/Flash_Player/#SharedObjects/6PZUMCBY/cdn.playwire.com/wplayer.swf/v#/iewsCokiehttpwwwromworldcom.sol
/home/gclkaze/Desktop/game/test_world.cpp
/home/gclkaze/Desktop/game/world
/home/gclkaze/Desktop/game/world.cpp
/home/gclkaze/Desktop/game/world.h
/home/gclkaze/Desktop/game/world.h.gch
/home/gclkaze/Desktop/game/world.o
/home/gclkaze/Desktop/game/world_loader
/home/gclkaze/Desktop/game/world_loader.cpp
/home/gclkaze/Desktop/game/world_loader.h
/home/gclkaze/Desktop/game/world_loader2.cpp
/home/gclkaze/Desktop/game/world_loader2.h
/home/gclkaze/Downloads/Music/1997 – The Action is Go(stonerdoompy.blogspot.com)/fu manchu – 08 – unknown world.mp3

5. sudo
Τι κάνει: Σε αφήνει να εκτελέσεις εντολές με τα privileges ενός superuser aka root (εάν μπορείς)
Τι σημαίνει: (s)ubstitute (u)ser (do)
Συνοπτική σύνταξη: sudo command
Θέλει root? Όχι, αλλά για να πετύχει θα πρέπει να είσαι sudoer, χρήστης καταγεγραμμένος στο /usr/local/etc/sudoers ο οποίος μπορεί να εκτελέσει εντολές σαν superuser
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να δω τι έχει μέσα ο φάκελος /root/ χωρίς να είμαι o root!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls /root/
ls: cannot open directory /root/: Permission denied
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: sudo ls /root/
Desktop Music rtl8192se_linux_2.6.0010.1012.2009 THAT
Documents Pictures rtl8192se_linux_2.6.0010.1012.2009.tar.gz Videos
Downloads Public Templates

Εφαρμογή #2: Θέλω να log-άρω σαν root! Τώρα!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: sudo -i
[sudo] password for gclkaze:
root@tzertzelos:~$:

6. history
Τι κάνει: Σου δείχνει τις εντολές που πληκτρολόγησες στο συγκεκριμένο host sorted by timestamp
Τι σημαίνει: (history)
Συνοπτική σύνταξη: history
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να δώ τι σκατά εντολές εισήγαγα μήπως και βρώ την κωλο-εντολή που χρειάζομαι!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: history
1468 ls
1469 pico instructions.php
1470 pico subvec.php
1471 pico typevec.php
1472 pico store.php
1473 pico bigmat.php
1474 pico bigmat2.php
1475 grep ‘store.php’ *
1476 pico index.php
1477 pico store.php
1478 ls
1479 pico ‘index(serverside).php’
1480 pico clientvec.php
1481 pico ‘index(serverside).php’
1482 apt-cache search desmume
1483 apt-get install desmume
1484 sudo apt-get install desmume
1485 su
1486 ssh gclkaze@moogle.com
1487 pico Makefile
1488 ssh gclkaze@moogle.com
1489 ping http://www.moogle.com
1490 history

Εφαρμογή #2: Θέλω να δώ τις τελευταίες 10 εντολές που πάτησα.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: history 10
1483 apt-get install desmume
1484 sudo apt-get install desmume
1485 su
1486 ssh gclkaze@moogle.com
1487 pico Makefile
1488 ssh gclkaze@moogle.com
1489 ping http://www.moogle.com
1490 history
1491 history 10

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

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: history | grep mysql
801 mysql -h mysql020.iamatroll.com -u ID11466_vol666 -p
888 mysql -h localhost -u mysql020.iamatroll.com -h
889 mysql -h localhost -u mysql020.iamatroll.com -p
890 mysql -h mysql020.iamatroll.com -u ID114666_vol666 -p
894 mysql -h mysql020.iamatroll.com -u ID114666_vol666 -p
920 mysql -h mysql020.iamatroll.com -u ID114666_vol666 -p
1149 mysql -h localhost -u root -p
1414 mysql -h localhost -u root -p
1493 history | grep mysql

7. man
Τι κάνει: Ψάχνει το manual για συγκεκριμένο πρόγραμμα ή συνάρτηση/header της libc (C library)
Τι σημαίνει: (man)ual
Συνοπτική σύνταξη: man program_name, man libc_function_name
Θέλει root? Γενικά όχι, μόνο όταν θέλουμε να γράψουμε τα περιεχόμενα του εκτός Standard Output (την οθόνη)
Στάνταρντ: Ναι

Εφαρμογή #1: Έχουμε τίποτα για strcpy?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: man strcpyΕπιλογή_061

Εφαρμογή #2: Παίρνει port parameter το ssh?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: man ssh | grep ‘\-p port’
[-O ctl_cmd] [-o option] [-p port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]
-p port

8. tar
Τι κάνει: Zip-άρει/συμπιέζει αρχεία ή folders ολόκληρα
Τι σημαίνει: (t)ape (ar)chiving (ΚΟΜΠΡΕΣΑΡΕΙ DATA ΣΕ ΣΕ ΚΑΣΣΕΤΑ??ΟΥΑΟΥ!)
Συνοπτική σύνταξη: cd /path/folder
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να κομπρεσάρω το file1 και το file2 στο result.tar.gz

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: tar -zcvf result.tar.gz file1 file2
file1
file2

Εφαρμογή #2: Θέλω να κομπρεσάρω ολόκληρο των φάκελο folder στο folder.tar.gz

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: tar -zcvf folder.tar.gz folder
folder/
folder/file1
folder/file2
folder/result.tar.gz

Εφαρμογή #3: Θέλω να εξάγω τα περιεχόμενα του tar ball result.tar.gz.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: tar -zxvf result.tar.gz
file1
file2

Εφαρμογή #4: Θέλω να δώ τα περιεχόμενα του tar ball result.tar.gz.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: tar -ztvf result.tar.gz
drwxr-xr-x root/root 0 2014-01-19 16:35 folder/
-rw-r–r– root/root 1439 2014-01-22 21:00 folder/file1
-rw-r–r– root/root 17772 2014-01-18 21:45 folder/file2
-rw-r–r– root/root 24298 2014-01-19 15:45 folder/result.tar.gz

9. df
Τι κάνει: Σου δείχνει πόσο ελεύθερο δίσκο έχεις στο εκάστοτε available filesystem του μηχανήματος
Τι σημαίνει: (d)isk (f)ree
Συνοπτική σύνταξη: df
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να δω πόσο ελεύθερο σκληρό δίσκο έχω!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1417380564 50165008 1295216736 4% /
udev 10240 0 10240 0% /dev
tmpfs 1233400 672 1232728 1% /run
/dev/disk/by-uuid/6d6f0cf8-e460-44e3-9b7b-a1270fae31be 1417380564 50165008 1295216736 4% /
tmpfs 5120 0 5120 0% /run/lock
tmpfs 7498720 23488 7475232 1% /run/shm

(ΠΟΛΥ ΝΟΥΜΕΡΟ! ΠΟΣΟ ΑΠΕΙΡΟ ΔΙΣΚΟ ΕΧΩ ΣΤΟ ΝΕΟ ΤΟΥΜΠΑΝΟ ΜΗΧΑΝΗΜΑ ΠΟΥ ΠΗΡΑ! ΧΑΙΡΕΤΙΣΜΑΤΑ ΣΤΗ SANTA CATARINA!)

Εφαρμογή #2: Η Εφαρμογή #1 σε human readable format (1024 = 1M etc)!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 1.4T 48G 1.3T 4% /
udev 10M 0 10M 0% /dev
tmpfs 1.2G 672K 1.2G 1% /run
/dev/disk/by-uuid/6d6f0cf8-e460-44e3-9b7b-a1270fae31be 1.4T 48G 1.3T 4% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.2G 23M 7.2G 1% /run/shm

10. ssh
Τι κάνει: Σε συνδέει σε απομακρυσμένο υπολογιστή μέσω secure καναλιού
Τι σημαίνει: (s)ecure (sh)ell
Συνοπτική σύνταξη: ssh -p port user@hostname.com
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να log-άρω στο μηχάνημα minion της moogle

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ssh gclkaze@minion.moogle.com
gclkaze@moogle.com’s password:
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-21-generic x86_64)* Documentation: https://help.ubuntu.com/System information disabled due to load higher than 1.0180 packages can be updated.
119 updates are security updates.New release ‘13.04’ available.
Run ‘do-release-upgrade’ to upgrade to it.Get cloud support with Ubuntu Advantage Cloud Guest
http://www.ubuntu.com/business/services/cloud
Last login: Wed Jan 22 20:26:06 2014 from dhcp-077-666-239-267.yeahs.yeahs.org
gclkaze@minion:~$

11. top/htop
Τι κάνουν: Δείχνουν info για τα προγράμματα που τρέχουν στο pc. Η htop είναι η fancy & trendy μορφή της top, σκέτη ομορφιά!
Τι σημαίνει: Κάτι σίγουρα που θα περιέχει το στρίνγκ (p)rocesses
Συνοπτική σύνταξη: (h)top
Θέλει root? Όχι
Στάνταρντ: Ναι η top, όχι η htop

Εφαρμογή #1: Τι προγράμματα τρέχουν αυτή τη στιγμή?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: top
top – 22:52:38 up 10 days, 8:10, 30 users, load average: 1,35, 1,45, 1,12
Tasks: 285 total, 1 running, 283 sleeping, 1 stopped, 0 zombie
%Cpu(s): 19,9 us, 4,7 sy, 0,0 ni, 75,4 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 12333992 total, 11532124 used, 801868 free, 212684 buffers
KiB Swap: 25159676 total, 15484 used, 25144192 free, 3741804 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND6630 gclkaze 20 0 2331m 1,0g 47m S 21,1 8,6 710:22.89 chrome
14663 gclkaze 20 0 2103m 331m 44m S 10,9 2,8 407:47.59 chrome
892 gclkaze 20 0 519m 103m 19m S 6,6 0,9 6:57.17 /usr/bin/x-term
4591 gclkaze 9 -11 370m 7656 4304 S 5,6 0,1 207:34.97 pulseaudio
3188 gclkaze 20 0 393m 168m 144m S 4,9 1,4 199:39.08 Xorg
6525 gclkaze 20 0 1222m 356m 55m S 4,3 3,0 553:43.40 chrome
5679 gclkaze 20 0 975m 95m 26m S 1,0 0,8 66:27.70 chrome
11706 gclkaze 20 0 954m 128m 25m S 1,0 1,1 62:10.98 chrome
24627 gclkaze 20 0 942m 60m 24m S 1,0 0,5 59:39.23 chrome
31325 gclkaze 20 0 1275m 169m 29m S 1,0 1,4 173:04.33 chrome
31812 gclkaze 20 0 1001m 134m 30m S 1,0 1,1 81:31.47 chrome
7695 gclkaze 20 0 936m 66m 24m S 0,7 0,6 48:47.42 chrome
25220 gclkaze 20 0 937m 71m 20m S 0,7 0,6 8:25.42 chrome
29472 gclkaze 20 0 1026m 120m 31m S 0,7 1,0 1:49.10 chrome
3185 mysql 20 0 419m 43m 7688 S 0,3 0,4 20:27.45 mysqld
4493 gclkaze 20 0 296m 19m 12m S 0,3 0,2 5:11.67 xfce4-panel
7657 gclkaze 20 0 1444m 256m 44m S 0,3 2,1 184:16.13 chrome
19354 gclkaze 20 0 965m 80m 24m S 0,3 0,7 8:38.35 chrome
25234 gclkaze 20 0 909m 47m 20m S 0,3 0,4 7:15.08 chrome
28807 gclkaze 20 0 0 0 0 S 0,3 0,0 0:01.92 kworker/0:1
30282 gclkaze 20 0 0 0 0 S 0,3 0,0 0:00.13 kworker/1:3
30376 gclkaze 20 0 0 0 0 S 0,3 0,0 0:00.13 kworker/2:3
30390 gclkaze 20 0 23440 1784 1132 R 0,3 0,0 0:00.07 top
1 gclkaze 20 0 10648 712 668 S 0,0 0,0 0:13.48 init
2 gclkaze 20 0 0 0 0 S 0,0 0,0 0:00.49 kthreadd
3 gclkaze 20 0 0 0 0 S 0,0 0,0 0:25.61 ksoftirqd/0
6 gclkaze rt 0 0 0 0 S 0,0 0,0 0:33.82 migration/0
7 gclkaze rt 0 0 0 0 S 0,0 0,0 0:03.88 watchdog/0
8 gclkaze rt 0 0 0 0 S 0,0 0,0 0:35.28 migration/1
10 gclkaze 20 0 0 0 0 S 0,0 0,0 0:22.25 ksoftirqd/1
12 gclkaze rt 0 0 0 0 S 0,0 0,0 0:04.86 watchdog/1
13 gclkaze rt 0 0 0 0 S 0,0 0,0 0:32.13 migration/2
15 gclkaze 20 0 0 0 0 S 0,0 0,0 0:36.28 ksoftirqd/2
16 gclkaze rt 0 0 0 0 S 0,0 0,0 0:05.23 watchdog/2
17 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 cpuset
18 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 khelper
19 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kdevtmpfs
20 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 netns

Εφαρμογή #2: Τι προγράμματα τρέχουν? Ε? htop, i command you!!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: htopΕπιλογή_059

12. ps
Τι κάνει: Δείχνει τα προγράμματα που τρέχουν αυτή τη στιγμή
Τι σημαίνει: (p)rocess (s)tatus
Συνοπτική σύνταξη: ps
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Τι προγράμματα τρέχουν αυτή τη στιγμή?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:03 ? 00:00:00 init [2]
root 2 0 0 17:03 ? 00:00:00 [kthreadd]
root 3 2 0 17:03 ? 00:00:00 [ksoftirqd/0]
root 4 2 0 17:03 ? 00:00:00 [kworker/0:0]
root 6 2 0 17:03 ? 00:00:00 [migration/0]
root 7 2 0 17:03 ? 00:00:00 [watchdog/0]
root 8 2 0 17:03 ? 00:00:00 [migration/1]
root 10 2 0 17:03 ? 00:00:00 [ksoftirqd/1]
root 11 2 0 17:03 ? 00:00:00 [kworker/0:1]
root 12 2 0 17:03 ? 00:00:00 [watchdog/1]
root 13 2 0 17:03 ? 00:00:00 [migration/2]
root 14 2 0 17:03 ? 00:00:00 [kworker/2:0]
root 15 2 0 17:03 ? 00:00:00 [ksoftirqd/2]
root 16 2 0 17:03 ? 00:00:00 [watchdog/2]
root 17 2 0 17:03 ? 00:00:00 [cpuset]
root 18 2 0 17:03 ? 00:00:00 [khelper]
root 19 2 0 17:03 ? 00:00:00 [kdevtmpfs]
root 20 2 0 17:03 ? 00:00:00 [netns]
root 21 2 0 17:03 ? 00:00:00 [sync_supers]
root 22 2 0 17:03 ? 00:00:00 [bdi-default]
root 23 2 0 17:03 ? 00:00:00 [kintegrityd]
root 24 2 0 17:03 ? 00:00:00 [kblockd]
root 26 2 0 17:03 ? 00:00:00 [khungtaskd]
root 27 2 0 17:03 ? 00:00:00 [kswapd0]
root 28 2 0 17:03 ? 00:00:00 [ksmd]
root 29 2 0 17:03 ? 00:00:00 [khugepaged]
root 30 2 0 17:03 ? 00:00:00 [fsnotify_mark]
root 31 2 0 17:03 ? 00:00:00 [crypto]
root 34 2 0 17:03 ? 00:00:00 [kworker/2:2]

Εφαρμογή #2: Ποια python προγράμματα τρέχουν αυτή τη στιγμή?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ps -ef | grep python
gclkaze 4624 1 0 17:04 ? 00:00:00 /usr/bin/python /usr/bin/system-config-printer-applet
gclkaze 5201 1 0 17:05 ? 00:00:02 /usr/bin/python /usr/bin/x-terminal-emulator
gclkaze 5856 1 0 17:10 ? 00:00:03 /usr/bin/python /usr/bin/x-terminal-emulator
root 6049 5926 0 17:19 pts/1 00:00:00 grep python

13. kill
Τι κάνει: Σκοτώνει-εξουδετερώνει-εξολοθρεύει-εξαφανίζει προγράμματα με διάφορους τρόπους (signals)
Τι σημαίνει: (kill)
Συνοπτική σύνταξη: kill process_id (PID)
Θέλει root? Αναλόγως ποιανού το πρόγραμμα θες να σκοτώσεις
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να σκοτώσω το κωλό-a.out που έχει μπει σε ατέρμονη loopa!
Βήμα #1: Βρες το PID του a.out!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ps aux | grep a.out
gclkaze 30679 99.0 0.0 3932 316 pts/29 R+ 23:17 0:03 ./a.out
gclkaze 30681 0.0 0.0 7832 840 pts/24 S+ 23:17 0:00 grep a.out

Βήμα #2: ΣΚΟΤΩΣΕ το a.out με PID 30679! (9 = SIGNKILL CODE)

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: kill -9 30679

(Στο κολλημένο terminal την ίδια στιγμή, ενώ το a.out έτρεχε για πάντα)

gclkaze@tzertzelos:~/Desktop/Tzertzelos$ ./a.out
Killed

Εφαρμογή #2: Δώσε τη λίστα των σημάτων-signals-ways to die!

gclkaze@tzertzelos:~/Desktop/Tzertzelos/LA_FEMME$ 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

Εφαρμογή #3: (CAUTION HERE!) Brutal επανεκκίνηση του συστήματος (REBOOT!!!CAUTION!)

gclkaze@tzertzelos:~/Desktop/Tzertzelos/LA_FEMME$ kill -9 -1

(Εδώ δε πρόλαβα να κάνω copy-paste αυτά που μου είπε το συγκεκριμένο instance του terminal μαζί με το υπόλοιπο σύστημα πριν το αυτοκτονήσω στη παντοτινή λήθη…σίγουρα ξεκίναγε με “Την” και τελείωνε με “αγία σου”)

14. scp
Τι κάνει: Στέλνει αρχεία σε άλλα απομακρυσμένα pc
Τι σημαίνει: (s)ecure (c)o(p)y
Συνοπτική σύνταξη: scp -p port file username@host:/path
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να στείλω το kaboom.tar.gz σε άλλο pc, στον λογαριασμό μου!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: scp kaboom.tar.gz gclkaze@minion.moogle.com:/home/gclkaze
gclkaze@minion.moogle.com’s password:
kaboom.tar.gz 100% 0 0.0KB/s 00:00

15. ipython
Τι κάνει: Ανοίγει το interactive python shell!!ΓΙΕΙΙΙ!
Τι σημαίνει: (i)nteractive (python) shell
Συνοπτική σύνταξη: ipython
Θέλει root? Όχι
Στάνταρντ: Όχι

Εφαρμογή #1: Θέλω να τσεκάρω τη χρήση του python set σε λίστα!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ipython
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
Type “copyright”, “credits” or “license” for more information.IPython 0.13.1 — An enhanced Interactive Python.
? -> Introduction and overview of IPython’s features.
%quickref -> Quick reference.
help -> Python’s own help system.
object? -> Details about ‘object’, use ‘object??’ for extra details.
In [1]: L = [1,1,1,1,2,2,2,2,3,3]
In [2]: print set(L)
set([1, 2, 3])
In [3]:

16. make
Tι κάνει: Της Παναγιάς τα μάτια κάνει. Εφευρέθηκε σαν automated executable builder, εκτελεί διαδοχικά καλώς ορισμένες εντολές που βρίσκονται στα αρχεία Makefile
Τι σημαίνει: (make)file
Συνοπτική σύνταξη: make target
Θέλει root? Όχι
Στάνταρντ: Ναι
Εφαρμογές: Δείτε προηγούμενο άρθρο [5]

17. nohup
Τι κάνει: Δαιμονοποιεί εντολές και στέλνει το output τους στο nohup.out του working directory!
Τι σημαίνει: (no) (h)ang(up)
Συνοπτική σύνταξη: nohup command &
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να δαιμονοποιήσω το fetch.py! Να τρέχει στο background αθόρυβα! ΝΑΙ!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: nohup python fetch.py &
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: nohup: appending output to ‘nohup.out’

Σημείωση: Περισσότερα για δαίμονες (daemons) κοιτάξτε παρακάτω στα references, στο [2]

18. ping
Τι κάνει: Στέλνει ICMP πακέτα στο target host και περιμένει απάντηση από αυτό, τσεκάροντας εάν ζει.
Επίσης δείχνει χρήσιμες πληροφορίες σχετικά με το round trip των πακέτων και πόσα στάλθηκαν και πόσα χάθηκαν (γιατί το target host ήταν χάμω)
Τι σημαίνει: Χμμμ?? ping host? Not sure.
Συνοπτική σύνταξη: ping host
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να δω αν έχω internetz.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ping http://www.google.com
PING http://www.google.com (173.194.67.106) 56(84) bytes of data.
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=1 ttl=47 time=12.9 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=2 ttl=47 time=13.3 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=3 ttl=47 time=13.7 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=4 ttl=47 time=13.0 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=5 ttl=47 time=16.7 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=6 ttl=47 time=13.3 ms
64 bytes from wi-in-f106.1e100.net (173.194.67.106): icmp_req=7 ttl=47 time=15.8 ms
^C
http://www.google.com ping statistics —
7 packets transmitted, 7 received, 0% packet loss, time 6007ms
rtt min/avg/max/mdev = 12.941/14.165/16.752/1.407 ms

19. uname
Τι κάνει: Δείχνει το όνομα του συγκεκριμένου μηχανήματος, καθώς και πληροφορίες για το λειτουργικό του σύστημα όπως distribution name, CPU arch, OS version
Τι σημαίνει: (u)nix (name)
Συνοπτική σύνταξη: uname -a
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Τι σκατά machine έχω??

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: uname -a
Linux Tzertzelos 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux

20. chmod
Τι κάνει: Αλλάζει file/folder permissions
Τι σημαίνει: (ch)ange (mod)e bits
Συνοπτική σύνταξη: chmod permission_bits file
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Άλλαξε τα permissions του file σε public read/write/execute.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l file
-rw-r–r– 1 gclkaze gclkaze 3 Jan 24 19:08 file
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: chmod 777 file
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l file
-rwxrwxrwx 1 gclkaze gclkaze 3 Jan 24 19:08 file

Εφαρμογή #2: Άλλαξε τα permissions του file σε owner read/write/execute, group & public read/execute.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l file
-rw-r–r– 1 gclkaze gclkaze 3 Jan 24 19:08 file
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: chmod 755 file
gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l file
-rwxr-xr-x 1 gclkaze gclkaze 3 Jan 24 19:08 file

Εφαρμογή #3: Άλλαξε τα permissions του folder και όλων των αρχείων του σε owner read/write/execute, group & public read/execute.

root@tzertzelos:~/Desktop/Tzertzelos$: ls -l folder
total 12
-rw-r–r– 1 root root 4 Jan 24 19:19 file1
-rw-r–r– 1 root root 4 Jan 24 19:19 file2
-rw-r–r– 1 root root 7 Jan 24 19:19 file3root@tzertzelos:~/Desktop/Tzertzelos$: chmod 755 folder
root@tzertzelos:~/Desktop/Tzertzelos$: ls -l file
total 12
-rwxr-xr-x 1 root root 4 Jan 24 19:19 folder/file1
-rwxr-xr-x 1 root root 4 Jan 24 19:19 folder/file2
-rwxr-xr-x 1 root root 7 Jan 24 19:19 folder/file3

Εφαρμογή #4: Άλλαξε τα permissions του folder και όλων των αρχείων & φακέλων του ΑΝΑΔΡΟΜΙΚΑ σε owner read/write/execute, group & public read/execute.

root@tzertzelos:~/Desktop/Tzertzelos$: ls -l -R folder
folder:
total 8
-rw-r–r– 1 root root 6 Jan 24 19:23 file1
drwxr-xr-x 2 root root 4096 Jan 24 19:23 folder_insidefolder/folder_inside:
total 12
-rw-r–r– 1 root root 6 Jan 24 19:23 file1
-rw-r–r– 1 root root 8 Jan 24 19:23 file2
-rw-r–r– 1 root root 8 Jan 24 19:23 file3root@tzertzelos:~/Desktop/Tzertzelos$: chmod -R 755 folder
root@tzertzelos:~/Desktop/Tzertzelos$: ls -l _R folder
folder:
total 8
-rwxrwxrwx 1 root root 6 Jan 24 19:23 file1
drwxrwxrwx 2 root root 4096 Jan 24 19:23 folder_insidefolder/folder_inside:
total 12
-rwxrwxrwx 1 root root 6 Jan 24 19:23 file1
-rwxrwxrwx 1 root root 8 Jan 24 19:23 file2
-rwxrwxrwx 1 root root 8 Jan 24 19:23 file3

ΠΡΟΣΟΧΗ ΣΕ ΤΙ ΔΙΝΕΤΑΙ PUBLIC PERMISSIONS ΚΑΙ ΣΕ ΠΟΙΟΝ!!

Η ΚΑΚΗ ΑΝΑΘΕΣΗ PERMISSIONS ΘΑ ΜΠΟΡΟΥΣΕ ΝΑ ΑΠΟΒΕΙ ΜΟΙΡΑΙΑ! ΝΑ ΠΡΟΣΕΧΕΤΕ ΤΙ ΔΙΝΕΤΑΙ ΚΑΙ ΠΟΥ!

Τo unix permission system σηκώνει ολόκληρο άρθρο και αναφορά! Γι’αυτό ξεκινήστε εσείς τη μελέτη εδώ αρχικά και θα το ξαναεξετάσουμε το θέμα! Stay tuned!

21. exit
Τι κάνει: Log out. Α! Κλείνει και καμιά σύνδεση με απομακρυσμένο host άμα λάχει! Kαι κανά ανοικτό terminal!
Τί σημαίνει: (exit)
Συνοπτική σύνταξη: hostname
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω να log-άρω από root!

root@tzertzelos:~/Desktop/Tzertzelos$: exit
gclkaze@tzertzelos:~/Desktop/Tzertzelos$:

22. reboot
Τι κάνει: Reboot! Μα τι άλλο?
Τι σημαίνει: (reboot)
Συνοπτική σύνταξη: reboot
Θέλει root? Ναι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω reboot! Κόλλησε πάλι το βλαμμένο!

root@tzertzelos:~/Desktop/Tzertzelos$: reboot

23. whoami
Τι κάνει: Δείχνει το username σου
Τι σημαίνει: (who am i)?
Συνοπτική σύνταξη: whoami
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Ποιο είναι το username μου?

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: whoami
gclkaze

24. hostname
Τι κάνει: Δείχνει το DNS όνομα του μηχανήματος σου, το hostname του
Τι σημαίνει: (host) (name)
Συνοπτική σύνταξη: hostname
Θέλει root? Όχι
Στάνταρντ: Ναι

Εφαρμογή #1: Θέλω το όνομα του μηχανήματος μου!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: hostname
tzertzelos

25. shutdown
Τι κάνει: Shutdown του συστήματος με ασφαλή τρόπο
Τι σημαίνει: (shut down)
Συνοπτική σύνταξη: shutdown seconds
Θέλει root? Ναι
Στάνταρντ: Ναι

Εφαρμογή #1: Κλείσιμο για σήμερα..σε 5..σε 4.. σε 3..σε 2..σε 1…ΜΠΙΠ!

root@tzertzelos:~/Desktop/Tzertzelos$: shutdown 5

Περάστηκαν στο WordPress ακούγοντας αυτά
Cause Sui – Euporie Tide (full LP)
Ufomammut – Idolum (full LP)
Cause Sui – Euporie Tide (full LP)
Kadavar – Abra Kadavar (full LP)
Uncle Acid and The Deadbeats – Under the Spell


References:
[0] . Τι είναι ένα πρόγραμμα?

[1]. The grep family
[2]. Daemons
[3]. Permissions
[4]. Η Βίβλος, το απόλυτο βιβλίο για Unix λειτουργικά συστήματα A.Tanenbaum
[5]. make: Το εργαλείο του τεμπέλη!

Υ.Γ: Σε περίπτωση που βρείτε τυχόν λάθη, αφήστε κανά σχόλιο! Επίσης, εάν κάποιος είχε κάποιο τρόπο να προτείνει για γρηγορότερη εύρεση κάποιας εντολής να μου το πει! Όπως πουχού να προσέθετα meta-keywords ή κάτι τέτοιο σε κάθε εντολή!
Προηγούμενο άρθρο του Tutorial Unix για αρχάριους

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s