スクリプトおよびコマンドを実行する最良の方法一時停止する前(または再開後)にLinuxでサスペンドおよび再開するには、systemd initシステムを使用します。これは、initシステムがカーネルおよび電源システムと直接対話するためです。このツールを使用して学習することで、すべてのユーザーがLinuxオペレーティングシステムを大幅に制御できるようになります。
initをいじることを理解してくださいあなたが何をしているかわからない場合、PCのシステムは危険です。起こりうる事故を避けるために、このチュートリアルの指示に可能な限り厳密に従ってください。
すべての最新のLinuxディストリビューションがサポートするわけではありませんsystemd initシステム。一部では、新興企業などを完全に使用しています。このチュートリアルでは、最も一般的な開始システムであるsystemdに焦点を当てます。この記事で説明していることを実行できないものでこのタスクを実行したい場合は、オペレーティングシステムのマニュアルを参照してください。
注:Debianユーザーは、次のすべてのインスタンスを置き換える必要があります usr / lib / systemd / system-sleep と / lib / systemd / system-sleep /
中断する前にコマンドを実行する

一時停止する前にスクリプトを実行するには、bashスクリプトファイルを / usr / lib / systemd / system-sleep / ディレクトリ。スクリプト自体は何でもできますが、順守する必要がある特定の構文があります。端末ウィンドウを開くことから始めます。 sudo -sを使用して、ルートシェルを取得します。
次に、システムスリープディレクトリ内のnanoテキストエディターを起動します。
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
スクリプトの先頭にシェバンを追加します。これを追加することは重要であり、これがないと、インタープリターはコードとコマンドを正しく読み取ることができません。
#!/bin/bash/
スクリプトの次の部分は「if」です。これにより、システムがサスペンドのために「ダウン」しようとしている場合、何かが起こるはずであることが電力制御システムに通知されます。以下のコードを貼り付けます:
if [ "${1}" == "pre" ]; then sh /path/to/script/to/run.sh
変化する sh /path/to/script/to/run.sh システムがサスペンドのためにダウンする直前に、Linux PC(またはサーバー)で実行したいものにスクリプトで。 「if」の直後の行は、する必要がないことに注意してください sh /path/to/script/to/run.sh。これを使用して、さまざまなコマンドを実行することもできます。 bashがコマンドとして認識できる限り、実行されます。
「中断前」スクリプトの最後の部分は、「else if」部分を追加することです。この例では、何かをすることが心配なので、スクリプトのこの側面を変更する必要はありません。 前 システムはダウンしますが、復帰したときではありません。
elif [ "${1}" == "post" ]; then # nothing goes here fi
すべてがファイルに追加されたら、を押します Ctrl + O ナノを保存します。
再開後にコマンドを実行する

再開後にコマンドを実行すると、次のように機能します中断する前に何かを実行します。唯一の本当の違いは、スクリプトの「if」部分の後にコマンドを追加する代わりに、「elif」行の後にコードの最も重要な部分を発生させることです。
再開後スクリプトを作成するには、最初にシェバンを最初の行として追加します。
#!bin/bash
次の行で、スクリプトの「if」部分を追加します。
if [ "${1}" == "pre" ]; then # nothing goes here
bashスクリプトにそのコードを貼り付けたら、下に移動して「else if」セクションを貼り付けます。
elif [ "${1}" == "post" ]; then sh /path/to/script/to/run.sh fi
繰り返しになりますが、「elif」行の下に何かを書いても構いません。通常のコマンド操作である限り、systemdとbashが実行します。
起動時および再開時にコマンドを実行する

2つの反対のコマンドを実行したい場合; 1一時停止する前、および再開するときに、可能です。スクリプトをカスタマイズし、「if」行と「elseif」行の両方に行を追加するだけです。
いつものように、通訳のスクリプトにシバンを投稿することから始めます。
#!/bin/bash
次に、コードのifセクションを貼り付けます。
if [ "${1}" == "pre" ]; then # replace with command
ifの下で、「#replace with command」を、システムがダウンする直前に実行したいコマンドに置き換えます。次に、「elif」セクションに移動して、同じ操作を行います。
elif [ "${1}" == "post" ]; then # replace with command fi
Ctrl + Oでファイルを保存し、
権限の更新とスクリプトの使用
必要なコマンドはすべてスクリプトファイル内にありますが、実行する前にアクセス許可を更新する必要があります。ターミナルを開き、suまたはsudo -sでルートを取得します。それから:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
これ以降、中断または再開するたびに、スクリプト内のカスタムコマンドが実行されるはずです。
注:systemd system-sleepについて質問がありますか?マニュアルを確認してください man systemd-suspend.service.
コメント