Ανοίξτε το αρχείο /etc/syslog.conf, και προσθέστε την παρακάτω γραμμή:
# Dump everything on tty8
*.* /dev/tty8
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΜΗΝ ΞΕΧΑΣΕΤΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ TABS! στο syslog δεν αρέσουν τα κενά...
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
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
Αν είστε σαν κι εμένα, έχετε μια λίστα με 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
Μια και το χρησιμοποιήσατε, μην ξεχάσετε να αναφέρετε στον συγγραφέα πόσο ωραίο προγραμματάκι είναι αυτό :)
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 να το τρέχει περιοδικά.
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, που μου το είπε. -Συντ. ]
mghazey@miso.lowdown.com
Έχετε αναρωτηθεί ποτέ ποιοι είναι οι μεγαλύτεροι κατάλογοι στον υπολογιστή σας; Ορίστε πώς θα το μάθετε.
du -S | sort -n
Δόξα και τιμές στον John Fisk, το δημιουργό του Linux Gazette. Είναι ένα εξαιρετικό ηλεκτρονικό περιοδικό και επιπλέον, είναι ΔΩΡΕΑΝ!!! Τι περισσότερο μπορείτε να ζητήσετε; Δείτε μόνοι σας:
http://www.ssc.com/lg
Επί την ευκαιρία, φαίνεται ότι (1) το LG βγαίνει σε μηνιαία έκδοση, και
(2) δεν το συντηρεί πια ο John Fisk , αλλά οι συνεργάτες της SSC.
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 σε κάθε σύστημα που έχω πρόσβαση.
dal@wimsey.com
Q: Πώς σταματώ το e2fsck να ελέγχει το δίσκο μου κάθε φορά που κάνω boot.
A: Όταν ξαναχτίσετε τον πυρήνα, το σύστημα αρχείων μαρκάρεται σαν 'βρώμικο' και έτσι ο δίσκος σας θα ελέγχεται σε κάθε εκκίνηση. Για να το φτιάξετε αυτό τρέξτε το:
rdev -R /zImage 1
Αυτό διορθώνει τον πυρήνα από το να πιστεύει ότι το σύστημα αρχείων είναι βρώμικο.
Σημείωση: Αν χρησιμοποιείτε lilo, τότε προσθέστε το read-only
στην εγκατάσταση του
στο αρχείο ρύθμισης του lilo (συνήθως στο /etc/lilo.conf)
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 αποτύχει να σκοτώσει όλες τις διεργασίες και αποπροσαρτήσει τους
δίσκους θα είναι ακόμη καθαροί στην επανεκκίνηση. Έτσι εξοικονομώ πολύ χρόνο στην επανεκκίνηση.
Simon Amor, simon@foobar.co.uk
ls -l | sort +4n
Η, γι' αυτούς που είναι πραγματικά scrunched για χώρο, μπορεί να αργεί λίγο αλλά δουλεύει μια χαρά:
cd /
ls -lR | sort +4n
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
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 "$@"
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 {} \;
simon@foobar.co.uk
ps -aux | sort +4n
-H-
ps -aux | sort +5n
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
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
paul@geeky1.ebtech.net
Η διανομή RedHat έρχεται με color-ls, παρόλαυτά δεν ξέρω γιατί δεν τη ρυθμίζουν για χρήση με χρώματα. Να πώς θα το διορθώσετε.
Πρώτα, γράψτε eval `DIRCOLORS`
Μετά, alias ls='ls --color=yes'
Και προσθέστε το 'alias.....' στο αρχείο /etc/bashrc
vps@unicorn.niimm.spb.su
Τι κάνετε αν κάνετε compile και δε κάνατε link μια βιβλιοθήκη που χρειάζεται; Όλα τα gcc reports είναι ονόματα συναρτήσεων... Να μια εντολή δείγμα που θα βρει αυτό που ψάχνετε:
for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
όπου tgetnum είναι το όνομα της συνάρτησης που ψάχνετε.