我使用 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 格式,并支持 start
、stop
、restart
、force-reload
和 status
命令。
关于linux - 设置脚本在 Linux 启动时自动启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103513/