Next Previous Contents

2. Σύντομες Υποδείξεις

2.1 Πρόχειρο Syslog Τρυκ Paul Anderson, Συντηρητής του Tips-HOWTO

Ανοίξτε το αρχείο /etc/syslog.conf, και προσθέστε την παρακάτω γραμμή:

# Dump everything on tty8
*.*                                     /dev/tty8
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΜΗΝ ΞΕΧΑΣΕΤΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ TABS! στο syslog δεν αρέσουν τα κενά...

2.2 Script για να βλέπετε τα συμπιεσμένα HOWTOs. Didier Juges, dj@destin.nfds.net

Απ' τον ένα αρχάριο στον άλλο, προέκυψε αυτό το μικρό script που διευκολύνει το ψάξιμο και το διάβασμα κειμένων howto. Τα howto αρχεία μου βρίσκονται στο /usr/doc/faq/howto/ και είναι συμπιεσμένα. Τα ονόματα των αρχείων είναι XXX-HOWTO.gz, όπου XXX είναι το θέμα του howto. Δημιούργησα το script με όνομα "howto" στον κατάλογο the /usr/local/sbin :


#!/bin/sh
if [ "$1" = "" ]; then
    ls /usr/doc/faq/howto | less
else
    gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi

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

Για παράδειγμα, για να δείτε το κείμενο Serial-HOWTO.gz , γράψτε:

$ howto Serial

2.3 Υπάρχει αρκετός ελεύθερος χώρος;;; Hans Zoebelein, zocki@goldfish.cube.net

Ακολουθεί ένα μικρό script το οποίο ελέγχει περιοδικά αν υπάρχει αρκετός ελεύθερος χώρος διαθέσιμος σε οτιδήποτε εμφανίζεται στο mount (δίσκοι, cdrom, δισκέτα...)

Αν ο χώρος εξαντλείται, τυπώνεται ένα μήνυμα κάθε X δευτερόλεπτα στην οθόνη και στέλνεται 1 μήνυμα με mail για κάθε γεμάτη συσκευή.


#!/bin/sh

#
# $Id: check_hdspace,v 1.18 1996/12/11 22:33:29 root Exp root $
#

#
# Since I got mysterious error messages during compile when
# tmp files filled up my disks, I wrote this to get a warning
# before disks are full.
#
# If this stuff saved your servers from exploding,
# send praising email to zocki@goldfish.cube.net.
# If your site burns down because of this, sorry but I
# warned you: no comps.
# If you really know how to handle sed, please forgive me :)
#

#
# Shoot and forget: Put 'check_hdspace &' in rc.local.
# Checks for free space on devices every $SLEEPTIME sec.
# You even might check your floppies or tape drives. :)
# If free space is below $MINFREE (kb), it will echo a warning
# and send one mail for each triggering device to $MAIL_TO_ME.
# If there is more free space than trigger limit again,
# mail action is also armed again.
#

# TODO: Different $MINFREE for each device.
# Free /*tmp dirs securely from old junk stuff if no more free space.


DEVICES='/dev/sda2 /dev/sda8 /dev/sda9'         # device; your put disks here
MINFREE=20480                                   # kb; below this do warning
SLEEPTIME=10                                    # sec; sleep between checks
MAIL_TO_ME='root@localhost'                     # fool; to whom mail warning


# ------- no changes needed below this line (hopefully :) -------

MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024         # yep, we are strict :)

while [ 1 ]; do
        DF="`/bin/df`"
                for DEVICE in $DEVICES ; do
                ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##`
                
                if [ $ISFREE -le $MINFREE ] ; then
                        let ISMB=$ISFREE/1024
                        echo  "WARNING: $DEVICE only $ISMB mb free." >&2
                        #echo "more stuff here" >&2
                        echo -e "\a\a\a\a"
                        
                        if [ -z  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                echo "WARNING: $DEVICE only $ISMB mb free.      (Trigger is set to $MINMB mb)" \
                                | mail -s "WARNING: $DEVICE only $ISMB mb free!" $MAIL_TO_ME
                                MAILEDH="$MAILED $DEVICE"
                                MAILED=$MAILEDH
                                # put further action here like cleaning
                                # up */tmp dirs...
                        fi
                        elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                # Remove mailed marker if enough disk space
                                # again. So we are ready for new mailing action.
                                MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
                                MAILED=$MAILEDH
                        fi
                        
                done
                sleep $SLEEPTIME

done

2.4 Βοηθητική εφαρμογή για να καθαρίζετε τα log αρχεία σας. Paul Anderson, Συντηρητής του Tips-HOWTO >

Αν είστε σαν κι εμένα, έχετε μια λίστα με 250 εγγεγραμμένους, και 100+ μηνύματα να έρχονται καθημερινά μέσω UUCP. Λοιπόν, τι μπορεί να κάνει ένας χάκερ με αυτά τα τεράστια logs; Να στήσει το chklogs. Το Chklogs γράφτηκε από τον Emilio Grimaldo, grimaldo@panama.iaehv.nl, και η τρέχουσα έκδοση 1.8 είναι διαθέσιμη στο ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz. Η διαδικασία εγκατάστασης είναι απλή (θα διαβάσετε, φυσικά, τις πληροφορίες στον υποκατάλογο sub). Όταν το εγκαταστήσετε, προσθέστε μια εγγραφή crontab σαν την παρακάτω:

# Run chklogs at 9:00PM daily.
00 21 * * *       /usr/local/sbin/chklogs -m
Μια και το χρησιμοποιήσατε, μην ξεχάσετε να αναφέρετε στον συγγραφέα πόσο ωραίο προγραμματάκι είναι αυτό :)

2.5 Πρόχειρο Script για να καθαρίζετε τα Core αρχεία. Otto Hammersmith, ohammers@cu-online.com

Δημιουργήστε ένα αρχείο με όνομα rmcores (ο συγγραφέας το αποκαλεί handle-cores) που να περιέχει τον παρακάτω κώδικα:


#!/bin/sh
USAGE="$0 <directory> <message-file>"

if [ $# != 2 ] ; then
        echo $USAGE
        exit
fi

 echo Deleting...
find $1 -name core -atime 7 -print -exec rm {} \;

echo e-mailing
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
        echo $name
        cat $2 | mail $name
done

Δημιουργήστε μια εργασία cron να το τρέχει περιοδικά.

2.6 Μεταφέροντας καταλόγους μεταξύ σύστημα αρχείωνs. Alan Cox, A.Cox@swansea.ac.uk

Γρήγορος τρόπος να μεταφέρετε ένα ολόκληρο δένδρο αρχείων από ένα δίσκο σε έναν άλλο

(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)
[ AΑλλάξτε από το /source/directory. Κάντε tar....κλπ. ώστε να αποφύγετε την πιθανότητα να αχρηστεύσετε το directory σε περίπτωση καταστροφής. Ευχαριστώ τον Jim Dennis, jadestar@rahul.net, που μου το είπε. -Συντ. ]

2.7 Βρείτε τους μεγαλύτερους καταλόγους που έχετε. Mick Ghazey, mghazey@miso.lowdown.com

Έχετε αναρωτηθεί ποτέ ποιοι είναι οι μεγαλύτεροι κατάλογοι στον υπολογιστή σας; Ορίστε πώς θα το μάθετε.

du -S | sort -n

2.8 Το Linux Gazette

Δόξα και τιμές στον John Fisk, το δημιουργό του Linux Gazette. Είναι ένα εξαιρετικό ηλεκτρονικό περιοδικό και επιπλέον, είναι ΔΩΡΕΑΝ!!! Τι περισσότερο μπορείτε να ζητήσετε; Δείτε μόνοι σας:

http://www.ssc.com/lg
Επί την ευκαιρία, φαίνεται ότι (1) το LG βγαίνει σε μηνιαία έκδοση, και (2) δεν το συντηρεί πια ο John Fisk , αλλά οι συνεργάτες της SSC.

2.9 Δείκτης στο patch για το GNU Make 3.70 για να αλλάξετε τη συμπεριφορά του VPATH. Ted Stern, stern@amath.washington.edu

Δεν ξέρω αν έχουν πολλοί άνθρωποι αυτό το πρόβλημα, αλλά υπάρχει ένα "χαρακτηριστικό" του GNU make έκδοση 3.70 το οποίο δε μου αρέσει. Είναι ότι το VPATH συμπεριφέρεται περίεργα αν δώσετε το απόλυτο όνομα αρχείου. Υπάρχει ένα εξαιρετικά πλήρες patch που διορθώνει το πρόβλημα, το οποίο μπορείτε να βρείτε από τον Paul D. Smith <psmith@wellfleet.com>. Αυτός στέλνει την τεκμηρίωση και το patch μετά από κάθε επανέκδοση του GNU make στο newsgroup gnu.utils.bug. Γενικά, εφαρμόζω αυτό το patch και κάνω ξανά compile το gmake σε κάθε σύστημα που έχω πρόσβαση.

2.10 Πώς σταματώ το σύστημα μου να κάνει fsck σε κάθε επανεκκίνηση; Dale Lutz, dal@wimsey.com

Q: Πώς σταματώ το e2fsck να ελέγχει το δίσκο μου κάθε φορά που κάνω boot.

A: Όταν ξαναχτίσετε τον πυρήνα, το σύστημα αρχείων μαρκάρεται σαν 'βρώμικο' και έτσι ο δίσκος σας θα ελέγχεται σε κάθε εκκίνηση. Για να το φτιάξετε αυτό τρέξτε το:

rdev -R /zImage 1

Αυτό διορθώνει τον πυρήνα από το να πιστεύει ότι το σύστημα αρχείων είναι βρώμικο.

Σημείωση: Αν χρησιμοποιείτε lilo, τότε προσθέστε το read-only στην εγκατάσταση του στο αρχείο ρύθμισης του lilo (συνήθως στο /etc/lilo.conf)

2.11 Πώς να αποφύγετε τα fscks που προκαλούνται από "device busy" την ώρα της επανεκκίνησης. Jon Tombs, jon@gtex02.us.es

Αν βλέπετε συχνά λάθη device busy κατά το shutdown που κάνουν το σύστημα αρχείων να χρειάζεται fsck κατά την επανεκκίνηση, ορίστε μια μικρή διόρθωση :

Προσθέστε την παρακάτω γραμμή στο /etc/rc.d/init.d/halt ή /etc/rc.d/rc.0

mount -o remount,ro /mount.dir
για όλα τα προσαρτημένα (mounted) συστήματα αρχείων εκτός του /, πριν την κλήση umount -a. Αυτό σημαίνει ότι αν, για κάποιο λόγο, το shutdown αποτύχει να σκοτώσει όλες τις διεργασίες και αποπροσαρτήσει τους δίσκους θα είναι ακόμη καθαροί στην επανεκκίνηση. Έτσι εξοικονομώ πολύ χρόνο στην επανεκκίνηση.

2.12 Πώς να βρείτε τα μεγαλύτερα αρχεία στο δίσκο σας.

Simon Amor, simon@foobar.co.uk

ls -l | sort +4n

Η, γι' αυτούς που είναι πραγματικά scrunched για χώρο, μπορεί να αργεί λίγο αλλά δουλεύει μια χαρά:

cd /
ls -lR | sort +4n

2.13 Πώς να τυπώσετε σελίδες και να αφήσετε περιθώριο για το διακορευτή. Mike Dickey, mdickey@thorplus.lib.purdue.edu


        #!/bin/sh
        # /usr/local/bin/print
        # a simple formatted printout, to enable someone to
        # 3-hole punch the output and put it in a binder

        cat $1 | pr -t -o 5 -w 85 | lpr

2.14 Ενας τρόπος για να ψάχνετε μέσα σε δένδρα αρχείων για μια συγκεκριμένη κανονική έκφραση. Raul Deluth Miller, rockwell@nova.umd.edu

Ονομάζω αυτό το script 'forall'. Χρησιμοποιήστε το ως εξής :

forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
Να το script forall:

#!/bin/sh
if [ 1 = `expr 2 \> $#` ]
then
        echo Usage: $0 dir cmd [optargs]
        exit 1
fi
dir=$1
shift
find $dir -type f -print | xargs "$@"

2.15 Ένα script για να καθαρίζει τα αρχεία autosave και backup που δημιουργούν διάφορα προγράμματα. Barry Tolnas, tolnas@nestor.engr.utk.edu

Ένα απλό πρόγραμμα δύο-γραμμών που κατεβαίνει αναδρομικά την ιεραρχία ενός καταλόγου αφαιρώντας τα αρχεία emacs auto-save (#) και backup (~), τα αρχεία .o , και τα TeX .log. Επίσης συμπιέζει τα αρχεία .tex και τα README. Το έχω ονομάσει 'squeeze' στο σύστημά μου.


#!/bin/sh
#SQUEEZE removes unnecessary files and compresses .tex and README files
#By Barry tolnas, tolnas@sun1.engr.utk.edu
#
echo squeezing $PWD
find  $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec
rm -f {} \;
find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;

2.16 Πώς να βρείτε ποια διεργασία απαιτεί την περισσότερη μνήμη. Simon Amor, simon@foobar.co.uk

ps -aux | sort +4n
-H-
ps -aux | sort +5n

2.17 Εξοπλίστε το vi για προγραμματισμό σε C , Paul Anderson,Tips-HOWTO Συντηρητής

Έχω προγραμματίσει πολύ σε C στον ελεύθερό μου χρόνο, και έδωσα χρόνο για να εξοπλίσω το vi ώστε να είναι φιλικό με τη C. Ορίστε το αρχείο μου .exrc:


set autoindent
set shiftwidth=4
set backspace=2
set ruler

Τι κάνει αυτό; Το autoindent αναγκάζει το vi να κάνει indent αυτόματα κάθε γραμμή που ακολουθεί την πρώτη που έγινε indent, το shiftwidth θέτει την απόσταση του ^T (tab) σε 4 κενά, το backspace θέτει το backspace mode, και το ruler δείχνει τον αριθμό γραμμής. Να θυμάστε, ότι για να πάτε σε ένα συγκεκριμένο αριθμό γραμμής, ας πούμε την 20, χρησιμοποιήστε το:


vi +20 myfile.c

2.18 Γιατί το sendmail κολλάει επί 5 λεπτά κατά την εκκίνηση στο RedHat; Paul Anderson, paul@geeky1.ebtech.net

Αυτό είναι ένα σχεδόν κοινό πρόβλημα, σε σημείο να γίνει FAQ. Δεν ξέρω αν το RedHat διόρθωσε αυτό το bug στη διανομή τους, αλλά μπορείτε να το διορθώσετε και μόνοι σας. Αν κοιτάξετε στο αρχείο /etc/hosts , θα δείτε ότι μοιάζει κάπως σαν :

127.0.0.1               localhost       yourbox

Όταν ξεκινά το sendmail, ψάχνει στο hostname που έχετε (σε αυτή την περίπτωση, το yourbox). Εκεί βρίσκει ότι το IP του yourbox είναι 127.0.0.1, αυτό δεν αρέσει στο sendmail, και ψάχνει πάλι. Συνεχίζει με αυτό για λίγο μέχρις ότου να εγκαταλείψει και να σταματήσει. Το να διορθώσετε αυτό το πρόβλημα είναι πολύ απλό, ανοίξτε το αρχείο /etc/hosts και αλλάξτε το σε κάτι σαν το:

127.0.0.1               localhost
10.56.142.1             yourbox

2.19 Πώς ρυθμίζω το RedHat για να χρησιμοποιεί την color-ls; Paul Anderson, paul@geeky1.ebtech.net

Η διανομή RedHat έρχεται με color-ls, παρόλαυτά δεν ξέρω γιατί δεν τη ρυθμίζουν για χρήση με χρώματα. Να πώς θα το διορθώσετε.

Πρώτα, γράψτε eval `DIRCOLORS`

Μετά, alias ls='ls --color=yes'

Και προσθέστε το 'alias.....' στο αρχείο /etc/bashrc

2.20 Πώς βρίσκω ποια βιβλιοθήκη στο /usr/lib έχει μια συγκεκριμένη συνάρτηση; Pawel Veselow, vps@unicorn.niimm.spb.su

Τι κάνετε αν κάνετε compile και δε κάνατε link μια βιβλιοθήκη που χρειάζεται; Όλα τα gcc reports είναι ονόματα συναρτήσεων... Να μια εντολή δείγμα που θα βρει αυτό που ψάχνετε:

for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done

όπου tgetnum είναι το όνομα της συνάρτησης που ψάχνετε.


Next Previous Contents