0

我使用 Maven appassembler 插件围绕 Java Spring 应用程序“myapp”生成 Linux 包装脚本。

然后我得到以下目录结构:

/home/myapp/platform/bin/myapp       <== Script that I start manually

myapp 脚本具有“-rwxr-xr-x”权限,所有者设置为“myapp:myapp”,脚本设置为以用户“myapp”运行(在构建时从 Maven 设置中设置)。

现在从根我发出以下命令:

$ sudo ln -s /home/myapp/platform/bin/myapp /etc/init.d/service_myapp

它使用“lrwxrwxrwx”权限和“root:root”作为所有者创建一个符号链接,并指向我的 myapp 脚本。我认为这足以让这个脚本在启动时执行。但是它似乎没有运行。如果我像这样手动运行它:

$ cd /etc/init.d/
$ ./service_myapp

然后在执行之前提示我输入密码。

谁能解释这里发生了什么和/或我做错了什么?

我也试过这个:

$ cd /etc/init.d/
$ update-rc.d service_myapp defaults 20

但得到这个:

update-rc.d: warning: /etc/init.d/service_myapp missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/service_myapp ...
   /etc/rc0.d/K20service_myapp -> ../init.d/service_myapp
update-rc.d: symlink: Permission denied
4

1 回答 1

0

系统会提示您输入密码,因为脚本中的某些命令可能需要 root。

另外,运行时您需要是root用户update-rc.d

sudo update-rc.d service_myapp defaults 20

最后,您的脚本必须是 SysV 格式并支持startstoprestartforce-reloadstatus命令。

于 2015-03-17T16:02:06.327 回答