如果 Linux 的启动参数中存在启动参数,运行自定义脚本的最佳方法是什么?

如果 Linux 的启动参数中存在启动参数,运行自定义脚本的最佳方法是什么?

我想运行 Linux 启动标志上存在的参数的自定义启动脚本。

我想我只是创建一个 systemd 服务来运行一个 bash 脚本来检查启动时使用以下方法检查标志是否存在:

#!/bin/bash
CMDLINE="$(cat /proc/cmdline)"

if [[ "$CMDLINE" == *"myflag"* ]]; then
  echo "It's there."
fi

有没有更好的办法?

答案1

如果你想变得更花哨,一个“更好”的方法可能是使用一个系统生成器;您可以进行设置SourcePath=/proc/cmdline,以便您的生成器使用内核启动参数并从那里继续。

坚持使用 systemd 单位,因为这就是你正在使用的单位,你可以在单位定义中指定条件

[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不会触发。

相关内容