起動時に一連のコマンドが実行されたかどうかを確認するにはどうすればよいですか?

起動時に一連のコマンドが実行されたかどうかを確認するにはどうすればよいですか?

の GUI フロントエンドを作成中ですxrandrが、起動時に実行するコマンドがいくつか必要です。

.desktopに配置されたファイルを使用しています~/.config/autostart

私の設定では動作しないので、これがxrandr機能するかどうかはわかりません。想定どおりに動作していることはわかっていますが、私のシステムがこれをサポートしていないだけです。大量の xrandr エラーが発生します。つまり、起動時にエラーが発生し、目立った変化がないことを意味します。

コマンドが実行されたかどうかを確認する方法はありますか?

答え1

自動開始.desktopファイルがスクリプトの場合は、次の例のようにスクリプトに制御エコーを挿入するだけです。

# if yyou want only data saved for one run

echo "Script has run on $(date)" > ~/script.log

# if you want a continous log output append

if [ -e ~/script-log ]
    then
        echo "Script has run on $(date)" >> ~/script.log
else
        touch ~/script.log
        echo "Script has run on $(date)" >> ~/script.log
fi

この方法では、この方法で制御するために必要な変数データを出力することもできます。スクリプト内のすべてのコマンドの後に最終結果が印刷され、スクリプトが実行されたことを確認するようにしてください。

スクリプト内のコマンドが失敗したかどうかを正確に知りたい場合は、次のようにします。

# do this at start of your script

if [ -e ~/script-error.log ]
    then
        # we do nothing
else
        touch ~/script-error.log
fi

# then within your script (I use as example here cd /root just to demonstrate)
# you can do this with nearly all commands

cd /root 2>> ~/script-error.log

これは、コマンドの 1 つがエラーをスローした場合にのみフェッチされます。もちろん、どこにでも適用できるわけではありませんが、出力がまったくないよりはましです。

配管の説明:

# single piping symbol (overwrite the existing file and creates one if not existant)
>               # pipes all output 
1>              # pipes only success messages
2>              # pipes only error messages

# double piping symbol (append to an existing file and fail if file does not exist)
>>              # pipes all output
1>>             # pipes only success messages
2>>             # pipes only error messages

bash スクリプトについてさらに詳しく知りたい場合は、次の 2 つのリンクを参照してください。

初心者のための Bash ガイド - Machtelt Garrels - 2008
上級 Bash スクリプト ガイド - Mendel Cooper - 2014

関連情報