在服务脚本中使用环境变量

莫汉·拉吉

我在服务脚本中使用环境变量时遇到问题。

在我的服务脚本中,我使用了一个环境变量,即 INSTALL_DIR,其值在不同系统上可能会有所不同。我必须从 $INSTALL_DIR 获取安装目录,然后我必须启动该服务。当我运行服务脚本时,环境变量根本没有来源。

是否可以从 INSTALL_DIR 环境变量中获取安装目录。我能想到的另一个选择是使用 INSTALL_DIR 环境变量动态创建服务脚本。

echo "INSTALL DIR: ${INSTALL_DIR}"
name=`basename $0`
pid_file="/var/run/$name.pid"
get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

Start()
{
    echo "Starting Application"

    if is_running; then
        echo "[`get_pid`] Already Started"
    else
        if [ -z "$user" ]; then
            nohup $INSTALL_DIR/bin/application 2>&1 &
        else
            nohup sudo -u "$user" $cmd 1> $INSTALL_DIR/bin/application 2>&1 &
        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see logs"
            exit 1
        fi
        echo "[`get_pid`] Started"
    fi
}

我正在尝试使用以下命令运行应用程序

service application start
詹姆斯·K·洛登

在我的服务脚本中......我必须从 $INSTALL_DIR 获取安装目录,然后我必须启动服务。

您的问题实际上与 shell 脚本无关,而是与系统启动有关。不幸的是,这个过程因 Linux 发行版而异,并且往往没有很好的记录。

例如,man service说,service 在尽可能可预测的环境中运行 System V init 脚本或 upstart 作业,删除大多数环境变量并将当前工作目录设置为 /。,但男人暴发户说:

$ man -k upstart
upstart: nothing appropriate.

不仅如此,服务手册页还专门列出了脚本将开始使用的环境变量。不用说,你的不在其中。

参数化启动脚本的传统方法是将信息放在一个已知文件中,通常在 中/etc,并在脚本中引用该文件。在您的情况下,您可以执行以下操作:

INSTALL_DIR=$(cat /etc/my-install-dir.cfg)

然后相应地进行。

可能有一些方法可以强制您的初创公司支持其他环境变量。但是,迟早,您需要的信息必须存储在文件系统的某处。在我看来,最简单的方法是保留一个文件名来保存该信息,然后直接读取该文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Perl脚本中使用Bash环境变量?

来自分类Dev

在Jenkins的Bash脚本中使用环境变量

来自分类Dev

在跨平台的npm脚本中使用环境变量

来自分类Dev

如何在Robot框架脚本中使用环境变量

来自分类Dev

关于SH脚本中使用环境变量的快速问题

来自分类Dev

是否可以在linqpad脚本的引用中使用环境变量?

来自分类Dev

是否可以在Orbeon服务URL中使用环境变量?

来自分类Dev

如何在无服务器脚本中使用gitlab CI / CD中受保护的环境变量?

来自分类Dev

使用脚本jquery获取环境变量

来自分类Dev

Dockerfile 使用脚本设置环境变量

来自分类Dev

在SOAPUI脚本断言中的groovy脚本中使用环境变量

来自分类Dev

使用环境变量配置 Systemd 服务

来自分类Dev

在Dockerfile中使用环境变量

来自分类Dev

在talend的contextconfig中使用环境变量

来自分类Dev

在文件路径中使用环境变量

来自分类Dev

Supervisord在命令中使用环境变量

来自分类Dev

在VSCode中使用环境变量

来自分类Dev

无法在xargs中使用环境变量

来自分类Dev

无法在 Strapi 中使用环境变量

来自分类Dev

在Boost Filesystem中使用环境变量

来自分类Dev

在Rakefile中使用环境变量的serverspec

来自分类Dev

在 Spring Boot 中使用环境变量

来自分类Dev

在 cloudformation 模板中使用环境变量

来自分类Dev

使用SSH将本地环境变量传递给Windows服务器上的Python脚本

来自分类Dev

我可以在脚本的PBS指令中使用PBS环境变量吗?

来自分类Dev

在C中使用popen执行的Shell脚本中不可见环境变量

来自分类Dev

试图在.cmd脚本中使用环境变量,得到消息“ \ Windows目前是意外情况”

来自分类Dev

如何在Passenger-docker容器的启动脚本中使用环境变量

来自分类Dev

如何在Docker构建过程中使用环境变量来获取脚本?

Related 相关文章

  1. 1

    在Perl脚本中使用Bash环境变量?

  2. 2

    在Jenkins的Bash脚本中使用环境变量

  3. 3

    在跨平台的npm脚本中使用环境变量

  4. 4

    如何在Robot框架脚本中使用环境变量

  5. 5

    关于SH脚本中使用环境变量的快速问题

  6. 6

    是否可以在linqpad脚本的引用中使用环境变量?

  7. 7

    是否可以在Orbeon服务URL中使用环境变量?

  8. 8

    如何在无服务器脚本中使用gitlab CI / CD中受保护的环境变量?

  9. 9

    使用脚本jquery获取环境变量

  10. 10

    Dockerfile 使用脚本设置环境变量

  11. 11

    在SOAPUI脚本断言中的groovy脚本中使用环境变量

  12. 12

    使用环境变量配置 Systemd 服务

  13. 13

    在Dockerfile中使用环境变量

  14. 14

    在talend的contextconfig中使用环境变量

  15. 15

    在文件路径中使用环境变量

  16. 16

    Supervisord在命令中使用环境变量

  17. 17

    在VSCode中使用环境变量

  18. 18

    无法在xargs中使用环境变量

  19. 19

    无法在 Strapi 中使用环境变量

  20. 20

    在Boost Filesystem中使用环境变量

  21. 21

    在Rakefile中使用环境变量的serverspec

  22. 22

    在 Spring Boot 中使用环境变量

  23. 23

    在 cloudformation 模板中使用环境变量

  24. 24

    使用SSH将本地环境变量传递给Windows服务器上的Python脚本

  25. 25

    我可以在脚本的PBS指令中使用PBS环境变量吗?

  26. 26

    在C中使用popen执行的Shell脚本中不可见环境变量

  27. 27

    试图在.cmd脚本中使用环境变量,得到消息“ \ Windows目前是意外情况”

  28. 28

    如何在Passenger-docker容器的启动脚本中使用环境变量

  29. 29

    如何在Docker构建过程中使用环境变量来获取脚本?

热门标签

归档