Início do serviço e Permissão negada

0

Eu tenho um script que executa um programa java e quero criar um serviço para iniciar esse script no momento da inicialização.

Então, criei um script chamado run.sh.

/test/run.sh

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

Eu também criei um arquivo chamado test in /etc/init.d

/etc/init.d/test

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

Para fins de teste, forneci à pasta de teste /test all rights (chmod 777 / test).

drwxrwxrwx    7 testuser testuser  4096 Dec 12 13:28 test

E é isso que dentro da pasta /etc/ini.d

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

Se eu executar este comando. Tudo está bem. Nenhum erro, o programa está funcionando bem.

$ /test/run.sh

mas por uma razão eu ignoro se eu tentar fazer a mesma coisa, mas usando o serviço. Não funciona.

$ service test start

Eu obtive permissão negada ao criar a pasta 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 tem todas as permissões e por que posso executar $ /test/run.sh sem problemas, mas não $ service test start

Obrigado pela sua ajuda.

    
por TheEwook 12.12.2014 / 14:57

2 respostas

1

Parece que o script está criando o arquivo 'receipts_download.log' em cwd e seu cwd quando a execução do script não é /test . Por favor, cd /test antes de executar o script e tudo correrá bem.

    
por 12.12.2014 / 15:58
1

A diferença é mais provável em variáveis de ambiente e no diretório de trabalho atual. service inicia o script a partir de / e com o ambiente limpo. Portanto, talvez seja necessário examinar seu ambiente e o diretório de trabalho atual (com a ajuda dos comandos export , pwd ou set ) e adicionar pré-requisitos ausentes ao seu script.

    
por 12.12.2014 / 15:32