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 の込み入った文法を知らないからですが。
本ページのプレーンテキストもリンクしておきます。プレーンテキストは Mozilla と w3m と Opera ではちゃんと見えるけど、IE では改行が無視されます。面倒なので直しません。

 なおサスペンドからの復帰はPCによってキーボードから復帰できるのと、電源ボタンを押して復帰するのとがあり、まあえええわと放置しております。((^^;;