Home

节约内存空间 优化Linux后台服务程序

透明的清水Posted 12/15/2011, 11:35:56 AM202065 views
每当我们装好一个新的Linux系统,安装向导总会帮我们默认启动一批后台服务程序。这些程序在后台默默地完成各式各样的任务。比如电源管理,计划任务,系统审核等等。   可是我们的电脑硬件千差万别,安装Linux的目的也千差万别。这些后台程序往往并不适合我们的要求。其实大多数都是多余的。我们无论做为一个专业的系统管理员也好,还热爱自己机机的用户也好,总是无法容忍那一大堆无用的进程在跑着:占用内存,占用CPU时间,看着眼花头晕。   本文以CentOS和Fedora为例,详解如何优化这些服务。   1. 后台进程是如何启动的?   简单说说:Linux有多种启动级别。可通过查看/etc/inittab中的这一行   id:3:initdefault:   来得知自己的Linux的启动级别。   级别3不启动X window及其相关的服务。适合做为服务器。   级别3的后台服务启动程序都放在/etc/rc3.d/下。S开头的脚本表示开机时启动,K开头表示关机时停止。   常用的级别还有5。以此类推。   实际上,这些脚本只是一些链接,链到/etc/init.d/下的相应脚本。   2. 每个服务都是干什么的?   可以查看这些脚本的头几行,一般都有一个简短的说明。比如S26acpid   # Description: Listen and dispatch ACPI events from the kernel   侦听和分发内核中的ACPI事件。   下面说说如何优化这些进程:   1. ntp   我选ntp做为第一个例子。因为ntp是个挺重要的服务,但又不必作为进程在后台一直运行。   ntp是Linux下的时间服务程序。类似Windows下的时间设置中的一项:与Internet时间同步。有了ntp,我们再也不必经常去校正电脑中的时间,只要电脑连上Internet,ntp自动为我们校正时间。   相对于Windows, Linux下的ntp还有更多的功能,它可以把当前电脑也做为一个时间服务器,向其他电脑提供时间服务。不过这对于个人用户来说没啥用处。   那么我们的想法是:不要启动这个服务,但是每周校正一次时间就可以了。   做法很简单:   在/etc/cron.weekly/下增加一个脚本ntpdate, 脚本内容为   #!/bin/sh   #adjust clock weekly.   #exec /usr/sbin/ntpdate pool.ntp.org   exec /usr/sbin/ntpd -q   exit 0   脚本说明:这个脚本列出两个ntp命令,都可以用来校正时间。任意用其中的一个就可以了。根据ntp的文档说明,ntpdate的方式会在将来弃用,转为ntpd -q的方式。我试了一下,在较老的Linux下,如Mandriva 2006, ntpd -q的方式不行。   然后把脚本变成可执行的   # chmod u+x ntpdate   重启crond   # /etc/init.d/crond restart   停止和删除ntp服务   # /etc/init.d/ntpd stop   再看一下/etc/rc3.d或/etc/rc5.d下面有没有S开头的ntpd脚本。有的话就删掉。这个做法看似比较暴力。“温柔”一点的做法是运行setup或system-config-services,在图形界面里做。   最后注意一点,ntp用到udp端口123作为其通讯端口。防火墙放开这个端口后,ntp才能工作。   2. 其它cronjob的优化   默认启动的cronjob根据启动的时间,分别放在   cron.hourly   cron.daily   cron.weekly   cron.monthly   其中有些cronjob用不着做得太频繁。虽然这些任务都是在凌晨4点左右运行的,但是也浪费呀,浪费硬盘,浪费电力...   下面一一列出:   makewhatis.cron 这个任务是生成或更新whatis数据库。在操作系统没有经常安装卸载软件的情况下,用不着每天都做一次。   mlocate.cron 这个任务是生成或更新locate数据库。道理同上。   rpm 这个任务是列出系统安装的rpm包,写到一个文件里。道理同上。   prelink 这个任务是把操作系统里的应用程序和动态库“预链接”,加快启动这些应用的速度。用不着每天都做,一周一次就可以了。   可以再建一个cron.manual目录,把不想定时运行的任务移到这个目录下。想起来运行的时候,手工运行一下即可。   下面是本人机器上的例子:   [root@home etc]# ls cron*   cron.deny crontab   cron.d:   cron.daily:   00webalizer 0anacron 0logwatch certwatch cups logrotate   cron.hourly:   mcelog.cron   cron.manual:   makewhatis.cron mlocate.cron rpm   cron.monthly:   0anacron   cron.weekly:   0anacron 99-raid-check ntpdate prelink
Participants

7 replies

xxwbboss· 12/15/2011, 4:10:24 PM
楼主我肯定你已经在用linux类的系统了。
透明的清水· 12/15/2011, 7:39:45 PM
[quote][size=2][color=#999999]xxwbboss 发表于 2011-12-15 16:10[/color] [url=forum.php?mod=redirect&goto=findpost&pid=33315&ptid=5133][img]static/image/common/back.gif[/img][/url][/size] 楼主我肯定你已经在用linux类的系统了。[/quote] 呵呵 有些系统我在有时间的情况下 通常都会去体验下的
xiaoyun_xxy· 12/15/2011, 8:49:46 PM
我也是
wuliang· 1/11/2012, 10:11:18 AM
感谢楼主的教导,只是我想知道linux对大多数硬件是不是都有相应的驱动
vmmgb· 1/29/2012, 2:30:45 PM
不错啊! 一个字牛啊! [img]static/image/common/sigline.gif[/img] [size=2][url=http://www.fanli01.com/]返利网[/url] www.fanli01.com [url=http://www.taoxigua.com/]蘑菇街[/url] [url=http://www.37dan.com/]37弹影视[/url][/size]
阿当/yb/xin· 3/10/2012, 3:36:40 AM
{:12:}{:12:}
linchuanjia· 4/9/2012, 4:57:47 PM
{:22:}{:11:}
内容加载中