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


11

我想将参数传递给我要启动的服务。例如,以调试模式启动服务器。喜欢,

service jboss-as start debug

这样的。但是service似乎不支持这一点。

有什么办法吗?(如果重要的话,对于RHEL6。)

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


停止,ubuntu不使用sysv,它使用新贵。
PersianGulf

1
在启动脚本中创建另一个案例。示例:start-debug然后您可以运行:/etc/init.d/jboss-as start-debug
Guntis

Answers:


10

在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
        ;;

1
对于导出的环境var,情况似乎并非如此-服务的手册页上说,只有TERM和LANG是传递给脚本的变量。但是,当然,始终可以通过运行/etc/init.d/MyNiftyService start what1 what2来绕过服务……
Alien Life Form

我将求助于Alien的绕过。想把它作为答案吗?
OndraŽižka2013年

5

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

/etc/default/<service_name>

2
是的,但是我不想每次都需要更改时就进行更改。在开发过程中,这种情况经常发生。我需要RHEL6。编辑了问题。
OndraŽižka2013年

0

如上所述,我将在检查系统特定文件的存在之后从其采购其他参数。

我不喜欢在服务启动中添加任何其他选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.