快速业务通道

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

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-25

  每当我们装好一个新的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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号