
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
フォルダの作成中に私の権限が拒否されました/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
cwd
スクリプトは "receipts_download.log"ファイルを生成しているようですが、cwd
スクリプトを実行すると生成されません/test
。cd /test
スクリプトを実行する前に正しく実行されます。
答え2
違いは、環境変数と現在の作業ディレクトリにある可能性が高いです。クリーンな環境でservice
スクリプトを起動してください。したがって、環境と現在の作業ディレクトリを確認し(またはコマンド/
を使用して)、欠落している前提条件をスクリプトに追加する必要があるかもしれません。export
pwd
set