linux - 设置脚本在 Linux 启动时自动启动

标签 linux maven appassembler

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

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

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

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

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

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

它创建一个具有“lrwxrwxrwx”权限和“root:root”作为所有者的符号链接(symbolic link),并指向我的 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

最佳答案

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

此外,运行 update-rc.d 时您需要是 root:

sudo update-rc.d service_myapp defaults 20

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

关于linux - 设置脚本在 Linux 启动时自动启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103513/

相关文章:

c - 对在 C 中实现类似 LS 命令功能的代码进行故障排除

c - 为什么 Linux 不能防止产生无限数量的进程和崩溃?

c++ - cmake:不需要时添加 C++ 标准

linux - 更改 dicom 图像的窗口宽度和窗口级别

java - Maven:缺少项目构建错误 'modelVersion'

maven - 如何阻止maven尝试访问http ://repo. maven.apache.org?

java - Maven Appassembler 插件 - stdout 和/或 stderr 重定向

java - 在多模块项目上构建一个 "light"jar

linux - appassembler maven 插件未对生成的脚本设置 "execute"权限

java - 在 shell 启动时将消息打印到 spring shell