三、必须运行的进程
那么,系统清理工作应该从哪里开始呢?这些系统上运行着的程序都有些什么用处?在过去的几年中,我曾经使用过各种各样的Unix类系统,看到了这些系统上运行着数量庞大但各不相同的进程。我得承认,我不清楚所有这些进程都是些什么或者为什么需要它们。因此,对你来说,你应该先决定自己需要些什么,这样会使问题更简单一点。列出一个系统运行的进程清单,然后开始检查自己是否需要它们,这一工作可能需要耗费不少时间。
毫无疑问,你肯定需要apache进程或httpd进程。此外,init进程也是不可缺少的——这个进程也被称为“一切进程之父”。init通常启动系统的多用户服务。另外,init还要启动getty供用户登录。不同的内核会启动各种不同的系统进程或者线程,它们在ps列出的结果中通常以加圆括号或者方括号的形式显示。但本文不讨论这些特殊的进程,也不准备讨论如何关闭它们。
接下来两个重要的进程是cron和syslogd。cron用于按照计划执行任务。通过crontab(或者/etc/crontab)配置cron,我们能够启动各种重要的系统任务,例如:每晚进行安全检查,生成Web网站分析报表,轮换旧的日志文件,以及进行备份。对于执行特定程序完成某个任务来说, cron可以避免让程序一直在内存中运行,它是很有用的。
syslogd是一个daemon,它监听着日志信息,通常还要把这些信息写入特定的文件(在/var/log/下)。一般地,Apache按照配置自己记录日志信息,但syslogd对于记录其他系统信息来说非常重要,比如登录企图、email活动以及其他许多信息。syslogd daemon在不同的系统上会有不同的名字,例如nsyslogd或者syslogd-ng。另外,系统还要运行klogd,这是一个为记录系统内核信息提供的daemon。
另外,你还要有一种让用户登录系统的方法。虽然getty已经运行,但它很可能配置成了仅供本地终端访问。因此,这里建议你运行sshd(作为一个独立的daemon运行,或由另外的程序调用)。sshd对于文件传输也很有用。
其余的程序通常没有持续运行的必要。这些经常被默认安装且持续运行的程序有很多,其中包括:inetd,atd,gpm(或者moused),apmd,lpd,sendmail以及portmap。