在 Debian 中创建一个提供 bash 启动脚本的服务

在 Debian 中创建一个提供 bash 启动脚本的服务

服务器运行的是 Debian 7 Wheezy,没有 systemd。

我有一个 Debian 用户,其主目录中安装了 Perlbrew。用户正在运行 Mojolicious 应用程序。为了使应用程序正常工作,必须加载 Perlbrew bashrc 文件。目前,用户登录并使用 运行他们的应用程序hypnotoad app,这会启动守护进程。我试图将应用程序以及与其相关的所有内容都隔离到用户的主目录,并且我真的不想弄乱系统 Perl。但是,我希望他们的应用程序作为服务运行,在启动时启动等等,但我不确定在以用户身份运行服务时如何在 Perlbrew bashrc 中获取资源。

简而言之,我的问题在标题中得到了总结,但基本上我想知道如何在 bashrc 文件中获取服务的源代码。

答案1

你尝试过吗su <user> -l -c <cmd>
这些rc脚本以 root 用户 (id=0) 的身份执行,因此,作为 root,您可以使用系统中定义的任何用户的权限生成一个进程。

例如 :

su root -l -c "ls /tmp"

在哪里 :

  • -c :执行命令。
  • -l :以指定用户身份登录。

答案2

当然,您不应该将用户的 .bashrc 导入到在系统启动时以 root 身份运行的脚本中。两个建议:

编写一个脚本来启动该服务(假设是 mystart.sh)。该脚本可以获取 .bashrc,然后启动应用程序:

#!/usr/bin/bash
. .bashrc
hypnotoad app

要在启动时运行该脚本,我建议使用用户的 crontab。让用户放置

@reboot mystart.sh

在他们的 crontab 中。这样它就以用户身份运行,并且将来是否要禁用或替换它取决于他们。

相关内容