Linux:如何将参数传递给“service foo start”(在命令行)?

Linux:如何将参数传递给“service foo start”(在命令行)?

我想将一个参数传递给我正在启动的服务。例如,以调试模式启动服务器。例如,

service jboss-as start debug

或者类似的东西。但service似乎不支持这一点。

有什么办法吗?(对于 RHEL 6 来说,如果这很重要的话。)

注意:这类似于Ubuntu/Linux:启动脚本(sysvinit)的启动参数通常如何定义?但不一样。

答案1

在 RHEL 中,您有 /etc/sysconfig 文件夹。在这里您可以定义启动参数。在启动脚本中,您可以包含以下内容:

if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

检查现有服务以获取示例。

对于开发,您可以将启动参数放在导出的变量中(例如在 .bashrc 中),您可以随时手动覆盖它。

编辑

如果您确实想使用,service还有其他一些选项。

您的脚本应至少支持startstop。但您也可以实现debug命令。然后使用以下命令启动您的程序:

service foo debug

另一种方法是检查脚本中的第二个参数,然后使用以下命令启动程序:

service foo start debug

将您的初始化脚本修改为类似以下内容:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

答案2

在 Ubuntu 中,启动参数通常位于:

/etc/default/<service_name>

答案3

EnvironmentFile您可以在服务文件中配置:

[Service]
EnvironmentFile=/etc/sysconfig/my-service
ExecStart=my-service.sh ${ARG1} ${ARG2}

/etc/sysconfig/my-service并使用变量创建:

ARG1=first
ARG2=second

答案4

我会在检查特定系统文件是否存在之后,从中获取附加参数,如上所述。

我不喜欢在服务启动时添加任何附加选项。

相关内容