서비스 시작 및 권한 거부됨

서비스 시작 및 권한 거부됨

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스크립트를 시작하십시오 . 따라서 환경과 현재 작업 디렉터리를 확인하고( 또는 명령 /을 사용하여 ) 누락된 필수 구성 요소를 스크립트에 추가 해야 할 수도 있습니다 .exportpwdset

관련 정보