服务启动和权限被拒绝

服务启动和权限被拒绝

我有一个执行java程序的脚本,我想创建一个服务来在启动时启动该脚本。

所以我创建了一个名为 run.sh 的脚本。

/测试/运行.sh

#!/bin/bash
java -cp myjar:/test/lib/* com.xxxx.util.AmazonS3FileDownloader

我还创建了一个名为的test文件/etc/init.d

/etc/init.d/测试

#!/bin/bash
/test/run.sh

出于测试目的,我授予测试文件夹/test所有权限(chmod 777 /test)。

drwxrwxrwx    7 testuser testuser  4096 Dec 12 13:28 test

这就是/etc/ini.d文件夹内的内容

-rwxr-xr-x  1 root root  2062 Dec 12 13:18 test

如果我运行这个命令。一切安好。没有错误,程序运行正常。

$ /test/run.sh

但出于某种原因,如果我尝试做同样的事情但使用该服务,我会忽略。它不起作用。

$ service test start

receipts_download.log创建in文件夹时我的权限被拒绝/test

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: receipts_download.log (Permission denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:142)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:133)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:689)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:544)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:440)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:476)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)
    at org.apache.log4j.Logger.getLogger(Logger.java:118)
    at com.xxxxx.util.AmazonS3FileDownloader.<init>(Unknown Source)
    at com.xxxxx.util.AmazonS3FileDownloader.main(Unknown Source)

/test拥有所有权限以及为什么我可以$ /test/run.sh毫无问题地运行但不能$ service test start

感谢您的帮助。

答案1

看起来脚本正在创建“receipts_download.log”文件,cwdcwd运行脚本时却没有创建“receipts_download.log”文件/test。请cd /test在运行脚本之前,它会正常运行。

答案2

差异很可能在于环境变量和当前工作目录。从干净的环境service开始脚本。/因此,您可能需要检查您的环境和当前工作目录(借助exportpwdset命令)并将缺少的先决条件添加到脚本中。

相关内容