コンピューターが(スリープ状態から)「起動」するときにスクリプトを実行する方法はありますか?もちろん、起動時に実行できることはわかっていますが、この場合の問題は、ラップトップのスリープからスリープが解除されるたびにバックライトがリセットされるように見えることです。毎回手動で入力する代わりに、妥当なレベルまで下げます。
pm-utilsは、スリープ/レジュームで実行する一連のスクリプトを提供します。そこにスクリプトを追加できますが、ねじ込むと再開が中断される可能性があるため注意が必要です。 /usr/lib/pm-utils/sleep.d
を見てください。これがスクリプトの場所です。95led
というスクリプトは非常にシンプルで、最初から始めるのに適したモデルです。
95ledはhibernate/suspendおよびthaw/resumeのケースを提供します。再開のみが必要な場合は、次のようにスクリプトを記述します。
#!/bin/sh
case "$1" in
resume)
echo "hey I just got resumed!"
run_some_command
esac
スクリプトはおそらく最後に実行されるはずなので、ディレクトリの最後に表示されることを確認してください。99ZZZ_myscriptなどの名前を付けてください。繰り返しますが、ここで何をしているのかわからない場合、私はそれを台無しにしません。中断/再開が中断される場合があります。その場合は、スクリプトを削除するか修正することができますが、ハードパワーサイクルを実行してシステムを復旧する必要があります。
より簡単な方法もあるかもしれませんが、この方法が機能することは知っています。
15.04 Vividでは、スクリプトを次の場所に配置する必要があります。
/lib/systemd/system-sleep/
Arch wikiのスクリプトに基づくサンプルスクリプト( systemd sleep Hooks ):
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
;;
esac
スクリプトを実行可能にすることを忘れないでください!
Sudo chmod a+x /lib/systemd/system-sleep/your-script
詳細については、man systemd-sleep
を参照してください。
スクリプトはrootとして実行されるため、Sudo
は必要ありません。
注:件名のArch wikiリンク( systemd sleep hooks )は、スクリプトを/usr/lib/systemd/system-sleep/
に配置するように(15.04に対して誤って)記載していますが、これはUbuntu 15.04では機能しません。 15.04を実行している場合は、/lib/systemd/system-sleep/
にスクリプトを配置します。
私はコメントを書くのに十分な評判を持っていないので、Lindh-Eの答えを追加する際にmfischのソリューションを書き直します。
解決策:
pm-utilsは、スリープ/レジュームで実行される一連のスクリプトを提供します。
必要なのは:
警告:
ねじ込むと履歴書が壊れる可能性があるため、注意が必要です。システムがクラッシュまたはフリーズした場合、スクリプトを削除したり修正したりできますが、ハードパワーサイクルを実行してシステムを復旧する必要があります。
例:
/usr/lib/pm-utils/sleep.dにある既存のscriptiを確認します。 95ledと呼ばれるスクリプトは非常にシンプルであり、最初から良いモデルになるでしょう。 95ledはhibernate/suspendおよびthaw/resumeのケースを提供します。再開のみが必要な場合は、次のようにスクリプトを記述します。
#!/bin/sh
case "$1" in
resume)
echo "hey I just got resumed!"
run_some_command
esac
これは実際には独立した独立した答えではありませんが、(評判の制限のために)コメントできないため、mfischの答えに重要な補足を追加したいと思います。
HOME
およびPATH
(およびおそらく他の環境変数)は、通常のシェル環境とはおそらく異なることに注意してください。私はmfischのソリューションに問題があり、再開時に実行する必要のあるスクリプトでは機能していないように見えましたが、HOME
がユーザーディレクトリに設定されることを期待していたため、それは私のスクリプトに誤りがあることが判明しました(私は私のシステム上の単一のユーザー)およびPATH
が/usr/local/bin
を含むようにし、再開の時点では、どちらも保証されません(HOME
の場合、おそらくお勧めできません)。そのため、これらのenv-varに依存しないようにスクリプト/プログラムを調整する必要があるかもしれません...