从crontab运行的java程序的日志结果[权限被拒绝]

时间:2013-02-28 07:23:20

标签: java logging crontab

我想运行从crontab调用的简单java程序。 由于我想知道crontab是否正常运行,我想将结果打印为日志文件。

目前,我不知道crontab是否正确运行我的java程序。

示例Java程序:

public static void main(String[] args) {
    Calendar c = Calendar.getInstance();
    System.out.println("hello" + c.getTime());
}

示例sh:

#!/bin/bash
JAVA_HOME=/usr/java/jre1.6.0_31/
export JAVA_HOME;


for file in /home/vas/servers/tomcat/myTest.jar
do
       CLASSPATH=$file:$CLASSPATH
done
export CLASSPATH

$JAVA_HOME/bin/java myTest

crontab的:

* * * * * /home/vas/servers/tomcat/myTest.sh > /home/vas/servers/tomcat/myTest.log 2>&1

PS:myTest.java,myTest.sh都位于/ home / vas / servers / tomcat /

编辑:包括/在家门口。

=============================================== ==========

现在我可以看到日志文件,但是它说[/ bin / sh:/home/vas/servers/tomcat/myTest.sh:权限被拒绝  ]。

2 个答案:

答案 0 :(得分:3)

以下是覆盖日志文件的方法:

* * * * * /home/vas/servers/tomcat/myTest.sh > home/vas/servers/tomcat/myTest.log

vs 如何将追加添加到日志文件中:

* * * * * /home/vas/servers/tomcat/myTest.sh >> /home/vas/servers/tomcat/myTest.log

(根据您的评论进行编辑)

你可以尝试这样的事情:

chmod 771 /home/vas/servers/tomcat/myTest.sh

然后执行ls -al /home/vas/servers/tomcat/myTest.sh以确保您已正确设置权限。

答案 1 :(得分:0)

在crontab中将>更改为>>,并使用绝对路径来记录日志文件:

* * * * * /home/vas/servers/tomcat/myTest.sh >> /home/vas/servers/tomcat/myTest.log 2>&1

从shell脚本运行Java时,最好还是使用exec

exec $JAVA_HOME/bin/java myTest