Centos
服務啟動和權限被拒絕
我有一個執行 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
從/
乾淨的環境開始腳本。因此,您可能需要檢查您的環境和目前工作目錄(在export
、pwd
或set
命令的幫助下)並將缺少的先決條件添加到您的腳本中。