休止状態で実行されていないときのカスタムコマンド

休止状態で実行されていないときのカスタムコマンド

Debian Busterがスリープモードに入る前に、カスタムコマンドを実行する必要があります。これ文書スクリプトを /etc/pm/sleep.d ディレクトリに配置することを示します。次のスクリプトを作成します。

#!/bin/sh

echo "`date` script started" >> scriptStarted.txt

case "$1" in
        hibernate|suspend)
                /home/<user-name>/scripts/killProcess.sh

                ;;
        thaw|resume)
                ;;
        *) exit $NA
                ;;
esac

問題は、スクリプトが実行されないことです。

/usr/lib/pm-utils/sleep.d/ディレクトリも試しましたが、問題は同じです。

ベストアンサー1

問題は、Debian Busterがpmではなくsystemdを使用していることです。

スクリプトを /lib/systemd/system-sleep に入れると、システムがハングする前に実行されます。

#!/bin/sh 

PATH=/sbin:/usr/sbin:/bin:/usr/bin 

case "$1" in 
   pre) 
           echo "`date` pre suspending executed" >> /home/<user-name>/scripts/execution.log
           #code execution BEFORE sleeping/hibernating/suspending 
   ;; 
   post) 
           #code execution AFTER resuming 
   ;; 
esac 

exit 0

ただし、休止状態では、このソリューションはまだ機能しません。システムが休止状態の場合、このスクリプトは実行されません。

最後に、カスタマイズされたサービスを作成しました。 my-hibernate.serviceファイルを/usr/lib/systemd/systemに配置しました。

[Unit] 
Description=Some description 
Before=hibernate.target 
StopWhenUnneeded=yes 

[Service] 
Type=oneshot 
RemainAfterExit=yes 
ExecStart=/home/<user-name>/scripts/my-script.sh 

[Install] 
WantedBy=hibernate.target

次にサービスを有効にしました。

sudo systemctl enable my-hibernate.service

この手順を完了すると、休止状態の前にカスタムスクリプトが実行されます。

おすすめ記事