我想将一个参数传递给我正在启动的服务。例如,以调试模式启动服务器。例如,
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
还有其他一些选项。
您的脚本应至少支持start
和stop
。但您也可以实现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
我会在检查特定系统文件是否存在之后,从中获取附加参数,如上所述。
我不喜欢在服务启动时添加任何附加选项。