読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

起動時にシェルスクリプトを実行したいとき

Tips
基本的に使うフォルダは /etc/init.d/ ここに適当な名前でシェルスクリプトを作る。 今回はサスペンドから復帰するときUSB入力を認識してくれなかったのでその設定を $ cat /proc/acpi/wakeup で見れるけど、USB系が disable状態。 Device S-state Status Sysfs node PS2K S3 disabled pnp:00:03 PS2M S3 disabled pnp:00:04 BR20 S3 disabled P0P1 S4 disabled P0P2 S4 disabled P0P3 S4 disabled P0P4 S4 disabled PEX0 S4 disabled pci:0000:00:1c.0 PEX1 S4 disabled pci:0000:00:1c.1 PEX2 S4 disabled PEX3 S4 disabled PEX4 S4 disabled PEX5 S4 disabled PEX6 S4 disabled PEX7 S4 disabled EUSB S3 enabled pci:0000:00:1d.0 USBE S3 enabled pci:0000:00:1a.0 PWRB S3 *enabled ※どの部品(USBとか)がどれに対応しているかは $ lspci で確認できます。 さて、これをenabledにするには $ echo "USBE" > /proc/acpi/wakeup とすればいいんだけど(実際この状態ではキーボード入力でサスペンドから復帰した)、実はこれ再起動すると元のdisabledに戻ってしまう。そこで起動時のスクリプトで変更してやる必要がでたわけです。 ではやり方ですが。 最初に言ったように、まずは /etc/init.d/ に移動。ここに適当な名前でシェルスクリプトを作る。 今回は wake.sh とします。次に中身は #!/bin/bash echo "USBE" > /proc/acpi/wakeup という感じ。さっきの入力のまんまです。 保存後はちょっと設定をいじります。まずは $ sudo update-rc.d wake.sh defaults で、設定の更新をしたことを有効にして、次にwake.shの実行権限がまだないので $ sudo chmod +x wake.sh これでwake.shに実行権限が有効になります。ちなみにググってみると $ sudo chmod a+x と書く人もいますが、a(ugo)をつけない場合([Who]部分がない場合)、デフォルトでa+xと同じになるようです。 これで再起動後もサスペンド→キーボード入力で復帰できるようになりました。 さぁ次はこれのeth版なんだけど、そもそもノードリストに載ってないのはなぜ?どうしようもないんだけど。 ソース: Wake up using USB Keyboard or mouse? 追記: ふぉあが薦めるこのやり方の方がスマートかも UbuntuなどDebian系ディストリでは /etc/network/interfacesETHTOOL_OPTS="wol g" を追加して、デバイスを再起動すればOK ソース: Wake on LANを設定する【その2】