Linux を簡単に省電力設定にする 1) /etc/rc.d/rc.local に下記の行追加 setterm -blank 3 -powersave on -store echo "40 500 0 0 6000 30000 60 20 0" > /proc/sys/vm/bdflush # 1行目は、3 分で Display を省電力にする。 # 2行目は、HDD と Memory のバッファフラッシュ間隔を1分(6000) 5分(3000)に変更 (初期値は500,3000)。詳しくはドキュメントを見てちょ。他の値は最初 more /proc/sys/vm/bdflush で見た値が無難です。 2) /etc/lilo.conf に下記の行追加挿入 append="acpi=off apm=on" # ACPI での省電力は今回はパスしたので、APM モードを宣言。 3) /etc/postfix/master.cf を編集(postfix を常駐利用してる場合) pickup fifo n - n 60 1 pickup # 60秒毎(初期値) ↓ ↓ ↓ ↓ pickup fifo n - n 600 1 pickup # 600秒毎 # 値が大きいほど省電力にはいいが、メールの pickup 間隔が長くなります。 4) /var/spool/cron/root を編集する 30 12 * * * /etc/backup.sh 20 19 * * 6 /etc/mirror.sh 0,30 21-23 * * 1-5 /etc/autosus.sh 0,30 20-23 * * 0,6 /etc/autodown.sh # 1行目:データのバックアップが毎日12時30分に実行されます。 # 2行目:ディスクパーテーションを別ディスクに同期する処理が土曜の19時20分に実行されます。 # 3行目:自動サスペンド処理が毎日21時から23時半まで30分毎に実行されます。 # 4行目:自動電源断が土日の20時から23時半まで30分毎に実行されます。 5) /etc/crontab の実行時間を変更(上記時間とかち合わないように) # run-parts 01 * * * * root run-parts /etc/cron.hourly 45 20 * * * root run-parts /etc/cron.daily 40 19 * * 6 root run-parts /etc/cron.weekly 30 20 1 * * root run-parts /etc/cron.monthly # 日次処理は20時45分。週次処理は土曜の19時40分。月次処理は1日の20時30分に実行されます。 6) /etc/cron.hourly/hdddown 作成し実行属性を与える。755? #!/bin/bash hdparm -S240 /dev/hda > /dev/null hdparm -S120 /dev/hdb > /dev/null # HDD にアクセスが無い場合に休止命令を送る間隔を Main-HDD は20分、Sub-HDD は10分にしてます。 7) /etc/autosus.sh 作成(サスペンド実行シェル)、実行属性 755? #!/bin/bash LOG=smb_access REPORT=smb_report if test -f /data/workgroup/*.ldb; then exit else cd /var/log/samba test -f $LOG && mv $LOG $LOG.old ls -ltr log.tanaka log.suzuki log.yamada log.kimura > $LOG chmod 744 $LOG cp /dev/null $REPORT diff $LOG $LOG.old > $REPORT chmod 744 $REPORT if test -s $REPORT; then exit else /etc/backup.sh /etc/rc.d/init.d/network stop /usr/bin/apm -s fi fi # データベースが MS-Access なのでオープンロックファイルの有無をチェックします。 # /var/log/samba のファイル変更全部をチェックすると、Windows PC が起動するだ # けでもログが書き込まれるので、特定端末のログ変更だけをチェックしてます。 # サスペンドの前に、データバックアップを実行し、ネットワークを STOP させます。 8) /etc/sysconfig/apmd の下記行に"-r /etc/resume.sh"を追加記入 ADDPARAMS="-W -r /etc/resume.sh" 9) /etc/resume.sh を作成(レジューム処理シェル)。実行属性付加 755? #!/bin/bash /etc/rc.d/init.d/network start # ネットワークをスタートさせます。 10) /etc/autodown.sh 作成(電源断実行シェル)、実行属性 755? /etc/autosus.sh とほぼ同じで最後の数行だけ下記のように変更。 else /etc/backup.sh /etc/rc.d/init.d/network stop /sbin/shutdown -h now fi fi 11) /etc/mirror.sh を作成(パーティション同期シェル)。実行属性付加 755? #!/bin/bash mount -t ext3 /dev/hdb3 /mirror/ mount -t ext3 /dev/hdb2 /mirror/boot/ rsync -aux --delete / /mirror rsync -aux --delete /boot/ /mirror/boot umount /mirror/boot umount /mirror 当然 /mirror と /mirror/boot は mkdir して下さいね。 12) shutdown にありがちな間違い 最初シェルスクリプトで shutdown -h +1 とか記入していたら、スクリプト実行時 にシングルユーザモードで止まってしまい何故だろうと検索したら、shutdown コマン ドは2つあり /sbin/shutdown root用 /usr/bin/shutdown 一般ユーザ用(シェルスクリプト・コマンド) シェルスクリプトでパスなしの shutdown は /usr/bin/shutdown を実行し、+time が設定されてるとシングルユーザモードにしてしまうようです。 13) Note PC では(検証中) 手持ちの Junk Note PC (Celeron433) では、2. /etc/lilo.conf の訂正後 apmd 常駐で起動するだけで、一般ユーザでも液晶画面の開け閉めだけでサスペンド・ レジュームするようになりました。apmd に渡すパラメータをいじってサスペンド でシェルを実行させればさらにお手軽そうですね。 なんか、シェルスクリプトは html だと見づらいですね。html の込み入った文法を 知らないからですが。 本ページのプレーンテキストもリンクしておきます。 なおサスペンドからの復帰はPCによってキーボードから復帰できるのと、電源ボ タンを押して復帰するのとがあり、まあえええわと放置しております。((^^;; 更新記録 ... ... 2004/5/28 crontab の時間に 24 を使用し規定外の数値と判明で訂正 2004/5/27 作成