9. 系统日志
Init启动了syslogd和klogd守护进程。他们向日志中写入信息。内核的信息由klogd处理。syslogd处理其他进程的信息。主要的日志是/ver/log/messages。如果你系统出了毛病,在这里经常能发现有价值的线索。
9.1 配置
文件/etc/syslog.conf告诉日志记录器什么信息该放在那里,消息由它的出处和它的优先级来区分。这个配置文件包含用于说明“从x来的消息优先级高于从y,z来的消息”的内容,其中z可能是个文件、端口、打印机、远程终端或是其他地方。
注意:Syslog需要已经存在的/etc/services文件。services文件分配端口。我不确定是syslog通过一个端口来 完成远程日志还是即使本地的日志也要通过端口完成,又或者他只是使用/etc/services把你在/etc/syslog.conf中的输入转换成端 口号。
9.2 练习
看看系统日志,找到你不理解的内容,并找出他们的含义。
把你所有的日志消息送到一个终端。(完成后把它设回正常状态)。
9.3 更多信息
澳大利亚 sysklogd 镜像
10. Getty 和 Login
Getty 就是一个程序,他让你能从各种设备上登陆,比如虚拟终端,文字终端或是一个modem。他显示一个登陆提示符,一旦你键入用户名,getty把它传送到login,login会向你要密码,认证成功后给你一个shell。
有很多getty,有的发行版,包括red hat使用很小的,只能在虚拟终端上用的mingetty。
login(登陆)程序是linux功能包的一部分,包含了一个名为agetty的getty。他工作得不错。这个软件包同时包括了mkswap,fdisk,passwd,kill,setterm,mount,swapon,rdev,renice,more等程序。
10.1 配制
在你屏幕上显示的登陆提示符来自/etc/issue。Gettys经常被/etc/inittab启动。Login检查在/etc/passwd中的用户信息,如果你使用了密码隐藏,就在/etc/shadow中。
10.2 练习
手动建立一个/etc/passwd,密码可以设置成无,在你登录上来以后用passwd命令更改。读这个文件的帮助页,用man 5 passwd 命令而不是passwd命令的帮助页。
11. Bash
如果你给登录程序一个有效的用户名和密码,他就会在/etc/passwd中检查你该用哪个shell?在大部分情况下linux系统中用的是bash。bash的工作就是读你的命令,并执行他们。他同时也是个用户界面,一门解释语言。
作为一个用户界面,他读取你的命令,如果是内部命令就会立即执行(比如cd)。如果是外部命令,他就会寻找他们并执行(比如cp,startx)。他同时也做一些常规操作,比如保存历史命令,补全文件名。
我们已经看到过bash作为翻译语言时的行为。init运行的脚本一般是shell脚本,并且是由bash运行的。用适当的编程语言,加上 系统中常用的各种功能的命令,他们的结合将会是十分强大的。如果你知道自己在干什么,打个比方(自鸣得意状),前几天,我需要运行好几个补丁程序来给一个 源代码目录打补丁。我可以用下面的命令:
for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;
他会找出目录下所有以sh-utils-1.16开头,以.patch结尾的程序,把他们排队,把变量f设为这个队列。循环运行do到done之间的命令。在这里有11个补丁文件。但是即使有3000个文件,原理还是一样的。
11.1 配置
文件/etc/profile控制了bash系统级别的行为。你在这里放的内容会作用到所有在你系统上使用bash的人。他可以把目录加入PATH或者设置你的EMAIL变量等等。
默认的键盘行为有很多值得增强的地方。他实际上是由readline控制的。Readline是一个分开的软件包控制命令行界面。提供历史 命令和文件名补完,和一些其他高级编辑功能。他被默认的编译进了bash。readling通过你自己目录下的.inputrc来配置。bash变量 INPUTRC可以用来重载这个选项。打个比方在Red Hat 6里面,INPUTRC在/etc/profile中被设成/etc/inputrc。这意味着每个人都能正常使用backspace,delete, home和end。
一旦bash读取了系统范围的配置文件,他就会寻找你个人的配置文件。他会检查你的home目录。寻找.bash_profile .bash_login .profile。运行它第一个找到的。如果你想在不影响其他人的情况下改变你的bash行为。就在这里更改。打个比方,许多应用程序使用环境变量来控制 自己的行为。我把EDITOR变量设为vi,这样我就可以在Midnight Commander(一个非常出色的基于文件管理的控制台)中使用vi,而不是使用mc自带的编辑器。
11.2 练习
bash的初级内容很容易学,但是不要就此为止:bash有惊人的深度,养成寻找最佳做法的习惯。
阅读shell脚本,找出你不明白的地方。
11.3 更多信息
- 有本叫“Bash Reference Manual”的书,很全面,不过很难。
- 有本 O'Rielly 关于Bash的书,我不太清楚内容如何。
- 我不知道最近有什么关于bash上手的教程,如果有,请告诉我。
- 源代码,看Building a Minimal Linux System from Source Code
本文介绍了Linux系统中的关键组件,包括系统日志管理、登录过程、Bash shell的配置及使用等。通过实践练习帮助读者更好地理解和掌握这些核心概念。

被折叠的 条评论
为什么被折叠?



