Christos M Delivorias

Archive for the ‘Linux’ Category

Checking progress of a shell process

In CommandLineFu, Linux on 11 April, 2012 at 10:25 am

When dealing with processing really large files (300files~15MBeach), it quickly becomes a process that you have to wait a long time for it to finish. I wrote a Java program that manipulated a flat text P1/90 (Seismic Vessel’s Positions) file and outputed a corrected version in another directory. Thus I wanted to check how far along it had gone and when I should expect it to finish.

Mind you I could have done this in the Java code – keep a record of all the files and how many had been processed – but this project was time-constrained so I didn’t have the luxury of developing it the way I wanted; it had to be done quickly. I therefore delegated the monitoring to the command line tools. Since I new how many files I had originally and how many were being created in the new directory, all I had to do is count each of them and compare them. The following one-liner does exactly that:

watch 'ls *190 | echo -n "`wc -l`"; echo -n "/"; ls ../*90 | wc -l'

Read the rest of this entry »

Ubuntu post-install “One script to rule them all”

In Linux, ZSH on 18 January, 2011 at 6:51 pm


I’ve written before (in Greek) about my woes with the pulse audio server in Ubuntu. Every time I fixed it, the whole system crumbled when I performed an update, let alone an upgrade. What I eventually did is to practically give up. I just didn’t have enough time to work on it in order to fix it. The workaround I resorted to was to keep my /home partition fully encrypted on its own partition and then everytime I wanted to upgrade to a later distribution I did a clean re-install of Ubuntu.

The drawbacks of this was that I was still spending too much time re-installing all my tools and applications from scratch. Their configurations were safe in the hidden folders in my /home directory. The process of finding everything and keeping track of what I used and manually install them was getting laborious.

So in the true linux spirit, I did what I guess anyone of you reading this post would do. I just created a small script to get me back to how my system used to be. This script will make a backup copy of the existing repository list first and then replace it will a list that will include all the necessary entries to install the software I need [File1:Lines2-3].

Then a few necessary encryption keys are installed so that certain repositories can be authenticated [File1:Lines4-8]. And from then on there’s a very long line with every single piece of binary I want installed [File1:Line10]. If I find I’m using a new application very often I will add it in the list here and add its repositories in the scripts repository list. Read the rest of this entry »

Επικόλληση στο GNU Screen

In Linux on 31 August, 2010 at 10:08 am

Στο γραφείο χρειάζεται να δουλεύω μεταξύ ενός Linux desktop και ενός Windows XP laptop. Η συγκεκριμένη διαμόρφωση έχει τα θετικά της έχει και τα αρνητικά της. Δεν μπορώ να μήν παραδεχτώ ότι το Microsoft Office είναι ένα προϊόν στοχευμένο στο εταιρικό περιβάλλον και ενώ το OpenOffice είναι υπεραρκετό για το σπίτι, στο γραφείο είναι υποχρεωτικό να δουλεύεις με Enterprise Grade λογισμικό. Για πολλούς λόγους ισχύει αυτό που δεν θα ήθελα να αναφέρω τώρα. Δεν είναι αυτός ο σκοπός της καταχώρησης. Το RedHat distro που έχουμε είναι fully supported ως Enterprise Linux.

Αυτό που ήθελα να προσφέρω, σε όποιον/α ενδιαφέρεται, είναι ένας τρόπος να αξιοποιείτε η ταυτόχρονη χρήση του GNU Screen από πολλαπλούς χρήστες. Είχα αναφερθεί στο Screen και σε παλαιότερη ανάρτηση. Για να μετακινούμαι από Linux σε Windows χρησιμοποιώ οθόνες με διπλή είσοδο σήματος. Με αυτό τον τρόπο το linux desktop παρέχει σήμα σε DVI, σε δύο οθόνες, και το Windows laptop σήμα σε VGA και πάλι σε δύο οθόνες. Με αυτό τον τρόπο πατώντας ένα κουμπί στην οθόνη, αλλάζω την οπτική μεταξύ τους. Σε συνδιασμό και με το synergy2, δεν χρειάζεται να έχω πολλαπλά πληκτρολόγια και ποντίκια. Περισσότερα για το synergy2 σε μελλοντική καταχώρηση αν σας ενδιαφέρει. Απλά ρωτήστε στα σχόλια.

Υπάρχουν όμως φορές που δεν χρειάζομαι ολόκληρο τον X server να τρέχει GDM. Χρειάζομαι απλά μια οθόνη με τερματικό. Κάτι τέτοιο είναι πολύ απλό. Το putty είναι ένα πολύ ελαφρύ και εύχρηστο εργαλείο για να συμπληρώσει την έλλειψη SSH & SCP στα Windows. Υποστηρίζει και public key cryptography σε περίπτωση οπυ θέλετε να συνδέεστε χωρίς συνθηματικό στον απομακρυσμένο υπολογιστή. Επικίνδυνο, αλλά βολικό ορισμένες φορες πίσω από προστατευμένα δίκτυα. Μπορώ συνεπώς σχετικά εύκολα να συνδέομαι στο Linux box.

Read the rest of this entry »

Γρήγορη εύρεση κατανομής δίσκου σε Linux partition

In Linux on 12 July, 2010 at 1:07 pm

Πολλές φορές βρίσκω να χρειάζομαι ένα εργαλείο που να μου δείχνει πού συσσωρεύονται αρχεία και καταλαμβάνουν πολύ χώρο, με τρόπο που δίνει εύκολα να καταλάβω το μέγεθος των directories.

Θα μπορούσα σίγουρα να κάνω μία εύρεση για μεγάλα αρχεία π.χ.

RedHat/CentOS/Fedora

$ find . -type f -size +5000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Debian/Ubuntu

$ find . -type f -size +10000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

αλλά κάτι τέτοιο δεν θα έβρισκε σημεία όπου πολλά μικρότερα αρχεία (π.χ. η cache των browser ή τα log files) συνοστίζονται σε ένα directory.

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

Η εντολή θα αναζητήσει το μέγεθος των αρχείων στο τρέχων directory, θα τα αναταξινομήσει σύμφωνα με τον αύξων αριθμό και μετά θα εμφανίσει το μέγεθος σε μορφή KB, MB & GB ανάλογα με το μέγεθος.

alias duf='du -sk .[a-z]* * | sort -n | perl -ne '\''($s,$f)=split(m(\t)); for (qw( K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f";last};$s=$s/1024}'\'''

Προσθέτοντας το παραπάνω, σε ένα από τα αρχεία:

~/.zshrc || ~/.bashrc

θα μπορείτε να εκτελείται αυτή την εντολή με το alias duf στο τρέχον directory.

Αν σας βοήθησε το συγκεκριμένο, απλά προωθήστε το!


Για εθισμένους στο CLI, μια GTD todo λίστα…

In Ανοιχτα δεδομενα, Linux on 22 June, 2010 at 10:22 pm

Καιρό τώρα έχω προσπαθήσει  να ξεκινήσω να κρατάω μία λίστα σε μια προσπάθεια να ολοκληρώνω κάποιες δουλειές με ποιό αποτελεσματικό και βέλτιστο τρόπο. Με μια απλή διαδικασία Getting Things Done (GTD) μπορώ να επικεντρώνω με περισσότερη ευκολία στα θέματα με αυξημένη προτεραιότητα και να “κλείνω” θέματα πιό συχνά. Τα προβλήματα εύκολης απώλειας προσοχής που έχω ορισμένες φορές θα μπορούσαν να καταπολεμηθούν μόνο με μια υπέρταση εκδήλωση geekiness κατα την διατήρηση μιας todo λίστας.

Πώς μπορείς όμως να εκδηλώσεις geekiness όταν τα διαθέσιμα εργαλεία που υπάρχουν δεν φτάνουν για να κερδίσουν τον προηγούμενο τίτλο; Εύκολα!!!

Έτυχε να βρεθώ μπροστά στο Todo.txt Command Line Interface (CLI) της γνωστής από το LifeHacker.com, Gina Trappani.

Read the rest of this entry »

zsh + Ubuntu

In Linux, ZSH on 16 March, 2010 at 2:36 pm

Σε συνέχεια της καταχώρησης για το GNU/Screen, ήθελα να μοιραστώ και το αρχείο ρυθμίσεων του κέλυφους που χρησιμοποιώ. Προσωπικά βρίσκω το zsh πάρα πολύ βολικό. Φαντάζομαι όμως είναι θέμα συνήθειας. Τις περισσότερες ρυθμίσεις μπορείτε -σχετικά- εύκολα να τις διασκευάσετε στο κέλυφος της προτίμησής σας (bash, tcsh, ksh, etc.).

Μπορείτε να βρείτε το αρχείο εδώ ή με ένα copy/paste της παρακάτω εντολής στην γραμμή τού κέλυφους.

cd; mv ~/.zshrc ~/.zshrc.old; cd; wget http://github.com/cmdel/rc-configs/raw/master/.zshrc

Παραπομπές
——————-

http://delicious.com/cmdel/zsh

Εισαγωγή στο GNU/Screen

In Προγραμματισμος, Linux, Screen on 13 March, 2010 at 9:38 pm

Όταν πρωτοείδα το GNU/Screen ομολογώ πως δεν αντιλήφθηκα πλήρως το πόσο χρήσιμο θα μπορούσε να μου είναι. Μετά από λίγη μόνο χρήση εκτίμησα το πόσα περισσότερα μου επέτρεπε να κάνω.

Αυτό που είναι το Screen είναι ένα εικονικός διακομιστής τερματικών κέλυφων. Τί είναι πιό απλά; Έιναι μια εφαρμογή με την οποία μπορείτε να εκτελείτε πολλαπλά κέλυφη, είτε τοπικά είτε απομακρυσμένα. Το δεύτερο είναι που μου τράβηξε αρχικά την προσοχή. Είναι ιδανικό για απομακρυσμένη εργασία σε ένα διακομιστή. Στην περίπτωση δηλαδή που θέλετε να δουλέψετε στην διαχείρηση του προσωπικού σας διακομιστή ή/και στην ανάπτυξη της ιστοσελίδας σας, αυτό που μπορεί να κάνει το Screen είναι να δημιουργήσει για εσάς κάποια σταθερά κέλυφη εργασίας και να τα συντηρήσει ακόμα και αν η σύνδεσή σας διακοπεί.

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

Και επειδή όλα εξηγούνται καλύτερα με μία εικόνα, δείτε ένα παράδειγμα του πώς το χρησιμοποιώ τοπικά:

Read the rest of this entry »

Ubuntu + HP laptop + Sound = Nightmare

In Linux on 10 March, 2010 at 2:55 pm

Μόλις κατάφερα να φτιάξω τα προβλήματα ήχου που είχα με το HP DV6520ea laptop. Κατα πάσα πιθανότητα το παρόμοιο θα δουλέψει και με τις σειρές dv-5 dv-6 dv-7. Το βασικό πρόβλημα ήταν ότι δεν αναγνώριζε την κάρτα ήχου μετά από μια επανεγκατάσταση που έκανα στο Ubuntu (Μεγάλη ιστορία το γιατί).

Όταν τελείωσα την εγκατάσταση δεν είχα καθόλου ήχο. Το βασικό πρόβλημα είναι με την κάρτα ήχουν της Realtek. Ο μοναδικός τρόπος να λειτουργήσει είναι η εγκατάσταση των οδηγών από το site της Realtek.

Περισσότερες οδηγίες για την εγκατάστασή τους εδώ. (Αγγλικά)

Νέο mount από Linux RedHat σε Windows

In Σημειώσεις, Linux, Personal on 8 November, 2009 at 7:48 am

Διαδικασία για mount απομακρυσμένου διαμοιρασμένου δίσκου Windows (NAS share)

1) Προαπαιτούμενα:
==> Windows username and password για πρόσβαση στο διαμοιρασμένο δίσκο
==> Η διαδρομή του διαμοιρασμένου δίσκου (π.χ. //server/share) ή την IP address
==> root level access στο Linux

2) Κάντε είσοδο χρήστη στο Linux ώς root user (ή με την su command)

3) Δημιουργήστε το σημείο εξάρτησης του δίσκου των Windows τοπικά:

# mkdir -p /mnt/ntserver

4) Χρησιμοποιείστε την παρακάτω εντολή για την εξάρτηση του απομακρυσμένου διαμοιρασμένου δίσκου:

# mount -t cifs //ntserver/download -o username=vivek,password=myPassword /mnt/ntserver

Για παλιά έκδοση του kernel Linux (RHEL <=4 or Debian <= 3) χρησιμοποιείστε την εναλλακτική:

# mount -t smbfs -o username=vivek,password=D1W4x9sw //ntserver/download /mnt/ntserver

5) Πρόσβαση στο Windows 2003/2000/NT share με τις εντολές cd και ls :

# cd /mnt/ntserver; ls -l

Όπου,

  • -t smbfs : Ο τύπος του συστήματος αρχείων που θα εξαρτηθεί (ξεπερασμένο, καλύτερα cifs)
  • -t cifs : Ο τύπος του συστήματος αρχείων που θα εξαρτηθεί
  • -o : επιλογές για την εξάρτηση του δίσκου, η πρώτη είναι το username για να συνδεθούμε στο μοίρασμα των Windows και η δεύτερη είναι το password
  • //ntserver/download : Windows 2000/NT διαμοίρασμα
  • /mnt/ntserver τοπικό σημείο εξάρτησης (to access share after mounting)