
Linux起動フラグのパラメータを使用してカスタム起動スクリプトを実行したいと思います。
私は、次のように起動するとフラグがあるかどうかを確認するためにbashスクリプトを実行するシステムサービスを作成すると思います。
#!/bin/bash
CMDLINE="$(cat /proc/cmdline)"
if [[ "$CMDLINE" == *"myflag"* ]]; then
echo "It's there."
fi
もっと良い方法がありますか?
答え1
豪華に飾りたい場合は、「より良い」アプローチを使用することをお勧めします。システム構築者SourcePath=/proc/cmdline
;ジェネレータはカーネル起動パラメータを使用し、そこから続行するように設定できます。
あなたが使用しているシステムユニットに固執してください。単位定義で条件を指定する:
[Unit]
ConditionKernelCommandLine=myflag
systemdの詳細を扱うことなく、スクリプトはすでに作業を行っていますが、よりコンパクトなものが必要な場合は、次のように書き直すことができます。
#!/bin/sh
if grep -qw myflag /proc/cmdline; then
echo "It's there."
fi
でも
#!/bin/sh
grep -qw myflag /proc/cmdline && echo "It's there."
旗が私たちに-q
教えてくれるgrep
いいえ出力一致は、成功または失敗という終了ステータスのみを反映します。この-w
フラグは完全な単語のみが一致することを保証するため、notmyflag
実行されません。