编辑你的 /etc/syslog.conf,并加入以下行
# Dump everything on tty8
*.* /dev/tty8
一个注意事项:记住要使用制表符! syslog 不喜欢空格……
dj@destin.nfds.net
对于从新手到另一个新手的人来说,这是一个简单的脚本,可以轻松查找和查看 howto 文档。我的 howto 文档在 /usr/doc/faq/howto/ 中,并且是 gzipped 压缩的。文件名是 XXX-HOWTO.gz,XXX 是主题。我在 /usr/local/sbin 目录中创建了以下名为“howto”的脚本
#!/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
这是一个简短的脚本,它会不时检查在 mount 中显示的任何内容(磁盘、cdrom、软盘...)上是否有足够的可用空间。
如果空间耗尽,则每 X 秒向屏幕打印一条消息,并为每个已满设备发送 1 封邮件消息。
#!/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
如果你像我一样,你有一个包含 430 个订阅者的列表,并且每天通过 UUCP 接收 100 多条消息。那么,黑客如何处理这些巨大的日志呢?安装 chklogs,就是这样。Chklogs 由 Emilio Grimaldo 编写,grimaldo@panama.iaehv.nl
,当前版本 1.8 可从 ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz 获取。安装非常简单(你当然会查看 doc 子目录中的信息)。安装完成后,添加一个类似这样的 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 -type f -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 -)
[ 从 cd /source/directory; tar....etc. 更改,以防止在发生灾难时损坏目录的可能性。感谢 Jim Dennis,jim@starshine.org,告知我这一点。 -维护者。]
mick@lowdown.com
有没有想过哪些目录在你的计算机上是最大的?以下是如何找出答案。
du -S | sort -n
荣誉归于 Linux Gazette 的创建者 John Fisk。这是一个很棒的电子杂志,而且是免费的!!!你还能要求什么呢?查看网址
http://www.linuxgazette.com
顺便说一句,事实证明 (1) LG 现在是每月出版一次,并且 (2) John Fisk 不再维护它,SSC 的伙计们在维护。
stern@amath.washington.edu
我不知道是否很多人有这个问题,但是 GNU make 版本 3.70 有一个我不喜欢的“功能”。如果给 VPATH 一个绝对路径名,它会表现得很奇怪。有一个非常可靠的补丁可以修复这个问题,你可以从 Paul D. Smith <psmith@wellfleet.com>
获得。他还会在新闻组“gnu.utils.bug”上发布 GNU make 每次修订后的文档和补丁。通常,我会应用这个补丁并在我访问的每个系统上重新编译 gmake。
dal@wimsey.com
问:如何阻止 e2fsck 在每次启动时检查我的磁盘。
答:当你重新构建内核时,文件系统被标记为“脏”,因此你的磁盘将在每次启动时进行检查。解决方法是运行
rdev -R /zImage 1
这修复了内核,使其不再认为文件系统是脏的。
注意:如果使用 lilo,那么在你的 lilo 配置文件(通常是 /etc/lilo.conf)的 linux 设置中添加 read-only
jon@gtex02.us.es
如果你经常在关机时遇到设备忙错误,导致文件系统在重启时需要 fsck,这里有一个简单的修复方法
对于除 / 之外的所有已挂载文件系统,在调用 umount -a 之前,将以下行添加到 /etc/rc.d/init.d/halt
或 /etc/rc.d/rc.0
中
mount -o remount,ro /mount.dir
这意味着,如果由于某种原因,关机未能杀死所有进程并卸载磁盘,它们在重启时仍然是干净的。为我节省了很多重启时间。
Simon Amor, simon@foobar.co.uk
ls -l | sort +4n
或者,对于那些真正空间不足的人来说,这需要一段时间,但效果很好
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
我称这个脚本为“forall”。像这样使用它
forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
这是 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 自动保存 (#) 和备份 (~) 文件、.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
-或-
ps -aux | sort +5n
Tips-HOWTO 维护者
我在业余时间做了很多 C 编程,我花时间配置 vi 以使其对 C 友好。这是我的 .exrc
set autoindent
set shiftwidth=4
set backspace=2
set ruler
这是做什么的?autoindent 使 vi 自动缩进第一行缩进后的每一行,shiftwidth 将 ^T 的距离设置为 4 个空格,backspace 设置退格模式,而 ruler 使其显示行号。记住,要转到特定的行号,比如 20,使用
vi +20 myfile.c
大多数黑客的计算机上都已经安装了 ctags,但没有使用它。它对于编辑特定函数非常方便。假设你有一个函数 foo(),在一个程序目录中的许多源文件之一中,你想编辑这个函数进行更新。你也不知道它在源文件中的哪个位置。这就是 ctags 的用武之地。运行时,ctags 会在当前目录中生成一个名为 tags 的文件,其中列出了所有函数、它们所在的文件以及它们在这些文件中的位置。tags 文件看起来像这样
ActiveIconManager iconmgr.c /^void ActiveIconManager(active)$/
AddDefaultBindings add_window.c /^AddDefaultBindings ()$/
AddEndResize resize.c /^AddEndResize(tmp_win)$/
AddFuncButton menus.c /^Bool AddFuncButton (num, cont, mods, func, menu, item)$/
AddFuncKey menus.c /^Bool AddFuncKey (name, cont, mods, func, menu, win_name, action)$/
AddIconManager iconmgr.c /^WList *AddIconManager(tmp_win)$/
AddIconRegion icons.c /^AddIconRegion(geom, grav1, grav2, stepx, stepy)$/
AddStartResize resize.c /^AddStartResize(tmp_win, x, y, w, h)$/
AddToClientsList workmgr.c /^void AddToClientsList (workspace, client)$/
AddToList list.c /^AddToList(list_head, name, ptr)$/
要在 vim 中编辑 AddEndResize(),运行
vim -t AddEndResize
这将在编辑器中打开相应的文件,并将光标定位在函数的开头。
paul@geeky1.ebtech.net
这是一个相当常见的问题,几乎到了成为 FAQ 的地步。我不知道 RedHat 是否在其发行版中修复了这个错误,但你可以自己修复它。如果你查看你的 /etc/hosts 文件,你会发现它看起来像这样
127.0.0.1 localhost yourbox
当 sendmail 启动时,它会对你的主机名(在本例中为 yourbox)进行查找。然后它发现 yourbox 的 IP 是 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=auto'
并将 'alias.....' 放入你的 /etc/bashrc
vps@unicorn.niimm.spb.su
如果你正在编译并且错过了需要链接的库怎么办?gcc 报告的所有内容都是函数名... 这是一个简单的命令,可以找到你要查找的内容
for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
其中 tgetnum 是你要查找的函数的名称。
你可能将程序编译成了一个名为 test 的二进制文件,不是吗?Linux 有一个名为 test 的程序,它测试某个条件是否为真,它永远不会在屏幕上产生任何输出。不要只输入 test,尝试:./test