Centos

服務啟動和權限被拒絕

  • December 12, 2014

我有一個執行 java 程序的腳本,我想創建一個服務來在啟動時啟動這個腳本。

所以我創建了一個名為 run.sh 的腳本。

/test/run.sh

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

test我還創建了一個名為/etc/init.d

/etc/init.d/test

#!/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

謝謝你的幫助。

看起來腳本正在創建“receipts_download.log”文件,cwd而您cwd在執行腳本時不是/test。請cd /test在執行腳本之前,它會好起來的。

差異很可能在環境變數和目前工作目錄中。service/乾淨的環境開始腳本。因此,您可能需要檢查您的環境和目前工作目錄(在exportpwdset命令的幫助下)並將缺少的先決條件添加到您的腳本中。

引用自:https://unix.stackexchange.com/questions/173939