在我拿到 Linux 并在我的笔记电脑上安装、执行后, 我发觉它会每几秒就 会存取一次硬盘,就算并没有任何的使用者签入系统内! 这就是硬盘可能就 从没有进入它的能源省电模式。能够减少硬盘的动作的话就可以很明显地增 加电池的使用时间,以下是我所搜集的配方。
我使用 RedHat 4.1 测试了所有的方法,有些建构设定的地方可能会与你所 使用的 Linux 供应版本不同。(如果真如此,请您让我知道。)
请检查你的 /etc/crontab
文档看看是否它会在每分钟动作一次
。你会看到 atrun
常会出现在里面。
使用 at
命令可以让你将未来要做的命令放在命令停待区内, 时间到
了就会执行它们。 有些 Linux 系统使用自订的 atd
精?来做这个工
作, 其他的 (例如 RedHat) 让 crond
精灵每分钟执行 atrun
一次。
大部份的系统上是否需如此做的, 因为 at
命令很少会依赖一定的时
间内被执行, 因此如果你在你的 /etc/crontab
文档内发现下面
这行:
# Run any at jobs every minute
* * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun
你就可以安全地把它改成:
# Run any at jobs every hour
00 * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun
细节请阅读 man 5 crontab
。 有些人就算在没有执行 crond
精
灵下还是可以动作,因此如果你知道你在做什么,你可以考虑完全地把它给
关闭掉。
Linux 在任何时候都在处理著很多的已开启文档的缓冲区,来做系统很确认 文档有任何改变时能够愈快存档愈好,不然等到系统当机时已做的改变就会 不见了。
update
/ bdflush
精灵就是用来照顾这件时的。(这是同一个程
式的两个名字, 因此你可以使用两个其中的一个名字来启动这个精灵。 )
原来的设定会让这个精灵每 5 秒钟呼叫 flush
以及每 30 秒钟呼叫
sync
一次。
在我的 Fujitsu 富士通磁盘上会造成不停的存取。(好像这个硬盘就算跟本 什么也没改变的状况下会将它的内存快取给清除掉。但这要看你的硬盘的 轫体: 有些朋友告诉我说就算没有做像下面那样的修改他们的硬盘还是可以 进入本身的省电模式下。)
因为 Linux 并像以前那样常当机了, 我就将两个数值都改成为 3600 秒 (=1 小时 )。这样一点也不会造成任何问题,而且原本常会有的磁盘存取动 作就停止了。 (但是如果我的系统现在当机了,当然一定会有许多破损的档 案了。)
RedHat 4.1: 在 /etc/inittab
内,将 update 呼叫改成:
ud::once:/sbin/update -s 3600 -f 3600
Suse 4.4.1: update
is called in /sbin/init.d/boot
.
Slackware: update
is called in /etc/rc.d/rc.S
.
See man update
for details.
syslogd
精灵负责很多在 /var/log/
目录内可找到的
Linux 系统日志文档。原定 syslogd
会在每次有系统信息被记录时同
步存到日志文档内。
你可以在 /etc/syslog.conf
内使用斜号 / 接在文档名称前将这
个功能关闭。以下是我在我的系统内找到的 syslog.conf
例子:
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none -/var/log/messages
同样的,如果当系统当机时,问题信息是不会被存到磁盘内的。Dilemma...
在开机时, 初始时的处理程序以及精灵们是经由 init
命令来开始执
行的。这个命令 (又是它 ) 在每次它所建立的处理程序前会呼叫 sync
。
你可以在源程序中将这个 sync()
呼叫给移走,然后再重新编译
它。
要避免发生文档缓冲遗失的问题,你应该在你的系统的
/etc/rc.d/init.d/halt
命令手稿内在卸下文档系统前加上对
sync
的呼叫。
Linux swap 磁区是用来以虚拟内存的方式来增加实体内存的空间。 这
也是硬盘会存取的可能原因。如果你的笔记电脑已经有许多动态内存 RAM
了或是你使用很简单的应用程序 (想到 vi
), 您可以考虑把它给关闭
。
这当然要看你打算做什么。4 到 8 MB 并不足够,这时你该使用 swap 磁区 。有 8 到 16 MB 时,文字画面式的应用程序可以很好地工作,如果你能避 免使用太多的多工功能, 你可以安全地把 swap 功能给关掉。 X-Windows 环境需要很多的动态内存,你最好不要在没有 swap 下使用它,除非你有 16MB 以上。
(附注: 我那台有 16 MB 的笔记电脑在关闭 swap 磁区下可以执行一个
emacs
工作、 4 个 bash
shells 还有编译一个核心都没有发生
内存不够的情况。这对我来说就够了。)
如果你已经安装 swap 磁区了,你可以在 /etc/rc.d/rc.sysinit
内的 swapon
命令前加个 hash 符号即可把它给关闭。 如果你不想把
它永远地移除,那就让系统在开机时问你是否要使用 swap 磁区。在
/etc/rc.d/rc.sysinit
(RedHat 4.1) 或
/sbin/init.d/boot
(Suse 4.4.1)里头:
echo "Should the system use swap?"
echo " 0: No."
echo " 1: Yes."
/bin/echo "Your choice: \c"
read SWAPCHOICE
case "$SWAPCHOICE" in
0)
# Do nothing.
echo "(Swap partitions disabled)"
;;
*)
# Start up swapping.
echo "Activating swap partitions"
swapon -a
esac
那么你就可以在使用交流电源时开启 swap 磁区,而使用电池是就会关闭言 这功能。
我使用我的笔记电脑来发展、测试给网站使用的 cgi 命令手稿, 这也就是 为什么我在它上面架了个区域网站的原因。如果你最想做的只是有时候用来 测试一个命令手稿或是检查某个网页而已,那么标准的建构似乎是太多了。
在 httpd.conf
里,只要把 MinSpareServers
以及
StartServers
的值改成 1
。 这对本地端的测试站已经很够了。
如果你想关闭网站伺服器的签入,你必须重新编译 httpd
精灵,细节
请阅读文件。
Grant Taylor 重新编译了 apache 的签入后发觉这样子 `` 并不会让它停
止 churning 磁盘。 所以我使用另一个, IMHO 比较好的解决方法: 我把
apache 建构成从 inetd 来执行取代原本由自己来。 '' 细节请阅读
man inetd
。
为笔记电脑建构 XFree86 是另一个话题了, 再次,我必须请你参考 Linux 笔记电脑网页,在那儿你可以找到很多的协助
X 的控制台在空白时只会把萤幕变成黑色, 但并不是把它关掉。 就如同在
备注关于控制台变成空白 中提到的,你可以使用 xset
的 dpms 选项来改变它。然而,这项
功能得看你的笔记电脑的绘图蕊片以及 bios 了.
Grant Taylor 使用以下的设定以及 apmd
和萤幕保护程序的协助来传
送使他的笔记电脑进入睡眠状态。
# Run xscreensaver with APM program
xscreensaver -timeout 5 \
-xrm xscreensaver.programs:apm_standby \
-xrm xscreensaver.colorPrograms:apm_standby &
这个 ``apm_standby
是个只允许特定人士来执行 apm -S
的
suid perl 手稿。''
好的, emacs
并非不是个编辑器, 但是个生活方式。 以下是由
Florent Chabaud 提供的密诀: `` 如果你使用 emacs
,也许你已发现
到这个编辑器会做自动存档的动作, 当然这很有用而且也 不该 把
它关掉,但原本内定的参数可以被修改来针对笔记电脑的使用。
我在 /usr/share/emacs/site-lisp/site-start.el
文档内加入
了下列几行:
(setq auto-save-interval 2500)
(setq auto-save-timeout nil)
这样可以关闭以时间为基准的自动存档功能,以改以每 2500 次键盘的动作 时自动存档一次。当然,如果你正好在打一扁文件时,最后的那个参数应该 把它减少,如果正在写程序那么它已可满足需求了。因为每一个动作 (上、 下、左、倒退、贴,等等......) 都列入计算, 2500 次按键盘会很快就到 达的。''
如果你的 Linux 系统仍旧会常去存取硬盘, 你可以使用 ps ax
命令
来看看内部到底是怎么了。这会显示出所有正在执行的程序与它们的名称,
有时候它们会秀出每个处理中的程序之命令列参数。
现在请阅读每个处理中的程序之 man
页来了解它们在做啥么以及如何
改变它的行为。用这个方法,你似乎可以找到大部份的处理中程序所负责的
是什么。你可能会发现 strace
是很有帮助的。
如果你发现有哪些新方法,请你发电子邮件给我。